Alıntı Originally Posted by ASAP_ Yazıyı Oku
Abi... Naçizane fikrim: Anlamadığın bir şeyi anlatamazsın.
Yeni çağın en büyük sıkıntısı, veri-bilgi çöplüğü...
Her bulduğunu yapıştırarak ne kendine, ne de okuyanlara bir yararın olacağını sanmıyorum.
"Bu dediklerini uygulayabilecek insanlar" zaten bu veriye kendileri de erişebilirler.
"Her bulduğunu her yere yapıştırarak insanlara bir yararın oluyor mu sence?"Buldukların üzerinde düşünsen, özümzesen, katılım ve katkı sağlasan...
Hem sana, hem de okuyanlara daha yararlı olmaz mı?
Sevgiler, selamlar.
Görüşüne saygı duyuyorum.
bir nevi ARŞİV gibi
ben mi yanlış yere yazıyorum diye tekrar baktım topiğin ismi; Tradingview veri terminal İndikatör/Strateji/Sistem üzerine açılmış

Çok güzel destek dirençleri otamatik bulutyormuş








PHP Code:
//@version=5

indicator('Structured zigzag support&resistance [LM]'shorttitle='Structured zigzag S/R [LM]'overlay=truemax_bars_back=500max_lines_count 500max_boxes_count 500max_labels_count 500)

var 
HIGH 1LOW = -1
var BOXES 'boxes'LINES 'lines'

i_horizontalType            input.string(LINES'Horizontal type'options=[LINESBOXES], group='current S/R setting')   
i_firstDepth                input.int(34'Depth'group='current S/R setting')
i_firstDeviation            input.float(6.0'Deviation'group='current S/R setting')
i_firstColor                input.color(color.blue'Color'group='current S/R setting')
i_extendLines               input.bool(true'Extend lines'group='current S/R setting')
i_lineCount                 input.int(6'Line count'group='current S/R setting')
i_boxHighColor              input.color(color.green'Diagonal high color'group='diagonal line setting'inline='15')
i_boxLowColor               input.color(color.red'Diagonal low color'group='diagonal line setting'inline='15')

i_diagonalThickness         input.int(1'Line thickness'minval=1group='diagonal line setting'inline='12')
i_diagonalLineStyle         input.string(line.style_dashed'Line style'options=[line.style_dottedline.style_solidline.style_dashed], group='diagonal line setting'inline='12')
i_diagonalColor             input.color(color.gray'Diagonal color'group='diagonal line setting'inline='13')
i_zigzagCount               input.int(200'Zigzag count'group='diagonal line setting'inline='14')
i_diagonalHighColor         input.color(color.green'Diagonal high color'group='diagonal line setting'inline='15')
i_diagonalLowColor          input.color(color.red'Diagonal low color'group='diagonal line setting'inline='15')
i_diagonalSRLineCount       input.int(2'Diagonal S/R line count'group='diagonal line setting'inline='16')
i_showDiagonalSRLines       input.bool(true'Show diagonal S/R lines'group='diagonal line setting'inline='16')

var 
zigZagArray = array.new_line()
var 
zigZagBoxArray = array.new_box()
var 
zigZagLabelArray = array.new_label()
var 
diagonalArray = array.new_line()
var 
diagonalSRArray = array.new_line()
var 
diagonalLabelArray = array.new_label()

var 
valueArray = array.new_float()
var 
typeArray = array.new_int()
var 
indexArray = array.new_int()

f_isUpCandle(_index) =>
    
open[_index] <= close[_index]
    
f_drawDiagonalLine(_x1_x2_y1_y2_lineColor_lineThickness_lineStyle_extend) =>
    
