PHP Code:
// © Kinetik Komuta Merkezi - KKM V7 MATRIX ULTIMATE (NέHAέ BέRLEήέM + RADARLAR)
//@version=6
indicator(".", overlay=true, max_lines_count=500, max_boxes_count=500, max_labels_count=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_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, 55))
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. META-SAR (TETέK / ΗEKέΗ)
// ═════════════════════════════════════════════════════════════════════════
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_genel = math.abs(ayna - nz(ayna[1], ayna))
float max_ivme = nz(ta.highest(ayna_ivme_genel, 3), 0.0001)
float min_ivme = nz(ta.lowest(ayna_ivme_genel, 3), 0.0)
float ivme_orani = (max_ivme == min_ivme) ? 0.0 : ((ayna_ivme_genel - 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 + (ivme_orani * 0.04)
float oto_inc = 0.02 + (ivme_orani * 0.04)
float oto_max = 0.15 + (ivme_orani * 0.15)
[meta_sar, meta_trend, meta_ep] = f_ozel_sar_ep(ayna_h, ayna_l, oto_start, oto_inc, oto_max)
// ═════════════════════════════════════════════════════════════════════════
// 3. ANA TREND FέLTRESέ: OTONOM MELEZ OMURGA (MAKRO ALAN)
// ═════════════════════════════════════════════════════════════════════════
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 - (ivme_orani * 3.0))))
float ham_medyan = array.median(array.slice(ep_kasa, 0, dinamik_uzunluk))
ham_medyan := na(ham_medyan) ? hl2 : ham_medyan
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. MέKRO FRAMA KUTUSU (DέNAMέK TAKέP STOPU VE MέKRO ONAY)
// ═════════════════════════════════════════════════════════════════════════
float mikro_frama = f_otonom_frama(hl2, 3)
float dinamik_atr = ta.atr(14)
float kutu_zemin = f_tam_otonom_kutu(mikro_frama, dinamik_atr, 0.3, 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)
// ═════════════════════════════════════════════════════════════════════════
// 5. SAF GάΗ STRATEJέSέ (άΗLά KέLέT)
// ═════════════════════════════════════════════════════════════════════════
bool long_sart = (hl2 > omurga) and (hl2 > meta_sar) and (hl2 > kutu_zemin)
bool short_sart = (hl2 < omurga) and (hl2 < meta_sar) and (hl2 < kutu_zemin)
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
// ═════════════════════════════════════════════════════════════════════════
// 6. OTONOM KANAL KUTULARI VE SARI OTE (FIB) HATLARI
// ═════════════════════════════════════════════════════════════════════════
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 line l_f50 = na, var line l_f61 = na, var line l_f78 = 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
if not na(b_tp)
box.set_right(b_tp, bar_index + 5), box.set_right(b_sl, bar_index + 5)
label.set_x(l_tp, bar_index + 5), label.set_x(l_sl, bar_index + 5), label.set_x(l_en, bar_index + 5)
line.set_x2(l_f50, bar_index + 5), line.set_x2(l_f61, bar_index + 5), line.set_x2(l_f78, bar_index + 5)
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)
float 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, 80) : color.new(color.aqua, 80)
color c_border = taktik_al ? color.lime : color.aqua
b_tp := box.new(bar_index, taktik_al ? tp_p : entry_p, bar_index + 5, 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 + 5, taktik_al ? sl_p : entry_p, bgcolor=color.new(color.red, 80), border_color=color.red)
l_tp := label.new(bar_index + 5, 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 + 5, sl_p, "Makro 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 + 5, entry_p, "GέRέή: " + 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 + 5, f50_p, color=color.rgb(8, 4, 253), width=1, style=line.style_dashed)
l_f61 := line.new(bar_index, f61_p, bar_index + 5, f61_p, color=color.yellow, width=1, style=line.style_dashed)
l_f78 := line.new(bar_index, f78_p, bar_index + 5, f78_p, color=color.yellow, width=1, style=line.style_dashed)
lb_f50 := label.new(bar_index + 5, f50_p, "0", style=label.style_label_left, color=color.new(color.black, 100), textcolor=color.yellow, size=size.tiny)
lb_f61 := label.new(bar_index + 5, f61_p, "1", style=label.style_label_left, color=color.new(color.black, 100), textcolor=color.yellow, size=size.tiny)
lb_f78 := label.new(bar_index + 5, f78_p, "2", style=label.style_label_left, color=color.new(color.black, 100), textcolor=color.yellow, size=size.tiny)
// ═════════════════════════════════════════════════════════════════════════
// 7. KΦPEKBALIΠI RADARI (YΦNLά ERKEN UYARI SέSTEMέ)
// ═════════════════════════════════════════════════════════════════════════
bool shark_squeeze = low[2] < low[1] and low[1] < low and high[2] > high[1] and high[1] > high
bool shark_al = shark_squeeze and (hl2 > omurga)
bool shark_sat = shark_squeeze and (hl2 < omurga)
bgcolor(shark_al ? color.new(color.lime, 85) : na, title="Kφpekbalύπύ AL Sύkύώmasύ")
bgcolor(shark_sat ? color.new(color.red, 85) : na, title="Kφpekbalύπύ SAT Sύkύώmasύ")
if shark_al or shark_sat
float ana_mum_h = high[2]
float ana_mum_l = low[2]
float ana_fark = ana_mum_h - ana_mum_l
if shark_al
float ust_hedef = ana_mum_h + ana_fark
line.new(bar_index, ana_mum_h, bar_index + 3, ana_mum_h, color=color.lime, width=1, style=line.style_solid)
line.new(bar_index, ust_hedef, bar_index + 3, ust_hedef, color=color.lime, width=2, style=line.style_dotted)
label.new(bar_index + 3, ust_hedef, "Av: " + str.tostring(ust_hedef, format.mintick), style=label.style_label_left, color=color.new(color.black, 100), textcolor=color.lime, size=size.small)
else if shark_sat
float alt_hedef = ana_mum_l - ana_fark
line.new(bar_index, ana_mum_l, bar_index + 3, ana_mum_l, color=color.red, width=1, style=line.style_solid)
line.new(bar_index, alt_hedef, bar_index + 3, alt_hedef, color=color.red, width=2, style=line.style_dotted)
label.new(bar_index + 3, alt_hedef, "Av: " + str.tostring(alt_hedef, format.mintick), style=label.style_label_left, color=color.new(color.black, 100), textcolor=color.red, size=size.small)
// ═════════════════════════════════════════════════════════════════════════
// 8. FIRTINA RADARI (VOLATέLέTE SIKIήMASI VE 3X UYARISI)
// ═════════════════════════════════════════════════════════════════════════
var float pc_a = na
var float pc_b = na
var float pc_size = na
float chg_a = nz(pc_a[1]) - nz(pc_a[2])
float chg_b = nz(pc_b[1]) - nz(pc_b[2])
pc_size := (chg_a > 0 or chg_b < 0) ? ta.atr(100) : nz(pc_size[1], ta.tr(true))
int bs_a = nz(ta.barssince(chg_a > 0) + 1, 1)
int bs_b = nz(ta.barssince(chg_b < 0) + 1, 1)
pc_a := math.max(hl2, nz(pc_a[1], hl2)) - (pc_size / 100) * bs_a
pc_b := math.min(hl2, nz(pc_b[1], hl2)) + (pc_size / 100) * bs_b
float daralma_miktari = pc_a - pc_b
bool firtina_radari = daralma_miktari > 0 and daralma_miktari < (ta.atr(100) * 0.25)
var int firtina_sayaci = 0
firtina_sayaci := firtina_radari ? firtina_sayaci + 1 : 0
bool ucx_uyari = firtina_sayaci >= 3
color firtina_renk = omurga_yon == 1 ? color.lime : color.red
plotshape(firtina_radari and not ucx_uyari, "Fύrtύna Hazύrlύπύ", shape.circle, location.bottom, color=color.new(firtina_renk, 50), size=size.tiny)
plotshape(ucx_uyari, "3X KRέTέK SIKIήMA", shape.xcross, location.bottom, color=firtina_renk, size=size.small)
bgcolor(ucx_uyari ? color.new(firtina_renk, 85) : na, title="3X Fύrtύna Radarύ Arkaplanύ")
// ═════════════════════════════════════════════════════════════════════════
// 9. GΦRSELLEήTέRME VE EKRAN ΗIKTILARI
// ═════════════════════════════════════════════════════════════════════════
// Meta-SAR (Tetik)
color sar_renk = meta_trend > 0 ? color.lime : color.red
//plot(meta_sar, "Meta-SAR", color=sar_renk, linewidth=2, style=plot.style_cross)
// Omurga (Makro Trend ve Oyun Alanύ)
color omurga_renk = omurga_yon == 1 ? color.yellow : color.fuchsia
plot(omurga, "0", color=omurga_renk, linewidth=1, style=plot.style_stepline)
// Mikro Kutu (Dinamik Stop ve Mikro Trend)
color kutu_r = kutu_yon == 1 ? color.yellow : color.fuchsia
plot(kutu_zemin, "1", color=kutu_r, linewidth=1, style=plot.style_stepline)
////////////sarlar////////////////
sar_fast = ta.sar(0.02, 0.02, 0.20)
sar_mid = ta.sar(0.03, 0.03, 0.25)
sar_slow = ta.sar(0.04, 0.04, 0.30)
psar_uzun = ta.sar(0., 0.01, 0.10)
plot(psar_uzun, title = '2', color = close > psar_uzun ? #0901ff : #0901ff, style = plot.style_cross, linewidth = 2)
plot(sar_fast, 'C', color = color.rgb(0, 255, 0), style = plot.style_cross, linewidth = 2)
plot(sar_mid, 'B', color = color.rgb(255, 0, 0), style = plot.style_cross, linewidth = 2)
plot(sar_slow, 'A', color = color.rgb(251, 249, 251), style = plot.style_cross, linewidth = 2)
Yer έmleri