Untitled
unknown
plain_text
a year ago
4.6 kB
17
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