PHP Code:
//@version=6
indicator("SÝSTEM: 6'LI DÜÐÜM (Nükleer Sýkýþma)", overlay=false)
// ==========================================
// 1. HAM VERÝLER (6 ÇÝZGÝ)
// ==========================================
s1 = ta.sar(0.08, 0.05, 0.2)
s2 = ta.sar(0.01, 0.05, 0.2)
s3 = ta.sar(0.04, 0.04, 0.2)
f_mirror(_sar, _len) =>
float _delta = math.abs(close - _sar)
float _raw = close > _sar ? close + _delta : close - _delta
ta.linreg(_raw, _len, 0)
m1 = f_mirror(s1, 9)
m2 = f_mirror(s2, 21)
m3 = f_mirror(s3, 55)
// ==========================================
// 2. DÜÐÜM MATEMATÝÐÝ (SPREAD ANALÝZÝ)
// ==========================================
// 6 çizginin oluþturduðu kanalýn geniþliðini buluyoruz.
float en_tepe = math.max(s1, s2, s3, m1, m2, m3)
float en_dip = math.min(s1, s2, s3, m1, m2, m3)
float spread = en_tepe - en_dip // Kanal Geniþliði (TL/Dolar cinsinden)
// Bu geniþliði "normalize" etmemiz lazým.
// Yani: "Þu anki geniþlik, son 100 barýn en dar hali mi?"
int periyot = 100
float max_spread_hist = ta.highest(spread, periyot)
float min_spread_hist = ta.lowest(spread, periyot)
// ==========================================
// 3. NÜKLEER SKOR (0 - 100)
// ==========================================
// Skor 100 ise: Tarihin en dar sýkýþmasý (Tam Düðüm)
// Skor 0 ise: Tarihin en geniþ hali (Saçýlma)
// Formülü ters çeviriyoruz ki 100 = SIKIÞMA olsun.
float knot_score = 0.0
float range_diff = max_spread_hist - min_spread_hist
if range_diff != 0
// (Mevcut - Min) / (Max - Min) bize 0-1 arasý geniþlik verir.
// Biz darlýðý (sýkýþmayý) aradýðýmýz için "1 - ..." yapýyoruz.
knot_score := (1 - ((spread - min_spread_hist) / range_diff)) * 100
// Gürültüyü al (WMA)
float smooth_knot = ta.wma(knot_score, 5)
// ==========================================
// 4. SÝNYAL MANTIÐI
// ==========================================
// Eþik Deðerler
int limit_nukleer = 90 // %90 ve üzeri sýkýþma (Kýrmýzý Alarm)
int limit_patlama = 85 // Sýkýþmadan çýkýþ aný
// SIKIÞMA (Hazýrlýk Evresi)
bool is_squeezing = smooth_knot > limit_nukleer
// PATLAMA (Ateþleme Evresi)
// Skor daha önce 90'ý geçmiþti, þimdi 85'in altýna düþüyor (Bant açýlýyor).
bool is_exploding = smooth_knot[1] > limit_nukleer and smooth_knot < limit_nukleer
// YÖN TAYÝNÝ (Patlama nereye?)
// Fiyat, Düðümün (Ortalamanýn) üstünde mi altýnda mý?
float dugum_merkezi = (en_tepe + en_dip) / 2
bool yon_yukari = close > dugum_merkezi
bool yon_asagi = close < dugum_merkezi
// ==========================================
// 5. GÖRSELLEÞTÝRME
// ==========================================
// Arka plan çizgileri
hline(90, "Nükleer Sýnýr", color=color.red, linestyle=hline.style_dashed)
hline(50, "Normal", color=color.gray, linestyle=hline.style_dotted)
// Skor Çizgisi
// 90 üstü (Nükleer) ise Kýrmýzý, Normal ise Gri
color col_line = smooth_knot > limit_nukleer ? color.red : (smooth_knot > 50 ? color.orange : color.gray)
plot(smooth_knot, "Düðüm Skoru", color=col_line, linewidth=2)
// Alan Boyama (Nükleer Bölge)
// Sadece 90 üstünü boya
plot(smooth_knot > limit_nukleer ? smooth_knot : na, "Nükleer Alan", color=color.new(color.red, 50), style=plot.style_area, offset=0)
// Sinyaller
// Patlama anýnda Yön Oklarý
plotshape(is_exploding and yon_yukari, "YUKARI PATLAMA", shape.triangleup, location.bottom, color=color.lime, size=size.small, text="PATLAMA\n(AL)")
plotshape(is_exploding and yon_asagi, "AÞAÐI PATLAMA", shape.triangledown, location.bottom, color=color.maroon, size=size.small, text="PATLAMA\n(SAT)")
// ==========================================
// 6. DASHBOARD (SABÝT WIDGET)
// ==========================================
var table panel = table.new(position.middle_right, 2, 4, bgcolor=color.new(color.black, 40), frame_color=color.gray, border_width=1)
if barstate.islast
// Durum Analizi
string durum_txt = "NORMAL"
color durum_col = color.gray
if smooth_knot >= 95
durum_txt := "KRÝTÝK! (%95+)"
durum_col := color.red // Yanýp sönen kýrmýzý etkisi
else if smooth_knot >= 90
durum_txt := "NÜKLEER SIKIÞMA"
durum_col := color.orange
else if is_exploding
durum_txt := "PATLAMA BAÞLADI"
durum_col := yon_yukari ? color.lime : color.maroon
else if smooth_knot < 20
durum_txt := "DAÐINIK (Trend)"
durum_col := color.blue
// Baþlýk
table.cell(panel, 0, 0, "6'LI DÜÐÜM", text_color=color.white, bgcolor=color.new(color.gray, 20), text_size=size.small)
table.merge_cells(panel, 0, 0, 1, 0)
// Sýkýþma Puaný
table.cell(panel, 0, 1, "SIKIÞMA PUANI", text_color=color.white, text_size=size.small, text_halign=text.align_left)
table.cell(panel, 1, 1, str.tostring(math.round(smooth_knot)) + " / 100", text_color=durum_col, text_size=size.small, text_halign=text.align_right)
// Düðüm Geniþliði
table.cell(panel, 0, 2, "BANT ARALIÐI", text_color=color.gray, text_size=size.small, text_halign=text.align_left)
table.cell(panel, 1, 2, str.tostring(spread, format.mintick), text_color=color.white, text_size=size.small, text_halign=text.align_right)
// Tahmini Yön (Sadece Sýkýþma Varsa Göster)
string yon_txt = "BELÝRSÝZ"
color yon_col = color.gray
if smooth_knot > 80
yon_txt := yon_yukari ? "YUKARI ?" : "AÞAÐI ?"
yon_col := yon_yukari ? color.green : color.red
table.cell(panel, 0, 3, "TAHMÝNÝ YÖN", text_color=color.white, text_size=size.small, text_halign=text.align_left)
table.cell(panel, 1, 3, yon_txt, text_color=yon_col, text_size=size.small, text_halign=text.align_right)
Yer Ýmleri