Untitled

 avatar
unknown
plain_text
5 months ago
4.6 kB
13
Indexable

//@version=5

indicator("Zig Zag Trend Kanalı", overlay = true, max_lines_count = 500, max_labels_count = 500, max_boxes_count = 500, max_bars_back = 1000)

//------------------------------------------------------------------------------

length1      = input(100)
extend      = input(true,'Kanalı Uzat')
show_ext    = input(true,'Kanalı Göster') 
show_labels = input(true,'Yazıları Göster') 


//Style

upcol = input(#ff1100,'Üst Kanal Rengi',group='Style')
midcol = input(#ff5d00,'Zig Zag Rengi',group='Style')
dncol = input(#2157f3,'Alt Kanal Rengi',group='Style')
//------------------------------------------------------------------------------
os1 = 0
src1 = close
var float valtop = na
var float valbtm = na

//------------------------------------------------------------------------------
upper = ta.highest(src1,length1)
lower = ta.lowest(src1,length1)
os1 := src1[length1] > upper ? 0 : src1[length1] < lower ? 1 : os1[1]

btm = os1 == 1 and os1[1] != 1
top = os1 == 0 and os1[1] != 0

//------------------------------------------------------------------------------
n = bar_index 
btm_n = ta.valuewhen(btm,n,0)
top_n = ta.valuewhen(top,n,0)
len = math.abs(btm_n - top_n)

if btm
    max_diff_up = 0.
    max_diff_dn = 0.
    valbtm := low[length1]
    
    for i = 0 to len-1
        point = low[length1] + i/(len-1)*(valtop - low[length1])
        max_diff_up := math.max(math.max(src1[length1+i],open[length1+i]) - point,max_diff_up)
        max_diff_dn := math.max(point - math.min(src1[length1+i],open[length1+i]),max_diff_dn)
        
    line.new(n[len+length1],valtop,n[length1],low[length1],color=midcol)
    
    if show_ext
        line.new(n[len+length1],valtop+max_diff_up,n[length1],low[length1]+max_diff_up
          ,color=upcol,style=line.style_dotted)
        line.new(n[len+length1],valtop-max_diff_dn,n[length1],low[length1]-max_diff_dn
          ,color=dncol,style=line.style_dotted)
    if show_labels
        label.new(n[length1],low[length1],str.tostring(low[length1],'#.####'),color=#00000000
          ,style=label.style_label_up,textcolor=dncol,textalign=text.align_left,size=size.small)

if top
    max_diff_up = 0.
    max_diff_dn = 0.
    valtop := high[length1]
    
    for i = 0 to len-1
        point = high[length1] + i/(len-1)*(valbtm - high[length1])
        max_diff_up := math.max(math.max(src1[length1+i],open[length1+i]) - point,max_diff_up)
        max_diff_dn := math.max(point - math.min(src1[length1+i],open[length1+i]),max_diff_dn)
    
    line.new(n[len+length1],valbtm,n[length1],high[length1],color=midcol)
    
    if show_ext
        line.new(n[len+length1],valbtm+max_diff_up,n[length1],high[length1]+max_diff_up
          ,color=upcol,style=line.style_dotted)
        line.new(n[len+length1],valbtm-max_diff_dn,n[length1],high[length1]-max_diff_dn
          ,color=dncol,style=line.style_dotted)
    if show_labels
        label.new(n[length1],high[length1],str.tostring(high[length1],'#.####'),color=#00000000
          ,style=label.style_label_down,textcolor=upcol,textalign=text.align_left,size=size.small)

if barstate.islast and extend
    max_diff_up = 0.
    max_diff_dn = 0.  
    x1 = 0
    y1 = 0.
    
    if os1 == 1
        x1 := btm_n-length1
        y1 := valbtm
        
        for i = 0 to n-btm_n+length1-1
            point = src1 + i/(n-btm_n+length1-1)*(valbtm - src1)
            max_diff_up := math.max(math.max(src1[i],open[i]) - point,max_diff_up)
            max_diff_dn := math.max(point - math.min(src1[i],open[i]),max_diff_dn)

    else 
        x1 := top_n-length1
        y1 := valtop
        
        for i = 0 to n-top_n+length1-1
            point = src1 + i/(n-top_n+length1-1)*(valtop - src1)
            max_diff_up := math.max(math.max(src1[i],open[i]) - point,max_diff_up)
            max_diff_dn := math.max(point - math.min(src1[i],open[i]),max_diff_dn)
        
    line.delete(line.new(x1,y1,n,src1,color=midcol,extend=extend.right)[1])
    
    if show_ext
        line.delete(line.new(x1,y1+max_diff_up,n,src1+max_diff_up
          ,color=upcol,style=line.style_dotted,extend=extend.right)[1])
        line.delete(line.new(x1,y1-max_diff_dn,n,src1-max_diff_dn
          ,color=dncol,style=line.style_dotted,extend=extend.right)[1])
          
//------------------------------------------------------------------------------
plot(btm ? low[length1] : top ? high[length1] : na,'Circles'
  ,color = btm ? dncol : upcol
  ,style=plot.style_circles
  ,offset=-length1)



//-----------------------------------------------------------------------------}
Editor is loading...
Leave a Comment