Смена индикатора в стратегию

суть проблемы - не так давно сел изучать сей язык и написал для себя индикатор, в итоге не могу переделать его в стратегию. По поводу скрипта - он строит уровни(зеленый ниже текущей цены и красный выше текущей цены) в зависимости от параметра "Spread". Мне нужно чтобы в итоге скрипт сам открывал позицию от уровней(от зеленых на покупку, от красных на продажу) с небольшой погрешностью(чуть выше от зеленого уровня и чуть ниже от красного), после чего закрывал эту позицию у противоположного уровня. Т.е если мы сейчас находится у зеленого, то необходимо открыть покупку и закрыть(продать), когда дойдем до красного. Буду благодарен любой помощи

// © test

//@version=5
indicator("ATR-emt-helper", overlay=true)

//customizable var
spread = input(title="Spread", defval=1.0)
st  = input(title="SL%", defval=0.005)
llenght=input(title="Line lenght", defval=150)
backtest=input(title="Backtest",defval=true)
atrm=input(title="ATR multiplier", defval=3.5)
color LSL = input(color.new(color.green, 50), "Low Stop Loss zone color")
color HSL = input(color.new(color.red, 50), "High Stop Loss zone color")
//clarifying for 15m+ tf
//lowspread = input(title="Specifying spread(lower)", defval=0.5)
//latrm=input(title="LATR multiplier", defval=0.66)

//dummy var
var pricedelta=1.0
var highlvl=1.0
var lowlvl=1.0

taatr=ta.atr(1000)
//ltaatr=taatr*latrm

//atr help label
if barstate.islast
    label.new(bar_index, 0 , str.tostring(taatr*atrm), yloc=yloc.abovebar, style=label.style_label_down, color=color.red)
    
    
emt =  (high<high[1] and low>low[1])? 0 : ((high - high[1]) > (low[1] - low) ? math.abs(high - high[1]) : math.abs(low[1] - low)) 
//bar-size choose
if (emt>spread) 
    //green bar
    if (open[0]<close[0])
        //treshold count    
        pricedelta:= high[0]-open[0]
        highlvl:=high[0]+pricedelta
        lowlvl:=open[0]-pricedelta
        
        //draw
        
        if backtest==false
            a_allLines = line.all
            if array.size(a_allLines) > 7
              for i = 0 to array.size(a_allLines) - 7
                line.delete(array.get(a_allLines, i))
        
        lb=line.new(bar_index , open, bar_index+llenght , open, color=color.gray, extend = extend.none)
        hb=line.new(bar_index , high, bar_index+llenght , high, color=color.gray, extend = extend.none)
        ll=line.new(bar_index , lowlvl, bar_index+llenght , lowlvl, color=color.green, extend = extend.none)
        hl=line.new(bar_index , highlvl, bar_index+llenght , highlvl, color=color.red, extend = extend.none)
        ls=line.new(bar_index , lowlvl-lowlvl*st, bar_index+llenght , lowlvl-lowlvl*st, color=color.green, extend = extend.none)
        hs=line.new(bar_index , highlvl+highlvl*st, bar_index+llenght , highlvl+highlvl*st, color=color.red, extend = extend.none)
        linefill.new(ll,ls,color=LSL)
        linefill.new(hl,hs,color=HSL)
        
    //red bar
    else if (open[0]>close[0])
        //treshold count
        pricedelta:= open[0]-low[0]
        highlvl:=open[0]+pricedelta
        lowlvl:=low[0]-pricedelta
        
        //draw
        if backtest==false
            a_allLines = line.all
            if array.size(a_allLines) > 7
              for i = 0 to array.size(a_allLines) - 7
                line.delete(array.get(a_allLines, i))
        
        lb=line.new(bar_index , low, bar_index+llenght , low, color=color.gray, extend = extend.none)
        hb=line.new(bar_index , open, bar_index+llenght , open, color=color.gray, extend = extend.none)
        ll=line.new(bar_index , lowlvl, bar_index+llenght , lowlvl, color=color.green, extend = extend.none)
        hl=line.new(bar_index , highlvl, bar_index+llenght , highlvl, color=color.red, extend = extend.none)
        ls=line.new(bar_index , lowlvl-lowlvl*st, bar_index+llenght , lowlvl-lowlvl*st, color=color.black, extend = extend.none)
        hs=line.new(bar_index , highlvl+highlvl*st, bar_index+llenght , highlvl+highlvl*st, color=color.black, extend = extend.none)
        linefill.new(ll,ls,color=LSL)
        linefill.new(hl,hs,color=HSL)
        
        
        
        
sma1=input(title="1SMA-Peridod", defval=9)
sma2=input(title="2SMA-Period", defval=34)
sma3=input(title="3SMA-Period", defval=100)
sma4=input(title="4SMA-Period", defval=200)

plot(ta.sma(close, sma1), color=color.orange, linewidth=1)
plot(ta.sma(close, sma2), color=color.red, linewidth=1)
plot(ta.sma(close, sma3), color=color.yellow, linewidth=2)
plot(ta.sma(close, sma4), color=color.green, linewidth=4) 

Ответы (0 шт):