The ARGO Range Breakout Strategy is a 4-hour range trading system inspired by channel breakout principles. It generates trading signals within a 4-hour timeframe to capture significant price movements.
The strategy first calculates the highest high (upBound) and lowest low (downBound) over a defined period to form the channel range. It then computes the midline, upper band and lower band of the Bollinger Channel. Buy and sell signals are triggered when the channel direction changes.
Specifically, the strategy computes the upBound and downBound over N periods (default 47). It then sets a ratio point (default 1) and tolerance tol (default 1000), to calculate the upper limit limitBoundUp and lower limit limitBoundDown of the channel. A buy signal is triggered when the price breaks above the lower limit. A sell signal is triggered when the price breaks below the upper limit.
In addition, stop loss and take profit conditions are configured. The stop loss for long trades is set near the lower limit, while that for short trades is near the upper limit. The take profit is based on the input target profit/loss ratio.
The ARGO Range Breakout Strategy is a 4-hour medium-term trading system based on Bollinger Channel and breakout principles. Compared to short-term trading, it focuses more on catching trend reversals on medium-term timeframes. With proper optimization, it can adapt to different market environments and achieve significant profits while controlling risk. The strategy balances trend following and risk management. It is a recommended medium-term breakout trading system.
/*backtest start: 2023-01-01 00:00:00 end: 2023-10-06 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // strategy("ARGO_BAND-STRATEGY", overlay=true,default_qty_value=10000,scale=true,initial_capital=100,currency=currency.USD) // A 4hours Breakout Strategy work in progres..it's a starting point, thanks to all tradingview community //How to use: test it only on gbpjpy 240 min, wait the end of the candle to place next order, red and blue dots are short and long stop orders, Targets are Upper and lowerBands. Test it and enjoy but use at your own risk.. //2016 © F.Peluso risk=input(title="Risk", defval=1) length = input(title="Length", minval=1, maxval=1000, defval=47) stopBound=input(title="Previous",defval=10) upBound = highest(high, length) downBound = lowest(low, length) point=1 tol=1000 stopT=input(title="Stop", defval=5,minval=1, maxval=5) dev =input(title="Tolerance",defval=2,minval=1, maxval=5) limitBoundUp=( highest(high, length))*(point-(dev/tol)) limitBoundDown=downBound/(point-(dev/tol)) plot(limitBoundUp[1],linewidth = 3,style = circles, color = navy,trackprice=true),transp=0 plot(limitBoundDown[1],linewidth = 3,style = circles, color = red,trackprice=true,transp=0) mezzalinea=((upBound+downBound)/2) // Color Bands colo = ((close>limitBoundUp[1]) ? blue : (close<upBound[1]) ? white : na) UpB = plot(upBound[1], title="Upper Bound", style=linebr, linewidth=1, color=colo) DownB = plot(limitBoundUp[1] ,title="Lower Bound", style=linebr, linewidth=2, color=colo) fill(UpB, DownB, color=colo, transp=90) plot(limitBoundUp[2]/(point+(stopT/tol)),color=colo) coloS = ((close<limitBoundDown[1]) ? red : (close>downBound[1]) ? white : na) DB = plot(downBound[1], title="Upper Bound", style=linebr, linewidth=1, color=coloS) DoB = plot(limitBoundDown[1] ,title="Lower Bound", style=linebr, linewidth=2, color=coloS) fill(DB, DoB, color=coloS, transp=90) plot(limitBoundDown[2]*(point+(stopT/tol)),color=coloS) // Strategy past=input(title="Past", defval=5) buy=(crossover(close,limitBoundUp)) closebuy=cross(high[past],upBound[0]) stopbuy = limitBoundUp[2]/(point+(stopT/tol)) sell=crossunder(close,limitBoundDown) closesell=cross(low[past],downBound[0]) if (not na(close[length])) if (buy) strategy.entry("ChBrkLE", strategy.long,stop=limitBoundUp - syminfo.mintick,comment="Long I") strategy.close("ChBrkLE",when=closebuy) if (not na(close[length])) if (sell) strategy.entry("ChBrkSE", strategy.short,stop=limitBoundDown + syminfo.mintick,comment="Short I") strategy.close("ChBrkSE",when=closesell) Target =input(0) * 10 Stop = input(90) * 10 Trailing = input(40) * 10 CQ = 100 TPP = (Target > 0) ? Target : na SLP = (Stop > 0) ? Stop : na TSP = (Trailing > 0) ? Trailing : na strategy.exit("Out Short", "ChBrkSE", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP) strategy.exit("Out Long", "ChBrkLE", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)