This strategy is based on the principle of mean reversion, using the deviation of prices from the moving average to make trading decisions. It goes short when the price deviates above the upper band and goes long when it deviates below the lower band. The position is closed when the price reverts back to the moving average. The core assumption of this strategy is that prices will always revert to the mean level.
The mean reversion strategy is a quantitative trading strategy based on statistical principles, which makes trading decisions by constructing upper and lower bands around the mean price. The strategy has simple logic and clear execution, but attention should be paid to the selection of instruments and optimization of parameters. In practical application, factors such as trend, trading costs, and risk control also need to be considered to improve the robustness and profitability of the strategy. In general, the mean reversion strategy is a common and worthy of in-depth study in the field of quantitative trading.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Mean Regression Strategy", overlay=true) // Define the lookback period for the moving average length = input.int(20, title="Moving Average Length") mult = input.float(1.5, title="Standard Deviation Multiplier") // Calculate the moving average and standard deviation ma = ta.sma(close, length) dev = mult * ta.stdev(close, length) // Calculate upper and lower bands upper_band = ma + dev lower_band = ma - dev // Plot the moving average and bands plot(ma, color=color.blue, linewidth=2, title="Moving Average") plot(upper_band, color=color.red, linewidth=2, title="Upper Band") plot(lower_band, color=color.green, linewidth=2, title="Lower Band") // Entry conditions long_condition = ta.crossover(close, lower_band) short_condition = ta.crossunder(close, upper_band) // Exit conditions exit_long_condition = ta.crossunder(close, ma) exit_short_condition = ta.crossover(close, ma) // Strategy orders if (long_condition) strategy.entry("Long", strategy.long) if (short_condition) strategy.entry("Short", strategy.short) if (exit_long_condition) strategy.close("Long") if (exit_short_condition) strategy.close("Short") // Plot signals on the chart plotshape(series=long_condition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal") plotshape(series=short_condition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")