
La estrategia se basa en el principio de la regresión a la media, que utiliza la desviación de los precios de las medias móviles para tomar decisiones comerciales. Cuando los precios se desvían hacia arriba de la vía superior, hacen falta, cuando se desvían hacia abajo de la vía inferior, hacen más, y cuando los precios regresan a la media móvil, están en equilibrio. El núcleo de esta estrategia es la suposición de que los precios siempre regresarán al nivel de la media.
La estrategia de regresión a la media es una estrategia de comercio cuantitativa basada en principios estadísticos para tomar decisiones de comercio mediante la construcción de precios y valores medios. La lógica de la estrategia es simple, la ejecución es clara, pero hay que tener en cuenta la selección de variedades y la optimización de los parámetros. En la aplicación práctica, también se necesitan factores como la tendencia, los costos de negociación y el control del riesgo para mejorar la solidez y la rentabilidad de la estrategia.
/*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")