
A estratégia baseia-se no princípio da regressão da média, usando situações em que o preço se desvia da média móvel para tomar decisões de negociação. Quando o preço se desvia para cima, ele faz um curto, quando o preço se desvia para baixo, ele faz mais, e quando o preço retorna para a média móvel, ele é zero. O núcleo da estratégia é a suposição de que o preço sempre retornará ao nível da média.
A estratégia de regressão de valor médio é uma estratégia de negociação quantitativa baseada em princípios estatísticos para tomar decisões de negociação por meio da construção de um preço de valor médio para cima ou para baixo. A lógica da estratégia é simples, a execução é clara, mas é preciso prestar atenção à seleção da variedade e à otimização dos parâmetros. Na aplicação prática, também é necessário considerar fatores como tendências, custos de negociação e controle de risco para melhorar a robustez e a lucratividade da estratégia.
/*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")