PHP Code:
// © Kinetik Komuta Merkezi - KKM V24 (Nihai Birleώim: V23 HUD + V9 OTE/DBHF Pusu)
//@version=6
indicator("Karargah V24 - Kuantum Sniper", 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_kuantum_lrb_dinamik(src, base_decay, smooth, max_atr_dist, evrensel_ivme) =>
var float hh = na, var float ll = na
float pre_hh = nz(hh[1], src), float pre_ll = nz(ll[1], src)
float atr_gucu = nz(ta.atr(14), ta.tr)
float decay_mult = 2.0 - (evrensel_ivme * 1.5)
float cur_decay = atr_gucu * base_decay * decay_mult
float decay_sma = ta.sma(cur_decay, smooth)
float temp_hh = src >= pre_hh ? src : pre_hh - decay_sma
float temp_ll = src <= pre_ll ? src : pre_ll + decay_sma
float max_mesafe = atr_gucu * max_atr_dist
hh := math.min(temp_hh, src + max_mesafe)
ll := math.max(temp_ll, src - max_mesafe)
float mid = math.avg(hh, ll)
[hh, ll, mid]
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]
f_tam_otonom_kutu(series float src, series float _dynAtr, series float _dynMult, series float _dynMu) =>
float threshold = _dynAtr * _dynMult
var float z = na, var float v = 0.0
float zPrev = na(z[1]) ? src : z[1]
float vPrev = v[1], float zPred = zPrev + vPrev
float zTemp = zPred + _dynMu * (src - zPred)
float diff = zTemp - zPrev
v := math.abs(diff) > threshold ? math.sign(diff) * (math.abs(diff) - threshold) : 0.0
z := zPrev + v
z
f_otonom_frama(src, series int len) =>
var float filt = na
int safe_len = math.max(2, nz(len, 3))
int n1 = math.max(1, math.floor(safe_len / 2)), int n2 = math.max(1, safe_len - n1)
float hh1 = ta.highest(high, n1), float ll1 = ta.lowest(low, n1)
float hh2 = ta.highest(high[n1], n2), float ll2 = ta.lowest(low[n1], n2)
float hh3 = ta.highest(high, safe_len), float ll3 = ta.lowest(low, safe_len)
float n1_range = (hh1 - ll1) / n1, float n2_range = (hh2 - ll2) / n2, float n3_range = (hh3 - ll3) / safe_len
float D = 0.0
if (n1_range > 0 and n2_range > 0 and n3_range > 0)
D := (math.log(n1_range + n2_range) - math.log(n3_range)) / math.log(2)
float alpha = math.exp(-4.6 * (nz(D) - 1))
alpha := math.max(0.01, math.min(1.0, alpha))
filt := na(filt[1]) ? src : (alpha * src) + ((1.0 - alpha) * nz(filt[1]))
filt
// ═════════════════════════════════════════════════════════════════════════
// 2. DNA, AYNA RADARI VE META SAR
// ═════════════════════════════════════════════════════════════════════════
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))
float ayna_start = 0.02 + (vol_orani * 0.08)
float ayna_inc = 0.02 + (vol_orani * 0.08)
float ayna_max = 0.20 + (vol_orani * 0.30)
[ayna_sar, ayna_trend, ayna_ep] = f_ozel_sar_ep(high, low, ayna_start, ayna_inc, ayna_max)
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.0001), float min_ivme = nz(ta.lowest(ayna_ivme, 3), 0.0)
float evrensel_ivme = (max_ivme == min_ivme) ? 0.0 : ((ayna_ivme - min_ivme) / (max_ivme - min_ivme))
float ayna_h = math.max(ayna, nz(ayna[1], ayna)), float ayna_l = math.min(ayna, nz(ayna[1], ayna))
float oto_start = 0.02 + (evrensel_ivme * 0.04)
float oto_inc = 0.02 + (evrensel_ivme * 0.04)
float oto_max = 0.15 + (evrensel_ivme * 0.15)
[meta_sar, meta_trend, meta_ep] = f_ozel_sar_ep(ayna_h, ayna_l, oto_start, oto_inc, oto_max)
// Kuantum LRB (HUD ve Radar iηin)
[ayna_hh, ayna_ll, ayna_mid] = f_kuantum_lrb_dinamik(ayna, 0.10, 4, 4.0, evrensel_ivme)
[macro_hh, macro_ll, macro_mid] = f_kuantum_lrb_dinamik(hl2, 0.05, 8, 6.0, evrensel_ivme)
// ═════════════════════════════════════════════════════════════════════════
// 3. ANA TREND FέLTRESέ VE OMURGA HAFIZASI
// ═════════════════════════════════════════════════════════════════════════
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 dinamik_uzunluk = math.max(1, math.min(3, math.floor(1.0 - (evrensel_ivme * 3.0))))
float ham_medyan = nz(array.median(array.slice(ep_kasa, 0, dinamik_uzunluk)), hl2)
float ema1 = f_adaptif_ema(ham_medyan, dinamik_uzunluk), float ema2 = f_adaptif_ema(ema1, dinamik_uzunluk)
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έ & KANAL KUTULARI (FέB 61.8 OTE)
// ═════════════════════════════════════════════════════════════════════════
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 line l_f50 = na, var line l_f61 = na, var line l_f78 = na
var float entry_p = na, var float tp_p = na, var float sl_p = na, var float f61_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)
line.set_x2(l_f50, bar_index + 3), line.set_x2(l_f61, bar_index + 3), line.set_x2(l_f78, bar_index + 3)
label.set_x(lb_f50, bar_index + 5), label.set_x(lb_f61, bar_index + 5), label.set_x(lb_f78, bar_index + 5)
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)
line.delete(l_f50), line.delete(l_f61), line.delete(l_f78)
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 dalga_boyu = math.abs(tp_p - sl_p)
float f50_p = taktik_al ? sl_p + (dalga_boyu * 0.500) : sl_p - (dalga_boyu * 0.500)
f61_p := taktik_al ? sl_p + (dalga_boyu * 0.618) : sl_p - (dalga_boyu * 0.618)
float f78_p = taktik_al ? sl_p + (dalga_boyu * 0.786) : sl_p - (dalga_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)
l_f50 := line.new(bar_index, f50_p, bar_index + 3, f50_p, color=color.yellow, width=1, style=line.style_dashed)
l_f61 := line.new(bar_index, f61_p, bar_index + 3, f61_p, color=color.yellow, width=1, style=line.style_dashed)
l_f78 := line.new(bar_index, f78_p, bar_index + 3, f78_p, color=color.yellow, width=1, style=line.style_dashed)
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έ & OTONOM PUSU
// ═════════════════════════════════════════════════════════════════════════
[dbhf_micro_cizgi, dbhf_micro_trend] = f_dbhf_sniper(hl2, 14, 1.0, 1.0, 0.5, 0.2) // Mikro (Tetik)
[dbhf_macro_cizgi, dbhf_macro_trend] = f_dbhf_sniper(hl2, 14, 1.5, 1.0, 0.5, 0.1) // Makro (Tahliye/έz Sόren)
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
if kutu_ici_long and (hl2 <= f61_p)
horoz_long := true
if kutu_ici_short and (hl2 >= f61_p)
horoz_short := true
bool otonom_pusu_long = horoz_long and ta.crossover(dbhf_micro_trend, 0) and barstate.isconfirmed
bool otonom_pusu_short = horoz_short and ta.crossunder(dbhf_micro_trend, 0) and barstate.isconfirmed
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="AL", textcolor=color.white)
plotshape(otonom_pusu_short, "Kutu έηi Short Pusu", shape.triangledown, location.abovebar, color=color.red, size=size.small, text="SAT", textcolor=color.white)
// ═════════════════════════════════════════════════════════════════════════
// 6. %100 OTONOM DBHF TAHLέYE SέSTEMέ (έz Sόren Stop)
// ═════════════════════════════════════════════════════════════════════════
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, "έz Sόren Stop", color=iz_renk, style=plot.style_stepline, linewidth=1)
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="Kapa", textcolor=color.white)
// ═════════════════════════════════════════════════════════════════════════
// 7. GΦRSELLEήTέRME VE BέRLEήέK HUD (V21.2)
// ═════════════════════════════════════════════════════════════════════════
// Frama Mikro Kutu Zemini
float mikro_frama = f_otonom_frama(hl2, 2)
float dinamik_atr = ta.atr(10)
float kutu_zemin = f_tam_otonom_kutu(mikro_frama, dinamik_atr, 0.2, 0.1)
var int kutu_yon = 1
kutu_yon := kutu_zemin > nz(kutu_zemin[1], kutu_zemin) ? 1 : kutu_zemin < nz(kutu_zemin[1], kutu_zemin) ? -1 : nz(kutu_yon[1], 1)
bgcolor(kutu_yon == 1 ? color.new(color.lime, 95) : color.new(color.red, 95), title="Mikro Zemin")
// Radar Ηizimleri
plot(ayna, "Ayna", color=color.new(color.yellow, 0), linewidth=1, style=plot.style_stepline)
plot(ayna_hh, "(Tepe)", color=color.new(color.red, 40), linewidth=1, style=plot.style_stepline)
plot(ayna_ll, "(Dip)", color=color.new(color.lime, 40), linewidth=1, style=plot.style_stepline)
// Ayna Salύnύm Hafύzasύ ve HUD Paneli
var float ayna_tepe = na, var float ayna_dip = na
bool ayna_peak = ayna[1] > ayna[2] and ayna[1] > ayna
bool ayna_bottom = ayna[1] < ayna[2] and ayna[1] < ayna
if ayna_peak
ayna_tepe := ayna[1]
if ayna_bottom
ayna_dip := ayna[1]
var label lbl_tepe = label.new(na, na, "", style=label.style_label_left, color=color.new(color.black, 100))
var label lbl_dip = label.new(na, na, "", style=label.style_label_left, color=color.new(color.black, 100))
if barstate.islast
string txt_tepe = "Tepe: ", float val_tepe = ayna_tepe, color col_tepe = color.new(color.red, 0)
string txt_dip = "Dip: ", float val_dip = ayna_dip, color col_dip = color.new(color.lime, 0)
if not na(ayna_tepe) and ayna > ayna_tepe
txt_tepe := "YENέ TEPE: ", val_tepe := ayna, col_tepe := color.new(color.orange, 0)
if not na(ayna_dip) and ayna < ayna_dip
txt_dip := "YENέ DέP: ", val_dip := ayna, col_dip := color.new(color.orange, 0)
string final_tepe = txt_tepe + str.tostring(val_tepe, format.mintick) + " [ Makro Tavan: " + str.tostring(macro_hh, format.mintick) + " ]"
string final_dip = txt_dip + str.tostring(val_dip, format.mintick) + " [ Makro Taban: " + str.tostring(macro_ll, format.mintick) + " ]"
if not na(val_tepe)
label.set_xy(lbl_tepe, bar_index + 3, val_tepe), label.set_text(lbl_tepe, final_tepe), label.set_textcolor(lbl_tepe, col_tepe)
if not na(val_dip)
label.set_xy(lbl_dip, bar_index + 3, val_dip), label.set_text(lbl_dip, final_dip), label.set_textcolor(lbl_dip, col_dip)
Yer έmleri