line.new(x1=_x1y1=_y1x2=_x2y2=_y2color=_lineColorstyle=_lineStylewidth=_lineThicknessextend=_extend
    
f_drawDiagonalLabel(_xValue_yValue_text_labelColor_down) =>
    
adjustedYPosition _down _yValue 1.005_yValue 0.995
    dlb 
label.new(_xValueadjustedYPosition _textxloc.bar_indexyloc.price#00000000, label.style_none, _labelColor)
    
if array.size(diagonalLabelArray) == i_zigzagCount
        label
.delete(array.shift(diagonalLabelArray))
    array.
push(diagonalLabelArraydlb)
    
f_createDiagonalLabelText(_yValue) =>
    
index = array.size(valueArray) - 3
    
if (index >= 0)
        
previousType = array.get(typeArrayindex)
        
previousValue =  array.get(valueArrayindex)
        
previousType == HIGH ?
          
previousValue <= _yValue 'HH'"LH" :
          
previousValue <= _yValue 'HL'"LL"
    
else
        
''

f_drawDiagonalLines(_x1_x2_y1_y2_lineColor_lineThickness_lineStyle_lineCount_lineArray_extend) =>
    
line l f_drawDiagonalLine(_x1_x2_y1_y2_lineColor_lineThickness_lineStyle_extend)

    if array.
size(_lineArray) == _lineCount
        line
.delete(array.shift(_lineArray))
    array.
push(_lineArrayl)
    
f_addValuesToArrays(_barIndex_yValue_type) =>
    if array.
size(valueArray) == i_zigzagCount
        
array.shift(valueArray)
        array.
shift(indexArray)
        array.
shift(typeArray)
        
    array.
push(valueArray_yValue)
    array.
push(indexArray_barIndex)
    array.
push(typeArray_type)
    

f_getLastZigzag() =>
    
int size = array.size(valueArray) - 1
    x1 
= array.get(indexArraysize)
    
y1 = array.get(valueArraysize)
    
type = array.get(typeArraysize)
    [
x1y1type]
    


f_addDiagonalLine(_x2_y2) =>
    
hasAtleastOnerecord = array.size(valueArray) >= 1
    
if (hasAtleastOnerecord)
        [
x1y1type] = f_getLastZigzag()
        
f_drawDiagonalLines(x1_x2y1_y2i_diagonalColori_diagonalThicknessi_diagonalLineStylei_zigzagCountdiagonalArrayextend.none)
        
f_drawDiagonalSRLine(_xValue_yValue) =>
    
index = array.size(valueArray) - 2
    
if (i_showDiagonalSRLines and index >= 0)
        
previousType = array.get(typeArrayindex)
        
previousValue =  array.get(valueArrayindex)
        
previousXValue =  array.get(indexArrayindex)
        
diagonalSRColor =previousType == HIGH i_diagonalHighColori_diagonalLowColor
        f_drawDiagonalLines
(previousXValue_xValuepreviousValue_yValuediagonalSRColori_diagonalThicknessi_diagonalLineStylei_diagonalSRLineCountdiagonalSRArrayextend.right)


f_zigzag(_depth_deviation) =>
    var 
lw 1
    
var hg 1
    lw 
:= lw 1
    hg 
:= hg 1
    lowestValue 
= -ta.lowestbars(_depth)
    
highestValue = -ta.highestbars(_depth)
    
lowing lw == lowestValue or low low[lowestValue] > _deviation syminfo.mintick
    highing 
hg == highestValue or high[highestValue] - high _deviation syminfo.mintick
    lh 
ta.barssince(not highing)
    
ll ta.barssince(not lowing)
    
down lh ll
    lower 
low[lw] > low[lowestValue]
    
higher high[hg] < high[highestValue]
    if 
lw != lowestValue and (not down[1] or lower)
        
lw := lowestValue hg lowestValue 0
        lw
    
if hg != highestValue and (down[1] or higher)
        
hg := highestValue lw highestValue 0
        hg
    x1 
down lw hg
    y1 
down low[lw] : high[hg]
    
lb down label.style_label_up label.style_label_down
    
[down != down[1], x1y1lwhgdown]


f_drawLine(_x1_x2_yValue_lineColor) =>
    
line.new(x1=_x1y1=_yValuex2=_x2y2=_yValuecolor=_lineColorstyle=line.style_dottedwidth=2)
    
f_drawBox(_x1_x2_high_low_boxColor) =>
     
box.new(_x1_high_x2_lowbgcolor=_boxColorborder_style=line.style_dashedborder_color=_boxColor)

f_drawLabelCurrent(_x_y_textColor) =>
    
label.new(_x_y'         ' str.tostring(_y), xloc.bar_indexyloc.price#00000000, label.style_none, _textColor)

f_drawLabel(_yValue_xValue_labelColor_text_showLabels) =>
    var 
label lb na
    label
.delete(lb)

    if 
_showLabels and not na(_yValue)
        
lb := label.new(x=_xValuey=_yValuetext=_texttextcolor=_labelColorstyle=label.style_nonexloc=xloc.bar_timeyloc=yloc.price)
        
lb
    lb

f_extendArray
(_lineArray_labelArray_extendLines) =>
    if array.
size(_lineArray) > 0
        
for _i = array.size(_lineArray) - 1 to 0 by 1

            x2 
line.get_x2(array.get(_lineArray_i))
            
yValue line.get_y1(array.get(_lineArray_i))

            if 
_extendLines or bar_index == x2 and not(high yValue and low yValue)
                
line.set_x2(array.get(_lineArray_i), bar_index)
                
label.set_x(array.get(_labelArray_i), bar_index)
                
f_extendBoxArray(_boxArray_labelArray) =>
    if array.
size(_boxArray) > 0
        
for _i = array.size(_boxArray) - 1 to 0 by 1
            boxId 
= array.get(_boxArray_i)
            
box.set_right(boxIdbar_index)
            
label.set_x(array.get(_labelArray_i), bar_index)


f_addLines(_switch_x1_y1_lw_hg_down_colorLine) =>
    if 
_switch
        line l 
na
        label lab 
na

        nx 
_down _hg _lw
        yValue 
_down high[nx] : low[nx]
        
x1 bar_index nx
        x2 
bar_index

        
if _down != _down[1] and not na(yValue)
            
f_addDiagonalLine(x1yValue)
            
f_drawDiagonalSRLine(x1yValue)
            
int type _down HIGH LOW
            f_addValuesToArrays
(x1yValuetype)
            
:= f_drawLine(x1x2yValue_colorLine)
            
lab := f_drawLabelCurrent(x2yValue_colorLine)
        
            
        if array.
size(zigZagArray) == i_lineCount
            line
.delete(array.shift(zigZagArray))
            
label.delete(array.shift(zigZagLabelArray))
        
diagonalLabelColor _down i_diagonalHighColori_diagonalLowColor
        f_drawDiagonalLabel
(x1yValuef_createDiagonalLabelText(yValue), diagonalLabelColor_down)
        array.
push(zigZagArrayl)
        array.
push(zigZagLabelArraylab)
        
f_addBoxes(_switch_x1_y1_lw_hg_down) =>
    if 
_switch
        box b 
na
        label lab 
na

        nx 
_down _hg _lw
        yValue 
_down high[nx] : low[nx]
        
x1 bar_index nx
        x2 
bar_index
        yValueHigh 
_downhigh[nx]: f_isUpCandle(nx)? open[nx] : close[nx]
        
yValueLow =  not _downlow[nx]: f_isUpCandle(nx)? close[nx] : open[nx]
        
        
boxColor color.new(_down i_boxHighColori_boxLowColor70)

        if 
_down != _down[1] and not na(yValue)
            
f_addDiagonalLine(x1yValue)
            
f_drawDiagonalSRLine(x1yValue)
            
int type _down HIGH LOW
            f_addValuesToArrays
(x1yValuetype)
            
:= f_drawBox(x1x2yValueHighyValueLowboxColor)
            
lab := f_drawLabelCurrent(x2yValueboxColor)
        
            
        if array.
size(zigZagBoxArray) == i_lineCount
            box
.delete(array.shift(zigZagBoxArray))
            
label.delete(array.shift(zigZagLabelArray))
        
diagonalLabelColor _down i_diagonalHighColori_diagonalLowColor
        f_drawDiagonalLabel
(x1yValuef_createDiagonalLabelText(yValue), diagonalLabelColor_down)
        array.
push(zigZagBoxArrayb)
        array.
push(zigZagLabelArraylab)


// current functions           
[switch1x11y11lw1hg1down1] = f_zigzag(i_firstDepthi_firstDeviation)

if (
i_horizontalType == LINES)
    
f_addLines(switch1x11y11lw1hg1down1i_firstColor)
    
f_extendArray(zigZagArrayzigZagLabelArrayi_extendLines)
else
    
f_addBoxes(switch1x11y11lw1hg1down1)
    
f_extendBoxArray(zigZagBoxArrayzigZagLabelArray