The moving average percentage reversal strategy generates trading signals by calculating the percentage differential between price and a moving average.
Trades are taken when the percentage gap between price and the MA reaches preset levels.
Specifically, the logic is:
E.g. with N=14, upper limit=5%, lower limit=-3%:
Parameters N, upper/lower limits can adjust sensitivity.
The MA percentage strategy uses the percentage gap between price and MA to identify potential turning points, with a BREAK approach. Adjustable parameters can adapt to varying market conditions, but lag and whipsaws are risks needing mitigation.
/*backtest start: 2023-08-14 00:00:00 end: 2023-09-13 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 30/07/2018 // Percent difference between price and MA // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="Percent difference between price and MA Backtest") Length = input(14, minval=1) SellZone = input(0.54, minval=0.01, step = 0.01) BuyZone = input(0.03, minval=0.01, step = 0.01) reverse = input(false, title="Trade reverse") hline(BuyZone, color=green, linestyle=line) hline(SellZone, color=red, linestyle=line) xSMA = sma(close, Length) nRes = abs(close - xSMA) * 100 / close pos = iff(nRes < BuyZone, 1, iff(nRes > SellZone, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nRes, color=blue, title="PD MA")