This strategy is based on the alternating operations of the SAR indicator across different timeframes. The strategy calculates the SAR indicator in 15-minute, daily, weekly and monthly timeframes, and trades in the weekly timeframe. It goes long when the weekly SAR crosses above the highest price and goes short when crossing below the lowest price.
The Parabolic SAR (SAR) indicator represents parabolic SAR, which judges the trend direction by calculating the relationship between the current price and historical prices. When the price breaks through the SAR point, it indicates a trend reversal.
This strategy calculates SAR values in 15-minute, daily, weekly and monthly timeframes, respectively. The formula is:
SAR = Previous SAR + Acceleration Factor * (Highest Price - Previous SAR) # Uptrend
SAR = Previous SAR + Acceleration Factor * (Lowest Price - Previous SAR) # Downtrend
The initial acceleration factor is set at 0.02, and will gradually increase up to a maximum of 0.2 as the trend extends.
The strategy generates trading signals in the weekly timeframe. It goes long when the weekly SAR crosses above the highest price, with SAR value as the stop loss. It goes short when SAR crosses below the lowest price, with SAR as the stop loss.
By determining the trend on a higher timeframe and setting a more precise stop loss level, the strategy aims to profit more efficiently.
The strategy has clear logic of riding trends on higher timeframes using SAR indicator to locate reversals and set stop loss. Entry signals and risk management could be further improved. With optimizations in areas like entries, stops and position sizing, it can become more stable and profitable.
/*backtest start: 2023-01-09 00:00:00 end: 2024-01-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy ("SAR alternating timeframe", overlay=true) //resolution res1=input("15", title="Resolution") res2=input("D", title="Resolution") res3=input("W", title="Resolution") res4=input("M", title="Resolution") //output functions out = sar(0.02,0.02,0.2) // request.security SAR1 = request.security(syminfo.tickerid, res1, out) SAR2 = request.security(syminfo.tickerid, res2, out) SAR3 = request.security(syminfo.tickerid, res3, out) SAR4 = request.security(syminfo.tickerid, res4, out) //Plots //plot(SAR1 , title="SAR 15", color = red, linewidth = 2) //plot(SAR2 , title="SAR D", color = green, linewidth = 3) plot(SAR3 , title="SAR W", color =blue, linewidth = 4) //plot(SAR4 , title="SAR W", color =purple, linewidth = 5)) ///////////////////////////////////////////////////////////////////// //trade if (SAR3 >= high) strategy.entry("ParLE", strategy.long, stop=SAR3, comment="ParLE") else strategy.cancel("ParLE") if (SAR3 <= low) strategy.entry("ParSE", strategy.short, stop=SAR3, comment="ParSE") else strategy.cancel("ParSE")