I would love your help.
I'm coding a trading strategy that goes **long** on the break of a 40-day high, and closes that long position when a trailing stop is hit. That trailing stop is 3*ATR which begins under the low of the entry candle and trails upwards.
My current problem is that I don't know how to 'fix' the ATR level when it trails up, to stop it going back down when the price goes down. Currently, when the price goes down, *the trailing stop also goes down with it*, meaning the stop is never hit! (please see the black lines on the uploaded image)
Do you know how I could code this so the trailing stop moves higher when the price goes higher, *but stays fixed when the price goes down* so the stop level can be hit to close the position?
Many thanks in advance for your help - Dave.
//@version=5 strategy("Donchian Breakout - Trading",overlay=true, initial_capital=100000,currency=currency.GBP) //Inputs DonchHighLength=input.int(title="DonchHighLength",defval=20,step=10) DonchLowLength=input.int(title="DonchLowLength",defval=20,step=10) ATRLength=input.int(title="ATRLength", defval=20, step=1) ATRx=input.int(title="ATRMultiple", defval=4, step=1) //Variables DonchHigh=ta.highest(close[1],DonchHighLength) DonchLow=ta.lowest(close[1],DonchLowLength) ATR=ta.atr(ATRLength) ATRLongStop=low-(ATR*ATRx) ATRShortStop=high+(ATR*ATRx) //Plot plot(DonchHigh,"Long", color.green) plot(DonchLow,"Short", color.red) plot(ATRLongStop, "LongStop", color.black) plot(ATRShortStop, "ShortStop", color.black) //Entry EnterLong=close>DonchHigh EnterShort=close<DonchLow // Calculate position size RiskEquity=0.02*strategy.equity RiskPerTrade=EnterLong?((strategy.position_avg_price-ATRLongStop)*syminfo.pointvalue):((ATRShortStop-strategy.position_avg_price)*syminfo.pointvalue) PosSize=RiskEquity/RiskPerTrade //Entry orders if strategy.position_size==0 if EnterLong strategy.entry("Long",strategy.long,qty=PosSize) if strategy.position_size==0 if EnterShort strategy.entry("Short",strategy.short,qty=PosSize) //Close strategy.position_size strategy.close(id="Long", when=close<ATRLongStop[1]) strategy.close(id="Short", when=close>ATRShortStop[1])