PHP Code:
//@version=6
indicator(":)", overlay=true, max_labels_count=500, max_lines_count=500, max_boxes_count=500)
// ─────────────────────────────────────────────────────────────────
// DALGA MESAFESέ (Daireleri Birbirinden Ayύran Boώluk)
// ─────────────────────────────────────────────────────────────────
// Fiyatύn hareketliliπine gφre aralarύndaki mesafeyi ayarlar
dalga_araligi = ta.atr(14) * 0.25
// ─────────────────────────────────────────────────────────────────
// OTONOM BEYέN (Φzelleώtirilmiώ MTK SAR Motoru)
// ─────────────────────────────────────────────────────────────────
type SARState
float sar_value
float extreme_point
float accel_factor
bool isLong
method f_initState(float accel_start) => SARState.new(na, na, accel_start, false)
method f_updateState(SARState state, float high_val, float low_val, float close_val, float accel_start, float accel_inc, float accel_max, float atr_offset) =>
bool isInitialTrend = false
// έLK BAήLANGIΗ
if na(state.sar_value)
if close_val > close_val[1]
state.isLong := true
state.extreme_point := high_val
// Baώlangύη ηizgisine offset (mesafe) eklendi
state.sar_value := low_val[1] - atr_offset
else
state.isLong := false
state.extreme_point := low_val
// Baώlangύη ηizgisine offset (mesafe) eklendi
state.sar_value := high_val[1] + atr_offset
isInitialTrend := true
state.accel_factor := accel_start
state.sar_value += state.accel_factor * (state.extreme_point - state.sar_value)
// YΦN DEΠέήέMέ (KIRILIM ANI) - Daire Formunun Yaratύldύπύ Yer!
if state.isLong
if state.sar_value > low_val
isInitialTrend := true
state.isLong := false
// Dόώόώe geηerken her SAR farklύ bir mesafeden baώlar
state.sar_value := math.max(high_val, state.extreme_point) + atr_offset
state.extreme_point := low_val
state.accel_factor := accel_start
else
if state.sar_value < high_val
isInitialTrend := true
state.isLong := true
// Yόkseliώe geηerken her SAR farklύ bir mesafeden baώlar
state.sar_value := math.min(low_val, state.extreme_point) - atr_offset
state.extreme_point := high_val
state.accel_factor := accel_start
if not isInitialTrend
if state.isLong
if high_val > state.extreme_point
state.extreme_point := high_val
state.accel_factor := math.min(state.accel_factor + accel_inc, accel_max)
else
if low_val < state.extreme_point
state.extreme_point := low_val
state.accel_factor := math.min(state.accel_factor + accel_inc, accel_max)
if bar_index > 1
if state.isLong
state.sar_value := math.min(state.sar_value, low_val[1])
if bar_index > 2
state.sar_value := math.min(state.sar_value, low_val[2])
else
state.sar_value := math.max(state.sar_value, high_val[1])
if bar_index > 2
state.sar_value := math.max(state.sar_value, high_val[2])
state
// ─────────────────────────────────────────────────────────────────
// ήAHέNLERέN YARATILMASI (6 Tabaka)
// ─────────────────────────────────────────────────────────────────
var SARState sar1_beyaz = f_initState(0.04)
var SARState sar2_kirm = f_initState(0.01)
var SARState sar3_yesil = f_initState(0.01)
var SARState sar4_mavi = f_initState(0.01)
var SARState sar5_sari = f_initState(0.01) // Sarύ ayarύnύ ώimdilik 0.01 yaptύm
var SARState sar6_kutup = f_initState(0.001)
// Her ώahine farklύ bir "Uzaklύk" (Offset) veriyoruz ki iη iηe daireler oluώsun
sar1_beyaz := sar1_beyaz.f_updateState(high, low, close, 0., 0.04, 0.2, dalga_araligi * 0) // En iη dalga
sar2_kirm := sar2_kirm.f_updateState(high, low, close, 0., 0.003, 0.2, dalga_araligi * 1)
sar3_yesil := sar3_yesil.f_updateState(high, low, close, 0., 0.002, 0.2, dalga_araligi * 2)
sar4_mavi := sar4_mavi.f_updateState(high, low, close, 0., 0.01, 0.2, dalga_araligi * 3)
sar5_sari := sar5_sari.f_updateState(high, low, close, 0., 0.001, 0.2, dalga_araligi * 4)
sar6_kutup := sar6_kutup.f_updateState(high, low, close, 0.,0.001,0.2, dalga_araligi * 5) // En dύώ dalga
// ΗέZέMLER
plot(sar1_beyaz.sar_value, "1", color=color.fuchsia, style=plot.style_line, linewidth=1)
plot(sar2_kirm.sar_value, "3", color=color.fuchsia, style=plot.style_line, linewidth=1)
//plot(sar3_yesil.sar_value, "SAR4", color=color.green, style=plot.style_cross, linewidth=1)
plot(sar4_mavi.sar_value, "2", color=color.fuchsia, style=plot.style_line, linewidth=1)
//plot(sar5_sari.sar_value, "SAR5", color=color.yellow, style=plot.style_cross, linewidth=1)
plot(sar6_kutup.sar_value, "Trend", color=color.fuchsia,style=plot.style_line, linewidth=1)
///////////
// ==========================================
///////////////////
// ─────────────────────────────────────────────────────────────────
// 1. GέRDέLER
// ─────────────────────────────────────────────────────────────────
h_start = input.float(0., "Hύzlύ SAR Baώlangύη", step=0.01, group="Hύzlύ Ayna (Kalύn)")
h_inc = input.float(0.01, "Hύzlύ SAR έvme", step=0.01, group="Hύzlύ Ayna (Kalύn)")
h_max = input.float(0.30, "Hύzlύ SAR Max", step=0.1, group="Hύzlύ Ayna (Kalύn)")
y_start = input.float(0., "Yavaώ SAR Baώlangύη", step=0.005, group="Yavaώ Ayna (έnce)")
y_inc = input.float(0.01, "Yavaώ SAR έvme", step=0.005, group="Yavaώ Ayna (έnce)")
y_max = input.float(0.10, "Yavaώ SAR Max", step=0.1, group="Yavaώ Ayna (έnce)")
// ─────────────────────────────────────────────────────────────────
// 2. GELέήMέή LONESOME SAR MOTORU
// ─────────────────────────────────────────────────────────────────
f_ozel_sar(src_h, src_l, _start, _inc, _max, _reset_hiz) =>
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
if _reset_hiz
af := _start
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]
// ─────────────────────────────────────────────────────────────────
// 3. ΗIPLAK AYNA HESAPLAMASI
// ─────────────────────────────────────────────────────────────────
yeni_gun = ta.change(time("D")) != 0
// Hύzlύ Ayna
[sar_hizli, trend_hizli] = f_ozel_sar(high, low, h_start, h_inc, h_max, yeni_gun)
ayna_hizli = trend_hizli > 0 ? close + math.abs(close - sar_hizli) : close - math.abs(close - sar_hizli)
// ─────────────────────────────────────────────────────────────────
// 4. RENK VE ΗέZέMLER
// ─────────────────────────────────────────────────────────────────
bool hizli_yesil = ayna_hizli > close
color col_hizli = hizli_yesil ? color.lime : color.red
plot(ayna_hizli, title="@yφrόk@", color=col_hizli, style=plot.style_line, linewidth=1)
// ==========================================
/////////////////
// ─────────────────────────────────────────────────────────────────
// MTK-1-2-3 DAέRE FORMLU PSAR MOTORU
// ─────────────────────────────────────────────────────────────────
f_ozel_sar33(src_h, src_l, _start, _inc, _max, _reset_hiz) =>
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
if _reset_hiz
af := _start
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]
// ─────────────────────────────────────────────────────────────────
// HESAPLAMALAR VE ΗEKέM
// ─────────────────────────────────────────────────────────────────
// Orijinal kodda belirtilen (0.01 - 0.02 - 0.03) ivme deπerlerine gφre ηekimler
[roSarSlow, _] = f_ozel_sar33(high, low, 0., 0.01, 0.2, yeni_gun)
[roSarModerate, _] = f_ozel_sar33(high, low, 0., 0.02, 0.2, yeni_gun)
[roSarFast, _] = f_ozel_sar33(high, low, 0., 0.03, 0.2, yeni_gun)
// ─────────────────────────────────────────────────────────────────
// ΗέZέMLER
// ─────────────────────────────────────────────────────────────────
plot(roSarSlow, title="C", color=color.new(color.yellow, 0), style=plot.style_cross, linewidth=1)
plot(roSarModerate, title="B", color=color.new(color.yellow, 0), style=plot.style_cross, linewidth=1)
plot(roSarFast, title="A", color=color.new(color.yellow, 0), style=plot.style_cross, linewidth=1)
// =================================================================
// ─────────────────────────────────────────────────────────────────
// 5 DAKέKALIK DEΠERLER TABLOSU (KODA DOKUNULMADAN EKLENDέ)
// ─────────────────────────────────────────────────────────────────
// =================================================================
// Pine Script motoru tόm bu deπerlerin 5 dakikalύk versiyonlarύnύ tek bir paket halinde hesaplar
[m5_sar1, m5_sar4, m5_sar2, m5_sar6, m5_ayna, m5_ayna_yon, m5_a, m5_b, m5_c] = request.security(syminfo.tickerid, "", [sar1_beyaz.sar_value, sar4_mavi.sar_value, sar2_kirm.sar_value, sar6_kutup.sar_value, ayna_hizli, hizli_yesil, roSarFast, roSarModerate, roSarSlow], lookahead=barmerge.lookahead_off)
var table tbl_5m = table.new(position.bottom_right, 2, 9, border_width=1, border_color=color.gray)
if barstate.islast
// 0. Baώlύk
table.cell(tbl_5m, 0, 0, "YATIRIM TAVSέYESέ", text_color=color.white, bgcolor=color.black, text_size=size.small)
table.cell(tbl_5m, 1, 0, "DEΠέLDέR.", text_color=color.white, bgcolor=color.black, text_size=size.small)
// 1. yφrόkTrend (Ayna - Rengi dinamik olarak o anki yφnόne gφre yanar)
table.cell(tbl_5m, 0, 1, "@yφrόk@", text_color=color.white, bgcolor=color.new(color.black, 40), text_size=size.small)
table.cell(tbl_5m, 1, 1, str.tostring(m5_ayna, format.mintick), text_color=color.white, bgcolor=m5_ayna_yon ? color.new(color.lime, 40) : color.new(color.red, 40), text_size=size.small)
// 2. Dalga 1 (Beyaz)
table.cell(tbl_5m, 0, 2, "1", text_color=color.white, bgcolor=color.new(color.black, 40), text_size=size.small)
table.cell(tbl_5m, 1, 2, str.tostring(m5_sar1, format.mintick), text_color=color.black, bgcolor=color.fuchsia, text_size=size.small)
// 3. Dalga 2 (Mavi)
table.cell(tbl_5m, 0, 3, "2", text_color=color.white, bgcolor=color.new(color.black, 40), text_size=size.small)
table.cell(tbl_5m, 1, 3, str.tostring(m5_sar4, format.mintick), text_color=color.black, bgcolor=color.fuchsia, text_size=size.small)
// 4. Dalga 3 (Kύrmύzύ)
table.cell(tbl_5m, 0, 4, "3", text_color=color.white, bgcolor=color.new(color.black, 40), text_size=size.small)
table.cell(tbl_5m, 1, 4, str.tostring(m5_sar2, format.mintick), text_color=color.black, bgcolor=color.fuchsia, text_size=size.small)
// 5. Dalga Trend (Fuώya)
table.cell(tbl_5m, 0, 5, "Trend", text_color=color.white, bgcolor=color.new(color.black, 40), text_size=size.small)
table.cell(tbl_5m, 1, 5, str.tostring(m5_sar6, format.mintick), text_color=color.white, bgcolor=color.fuchsia, text_size=size.small)
// 6. Triple SAR A (Hύzlύ)
table.cell(tbl_5m, 0, 6, "A", text_color=color.white, bgcolor=color.new(color.black, 40), text_size=size.small)
table.cell(tbl_5m, 1, 6, str.tostring(m5_a, format.mintick), text_color=color.black, bgcolor=color.yellow, text_size=size.small)
// 7. Triple SAR B (Orta)
table.cell(tbl_5m, 0, 7, "B", text_color=color.white, bgcolor=color.new(color.black, 40), text_size=size.small)
table.cell(tbl_5m, 1, 7, str.tostring(m5_b, format.mintick), text_color=color.black, bgcolor=color.yellow, text_size=size.small)
// 8. Triple SAR C (Yavaώ)
table.cell(tbl_5m, 0, 8, "C", text_color=color.white, bgcolor=color.new(color.black, 40), text_size=size.small)
table.cell(tbl_5m, 1, 8, str.tostring(m5_c, format.mintick), text_color=color.black, bgcolor=color.yellow, text_size=size.small)
///////////////////////
// ─────────────────────────────────────────────────────────────────
// LONESOME SAR MOTORU (Kesintisiz Akύώ)
// ─────────────────────────────────────────────────────────────────
f_ozel_sar(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]
// ─────────────────────────────────────────────────────────────────
// 1. έΗ KANAL (Hύzlύ / Merkόr) | έvme: 0.01 | Dolgulu | Yeώil-Kύrmύzύ
// ─────────────────────────────────────────────────────────────────
[sar1, trend1] = f_ozel_sar(high, low, 0.0, 0.01, 0.03)
delta1 = math.abs(close - sar1)
ayna_h1 = trend1 > 0 ? close + delta1 : close - delta1
ayna_z1 = trend1 > 0 ? close - delta1 : close + delta1
var float s1_ust = na, var float s1_alt = na
if ta.change(trend1) != 0
s1_ust := math.max(ayna_h1, ayna_z1)
s1_alt := math.min(ayna_h1, ayna_z1)
col1 = trend1 > 0 ? color.new(color.lime, 0) : color.new(color.red, 0)
p1_ust = plot(s1_ust, title="1 άst", color=col1, style=plot.style_line, linewidth=1)
p1_alt = plot(s1_alt, title="1 Alt", color=col1, style=plot.style_line, linewidth=1)
// ─────────────────────────────────────────────────────────────────
// 2. ORTA KANAL (Denge / Dόnya) | έvme: 0.001 | Dolgusuz | Sarύ-Mavi
// ─────────────────────────────────────────────────────────────────
[sar2, trend2] = f_ozel_sar(high, low, 0.0, 0.001, 0.03)
delta2 = math.abs(close - sar2)
ayna_h2 = trend2 > 0 ? close + delta2 : close - delta2
ayna_z2 = trend2 > 0 ? close - delta2 : close + delta2
var float s2_ust = na, var float s2_alt = na
if ta.change(trend2) != 0
s2_ust := math.max(ayna_h2, ayna_z2)
s2_alt := math.min(ayna_h2, ayna_z2)
col2 = trend2 > 0 ? color.new(color.lime, 0) : color.new(color.red, 0)
plot(s2_ust, title="2 άst", color=col2, style=plot.style_line, linewidth=1)
plot(s2_alt, title="2 Alt", color=col2, style=plot.style_line, linewidth=1)
// ─────────────────────────────────────────────────────────────────