PHP Code:
// © Kinetik Komuta Merkezi - KKM V11 MATRIX ULTIMATE (OTE + DBHF + Anomali + LRB Likidite Avύ)
//@version=6
indicator("Karargah V11 Matrix Ultimate", overlay=true, max_lines_count=500, max_boxes_count=500, max_labels_count=500, max_bars_back=500)
// ═════════════════════════════════════════════════════════════════════════
// 1. ΗEKέRDEK FONKSέYONLAR
// ═════════════════════════════════════════════════════════════════════════
f_ozel_sar_ep(src_h, src_l, _start, _inc, _max) =>
var int trend = 0, var float sar_val = 0.0, var float ep = 0.0, var float af = 0.0
if trend == 0 and not na(src_h[1])
trend := src_h >= src_h[1] or src_l >= src_l[1] ? 1 : -1
sar_val := trend > 0 ? src_l[1] : src_h[1], ep := trend > 0 ? src_h[1] : src_l[1], af := _start
else
float nextsar = sar_val
if trend > 0
if src_h[1] > ep
ep := src_h[1], af := math.min(_max, af + _inc)
nextsar := sar_val + af * (ep - sar_val)
nextsar := math.min(math.min(src_l[1], src_l[2]), nextsar)
if nextsar > src_l
trend := -1, nextsar := ep, ep := src_l, af := _start
else
if src_l[1] < ep
ep := src_l[1], af := math.min(_max, af + _inc)
nextsar := sar_val + af * (ep - sar_val)
nextsar := math.max(math.max(src_h[1], src_h[2]), nextsar)
if nextsar < src_h
trend := 1, nextsar := ep, ep := src_h, af := _start
sar_val := nextsar
[sar_val, trend, ep]
f_adaptif_ema(src, dyn_len) =>
var float ema_val = na
float alpha = 2.0 / (dyn_len + 1.0)
ema_val := na(ema_val[1]) ? src : (alpha * src) + ((1.0 - alpha) * nz(ema_val[1]))
ema_val
f_dbhf_sniper(src, atrLen, atrMult, enterMult, exitMult, response) =>
var float dbhf = na
if na(dbhf)
dbhf := src
float baseTau = ta.atr(atrLen) * atrMult
float em = math.max(enterMult, 0.0001), xm = math.min(exitMult, em)
float tauEnter = baseTau * em, tauExit = baseTau * xm
float diff = src - dbhf
if diff > tauEnter
dbhf += response * (diff - tauEnter)
else if diff < -tauEnter
dbhf += response * (diff + tauEnter)
int trend = 0
if dbhf > nz(dbhf[1], dbhf)
trend := 1
else if dbhf < nz(dbhf[1], dbhf)
trend := -1
else
trend := nz(trend[1], 0)
[dbhf, trend]
// ═════════════════════════════════════════════════════════════════════════
// 2. LέKέDέTE AVI (LRB BANTLARI - YENέ EKLENDέ)
// ═════════════════════════════════════════════════════════════════════════
// Komutanύn getirdiπi kod V6'ya ηevrildi.
float lrb_decay = 0.125
int lrb_smooth = 4
var float lrb_hh = na, var float lrb_ll = na
float pre_hh = nz(lrb_hh[1], high)
float pre_ll = nz(lrb_ll[1], low)
lrb_hh := close >= pre_hh ? high : pre_hh - ta.sma(math.abs(ta.change(high) * lrb_decay), lrb_smooth)
lrb_ll := close <= pre_ll ? low : pre_ll + ta.sma(math.abs(ta.change(low) * lrb_decay), lrb_smooth)
// Ekranda gφrmek iηin LRB Bantlarύ ηizimi (έnce sarύ noktalar)
plot(lrb_hh, "LRB Likidite Tavanύ", color=color.new(color.yellow, 70), style=plot.style_circles, linewidth=1)
plot(lrb_ll, "LRB Likidite Tabanύ", color=color.new(color.yellow, 70), style=plot.style_circles, linewidth=1)
// ═════════════════════════════════════════════════════════════════════════
// 3. ANA TREND FέLTRESέ VE OMURGA HAFIZASI
// ═════════════════════════════════════════════════════════════════════════
float ham_volatilite = ta.tr(true)
float max_vol = nz(ta.highest(ham_volatilite, 3), 0.0001), float min_vol = nz(ta.lowest(ham_volatilite, 3), 0.0)
float vol_orani = (max_vol == min_vol) ? 0.0 : ((ham_volatilite - min_vol) / (max_vol - min_vol))
[ayna_sar, ayna_trend, ayna_ep] = f_ozel_sar_ep(high, low, 0.0 + (vol_orani * 0.08), 0.001 + (vol_orani * 0.08), 0.10 + (vol_orani * 0.30))
float ayna = ayna_trend > 0 ? hl2 + math.abs(hl2 - ayna_sar) : hl2 - math.abs(hl2 - ayna_sar)
float ayna_ivme = math.abs(ayna - nz(ayna[1], ayna))
float max_ivme = nz(ta.highest(ayna_ivme, 3), 0.001), float min_ivme = nz(ta.lowest(ayna_ivme, 3), 0.0)
float ivme_orani = (max_ivme == min_ivme) ? 0.0 : ((ayna_ivme - min_ivme) / (max_ivme - min_ivme))
[meta_sar, meta_trend, meta_ep] = f_ozel_sar_ep(math.max(ayna, nz(ayna[1])), math.min(ayna, nz(ayna[1])), 0.0 + (ivme_orani * 0.004), 0.001 + (ivme_orani * 0.004), 0.15 + (ivme_orani * 0.15))
var ep_kasa = array.new_float(3, hl2)
if meta_trend != meta_trend[1]
array.unshift(ep_kasa, meta_ep[1]), array.pop(ep_kasa)
int d_len = math.max(1, math.min(3, math.floor(1.0 - (ivme_orani * 3.0))))
float ham_medyan = nz(array.median(array.slice(ep_kasa, 0, d_len)), hl2)
float ema1 = f_adaptif_ema(ham_medyan, d_len), float ema2 = f_adaptif_ema(ema1, d_len)
float omurga = ema1 + (ema1 - ema2)
var int omurga_yon = 1
var float o_tepe = hl2, var float o_dip = hl2, var float c_high = hl2, var float c_low = hl2
if omurga > nz(omurga[1], omurga)
if omurga_yon == -1
o_dip := c_low, c_high := omurga
omurga_yon := 1
else if omurga < nz(omurga[1], omurga)
if omurga_yon == 1
o_tepe := c_high, c_low := omurga
omurga_yon := -1
if omurga_yon == 1
c_high := math.max(c_high, omurga)
else if omurga_yon == -1
c_low := math.min(c_low, omurga)
float macro_dip = omurga_yon == -1 ? c_low : o_dip
float macro_tepe = omurga_yon == 1 ? c_high : o_tepe
// ═════════════════════════════════════════════════════════════════════════
// 4. SAF GάΗ STRATEJέSέ VE KUTU ΗέZέMέ
// ═════════════════════════════════════════════════════════════════════════
bool long_sart = (hl2 > omurga) and (hl2 > meta_sar)
bool short_sart = (hl2 < omurga) and (hl2 < meta_sar)
var int aktif_islem = 0
bool taktik_al = false, bool taktik_sat = false
if long_sart and aktif_islem != 1
taktik_al := true, aktif_islem := 1
if short_sart and aktif_islem != -1
taktik_sat := true, aktif_islem := -1
var box b_tp = na, var box b_sl = na
var label l_tp = na, var label l_sl = na, var label l_en = na, var label lb_f50 = na, var label lb_f61 = na, var label lb_f78 = na
var float entry_p = na, var float tp_p = na, var float sl_p = na
var float f50_p = na, var float f61_p = na, var float f78_p = na
if not na(b_tp)
box.set_right(b_tp, bar_index + 3), box.set_right(b_sl, bar_index + 3)
label.set_x(l_tp, bar_index + 3), label.set_x(l_sl, bar_index + 3), label.set_x(l_en, bar_index + 3)
label.set_x(lb_f50, bar_index + 3), label.set_x(lb_f61, bar_index + 3), label.set_x(lb_f78, bar_index + 3)
if taktik_al or taktik_sat
box.delete(b_tp), box.delete(b_sl)
label.delete(l_tp), label.delete(l_sl), label.delete(l_en), label.delete(lb_f50), label.delete(lb_f61), label.delete(lb_f78)
entry_p := hl2
sl_p := taktik_al ? macro_dip : macro_tepe
tp_p := taktik_al ? o_tepe : o_dip
tp_p := taktik_al ? math.max(tp_p, entry_p + (entry_p * 0.001)) : math.min(tp_p, entry_p - (entry_p * 0.001))
sl_p := taktik_al ? math.min(sl_p, entry_p - (entry_p * 0.001)) : math.max(sl_p, entry_p + (entry_p * 0.001))
float d_boyu = math.abs(tp_p - sl_p)
f50_p := taktik_al ? sl_p + (d_boyu * 0.500) : sl_p - (d_boyu * 0.500)
f61_p := taktik_al ? sl_p + (d_boyu * 0.618) : sl_p - (d_boyu * 0.618)
f78_p := taktik_al ? sl_p + (d_boyu * 0.786) : sl_p - (d_boyu * 0.786)
color c_tp = taktik_al ? color.new(color.lime, 95) : color.new(color.aqua, 95)
color c_border = taktik_al ? color.rgb(0, 230, 119, 00) : color.rgb(0, 187, 212, 00)
b_tp := box.new(bar_index, taktik_al ? tp_p : entry_p, bar_index + 3, taktik_al ? entry_p : tp_p, bgcolor=c_tp, border_color=c_border)
b_sl := box.new(bar_index, taktik_al ? entry_p : sl_p, bar_index + 3, taktik_al ? sl_p : entry_p, bgcolor=color.new(color.red, 95), border_color=color.red)
l_tp := label.new(bar_index + 3, tp_p, "TP: " + str.tostring(tp_p, format.mintick), style=label.style_label_left, color=color.new(color.black, 100), textcolor=c_border, size=size.small)
l_sl := label.new(bar_index + 3, sl_p, "SL: " + str.tostring(sl_p, format.mintick), style=label.style_label_left, color=color.new(color.black, 100), textcolor=color.red, size=size.small)
l_en := label.new(bar_index + 3, entry_p, "@: " + str.tostring(entry_p, format.mintick), style=label.style_label_left, color=color.new(color.black, 100), textcolor=color.white, size=size.small)
lb_f50 := label.new(bar_index + 5, f50_p, "0 [" + str.tostring(f50_p, format.mintick) + "]", style=label.style_label_left, color=color.new(color.black, 100), textcolor=color.yellow, size=size.small)
lb_f61 := label.new(bar_index + 5, f61_p, "1 [" + str.tostring(f61_p, format.mintick) + "]", style=label.style_label_left, color=color.new(color.black, 100), textcolor=color.yellow, size=size.small)
lb_f78 := label.new(bar_index + 5, f78_p, "2 [" + str.tostring(f78_p, format.mintick) + "]", style=label.style_label_left, color=color.new(color.black, 100), textcolor=color.yellow, size=size.small)
// ═════════════════════════════════════════════════════════════════════════
// 5. ΗέFT KATMANLI DBHF SέSTEMέ VE ANOMALέ KALKANI
// ═════════════════════════════════════════════════════════════════════════
[dbhf_micro_cizgi, dbhf_micro_trend] = f_dbhf_sniper(hl2, 14, 1.0, 1.0, 0.5, 0.2)
[dbhf_macro_cizgi, dbhf_macro_trend] = f_dbhf_sniper(hl2, 14, 2.5, 1.0, 0.5, 0.1)
float anomali_atr = ta.atr(14)
bool anomali_var = math.abs(close - open) > (anomali_atr * 1.5)
// ═════════════════════════════════════════════════════════════════════════
// 6. KUTU έΗέ PUSU (LRB LέKέDέTE AVI ONAYLI)
// ═════════════════════════════════════════════════════════════════════════
bool kutu_ici_long = (aktif_islem == 1) and (hl2 <= entry_p) and (hl2 >= sl_p)
bool kutu_ici_short = (aktif_islem == -1) and (hl2 >= entry_p) and (hl2 <= sl_p)
var bool horoz_long = false, var bool horoz_short = false
if taktik_al or taktik_sat
horoz_long := false, horoz_short := false
// YENέ ήART: Fiyat hem 61.8'e inmeli, HEM DE LRB alt bandύna iπne atύp likidite temizlemeli!
if kutu_ici_long and (hl2 <= f61_p) and (low <= lrb_ll)
horoz_long := true
if kutu_ici_short and (hl2 >= f61_p) and (high >= lrb_hh)
horoz_short := true
bool otonom_pusu_long = horoz_long and ta.crossover(dbhf_micro_trend, 0) and barstate.isconfirmed and not anomali_var
bool otonom_pusu_short = horoz_short and ta.crossunder(dbhf_micro_trend, 0) and barstate.isconfirmed and not anomali_var
if otonom_pusu_long
horoz_long := false
if otonom_pusu_short
horoz_short := false
plotshape(otonom_pusu_long, "Kutu έηi Long Pusu", shape.triangleup, location.belowbar, color=color.lime, size=size.small, text="PUSU\nAL", textcolor=color.white)
plotshape(otonom_pusu_short, "Kutu έηi Short Pusu", shape.triangledown, location.abovebar, color=color.red, size=size.small, text="PUSU\nSAT", textcolor=color.white)
plotshape((horoz_long or horoz_short) and anomali_var, "Anomali Uyarύsύ", shape.diamond, location.absolute, color.new(color.white, 0), size=size.tiny, text="ANOMALέ", textcolor=color.silver)
// ═════════════════════════════════════════════════════════════════════════
// 7. %100 OTONOM DBHF TAHLέYE SέSTEMέ
// ═════════════════════════════════════════════════════════════════════════
var float iz_suren_stop = na
var int savas_durumu = 0
if otonom_pusu_long
savas_durumu := 1
iz_suren_stop := sl_p
else if otonom_pusu_short
savas_durumu := -1
iz_suren_stop := sl_p
bool tahliye_sinyali = false
if savas_durumu == 1
iz_suren_stop := math.max(nz(iz_suren_stop[1], iz_suren_stop), dbhf_macro_cizgi)
if ta.crossunder(hl2, iz_suren_stop) and barstate.isconfirmed
savas_durumu := 0
tahliye_sinyali := true
if savas_durumu == -1
iz_suren_stop := math.min(nz(iz_suren_stop[1], iz_suren_stop), dbhf_macro_cizgi)
if ta.crossover(hl2, iz_suren_stop) and barstate.isconfirmed
savas_durumu := 0
tahliye_sinyali := true
color iz_renk = savas_durumu == 1 ? color.aqua : savas_durumu == -1 ? color.fuchsia : na
plot(savas_durumu != 0 ? iz_suren_stop : na, "Makro DBHF Kalkanύ", color=iz_renk, style=plot.style_stepline, linewidth=2)
plotshape(series=tahliye_sinyali ? hl2 : na, title="έώlem Kapatύldύ", style=shape.xcross, location=location.absolute, color=color.new(color.yellow, 0), size=size.small, text="TAHLέYE", textcolor=color.white)
Yer έmleri