I did Dave method above but still not working as expected.
//reset profit reached to zero if a new day
if(ta.change(time('1D')))
numberMaxProfitReached := 0
MaxReached := na
if(numberMaxProfitReached < maxNumberProfit)
MaxReached := strategy.position_size > 0 ? math.max(nz(MaxReached, high), high) : strategy.position_size < 0 ? math.min(nz(MaxReached, low), low) : na
if(math.abs(strategy.position_avg_price - MaxReached)*100 >= maxProfit)
numberMaxProfitReached = numberMaxProfitReached + 1
if(shortCond)
strategy.entry("Sell", strategy.short, 1)
else if(longCond)
strategy.entry("Buy", strategy.long, 1)
if (strategy.position_size < 0)
strategy.exit(id="XS STP", profit = maxProfit, loss = nRes*100)
if(buySignal)
MaxReached := strategy.position_size > 0 ? high : low
strategy.close("Sell")
else if(strategy.position_size > 0)
strategy.exit(id="XL STP", profit = maxProfit, loss = nRes*100)
if(sellSignal)
MaxReached := strategy.position_size > 0 ? high : low
strategy.close("Buy")
The idea is to increment maxProfitReached by 1 every time we have hit our maxProfit. However, when I backtested it, it still doesn't increment the maxProfitReached number although conditions are met.