//@version=5 indicator("X-T-L", overlay = true, shorttitle = "XTL") var FirsBarTime = time inputTime = input.time(timestamp("20 Sep 2023 00:00 +0000"), "Hangi tarihten sonra T kontrolü yapsın?") Time = inputTime < FirsBarTime ? FirsBarTime : inputTime yuzde=input.float(3.00, title="X'ten %... kadar düşüşünü grafikte göster") fibSec=input.float(0.618, "T kontrolünü hangi fib kademesine göre yapsın?", options = [0.236, 0.382, 0.5, 0.618]) fibSec2=input.float(0.214, title= "Fib belirle 1", group = "Görmek istediğin extra fib kademeleri varsa yaz ve stil sekmesinden görünür hale getir") fibSec3=input.float(0.382, title= "Fib belirle 2", group = "Görmek istediğin extra fib kademeleri varsa yaz ve stil sekmesinden görünür hale getir") fibSec4=input.float(0.500, title= "Fib belirle 3", group = "Görmek istediğin extra fib kademeleri varsa yaz ve stil sekmesinden görünür hale getir") fibSec5=input.float(0.618, title= "Fib belirle 5", group = "Görmek istediğin extra fib kademeleri varsa yaz ve stil sekmesinden görünür hale getir") fibSec6=input.float(0.786, title= "Fib belirle 6", group = "Görmek istediğin extra fib kademeleri varsa yaz ve stil sekmesinden görünür hale getir") /// Tüm bu alttaki logici custom type kullanarak pythondaki class tarız bir sistem oluştur ve onları methodlarla manipüle etmeyi dene. /// Bu şekilde çok spagetti durduğundan codebase ilerde genişletmen gerekirse çok sıkıntı çekersin var x = time>Time ? high : 0.00 var l = low getT() => math.round_to_mintick(l + (x - l) * fibSec) var t = getT() var controlT = false var abc = time if time>Time if high > x and not controlT x := high[1] l := low t := getT() if low < l l := low t := getT() if high >= t controlT := false x := high[1] l := low t := getT() abc:=time //Tw nin yüzde hesaplamasıyla uyması için x ile değil close ile bölmen doğru if 100/(close/(x-l))>=yuzde controlT := true col_cond = (time >= abc) and (time > Time) //Debug için bazı plotlar //plot(abc, title="abc time hold", display=display.data_window) //plot(getT(), title="getT()", display=display.data_window) //plotshape((time >= abc) and (time > Time), title="col_cond", display=display.data_window) //plotshape(controlT, title="controlT", display=display.data_window) fibSec2Calc=l + (x - l) * fibSec2 fibSec3Calc=l + (x - l) * fibSec3 fibSec4Calc=l + (x - l) * fibSec4 fibSec5Calc=l + (x - l) * fibSec5 fibSec6Calc=l + (x - l) * fibSec6 plot(fibSec2Calc, color= color.aqua, display = display.none) plot(fibSec3Calc, color= color.aqua, display = display.none) plot(fibSec4Calc, color= color.aqua, display = display.none) plot(fibSec5Calc, color= color.aqua, display = display.none) plot(fibSec6Calc, color= color.aqua, display = display.none) //Buraya conditionları ekleyip plotları ona göre çizdiriyoruz. plot(col_cond and controlT ? t : na, title="T", color= color.green, style=plot.style_linebr) plot(col_cond and controlT ? x : na, title="X", color= color.blue, style=plot.style_linebr) plot(col_cond and controlT ? l : na, title="L", color= color.red, style=plot.style_linebr) PosTable = input.string(defval="Alt-Orta", title="Tablonun konumu", options=["Sağ-Üst", "Sağ-Orta", "Sağ-Alt", "Üst-Orta", "Merkez", "Alt-Orta", "Sol-Üst", "Sol-Orta", "Sol-Alt"], group="Tablo yerleşimi ve büyüklük/küçüklük ayaryarı", inline="1") SizTable = input.string(defval="Normal", title="Size", options=["Otomatik", "En büyük", "Büyük", "Normal", "Küçük", "En küçük"], group="Tablo yerleşimi ve büyüklük/küçüklük ayaryarı", inline="1") Pos1Table = PosTable == "Sağ-Üst" ? position.top_right : PosTable == "Sağ-Orta" ? position.middle_right : PosTable == "Sağ-Alt" ? position.bottom_right : PosTable == "Üst-Orta" ? position.top_center : PosTable == "Merkez" ? position.middle_center : PosTable == "Alt-Orta" ? position.bottom_center : PosTable == "Sol-Üst" ? position.top_left : PosTable == "Sol-Orta" ? position.middle_left : position.bottom_left Siz1Table = SizTable == "Otomatik" ? size.auto : SizTable == "En Büyük" ? size.huge : SizTable == "Büyük" ? size.large : SizTable == "Normal" ? size.normal : SizTable == "Küçük" ? size.small : size.tiny var tbl = table.new(Pos1Table, 8, 2, frame_width=1, frame_color=color.black, border_width=1, border_color=color.black) if barstate.islast table.cell(tbl, 0, 0, "X Fiyatı", text_color=color.blue, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 1, 0, "L Fiyatı", text_color=color.red, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 2, 0, "X→L Farkı", text_color=color.black, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 3, 0, "T Fiyatı", text_color=color.green, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 4, 0, "L→T Marjı", text_color=color.black, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 5, 0, "Kar Marjı", text_color=color.black, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 6, 0, "T Tarihi", text_color=color.black, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 7, 0, "İlk Bar T.", text_color=color.black, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 0, 1, str.tostring(x, format.mintick), text_color=color.blue, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 1, 1, str.tostring(l, format.mintick), text_color=color.red, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 2, 1, str.tostring(100/(x/(x-l)), format.percent), text_color=controlT ? color.green : color.orange, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 3, 1, str.tostring(t , format.mintick), text_color=color.green, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 4, 1, str.tostring(100/(l/(t-l)), format.percent), text_color=color.black, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 5, 1, str.tostring(100/(close/(t-close)), format.percent), text_color=color.black, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 6, 1, str.format_time(abc, format = "dd-MM-yyyy HH:mm", timezone = "UTC+3"), text_color=color.black, text_size=Siz1Table, bgcolor=color.new(color.gray,85)) table.cell(tbl, 7, 1, str.format_time(FirsBarTime, format = "dd-MM-yyyy"), text_color=color.black, text_size=Siz1Table, bgcolor=color.new(color.gray,85))