A estratégia de rastreamento da média móvel é uma estratégia de seguimento de tendências baseada em média móvel simples. Ela usa uma média móvel simples de 200 dias para determinar a direção da tendência do preço. Quando o preço cruza acima da média móvel, ele vai longo. Quando o preço cruza abaixo da média móvel, ele vai curto. Esta estratégia rastreia a tendência para lucro.
A estratégia baseia-se nos seguintes princípios:
A estratégia rastreia a tendência movendo a direção média e realiza negociações reversas quando ocorre o cruzamento da MA, para lucrar com a tendência.
A estratégia apresenta as seguintes vantagens:
Há também alguns riscos:
Os riscos podem ser combatidos através das seguintes otimizações:
A estratégia pode ser ainda melhorada nos seguintes aspectos:
Otimizar o parâmetro do período de MA usando métodos como a Análise Walk Forward para encontrar os parâmetros ideais.
Adicionar uma MA de curto prazo para acompanhar as tendências de longo e curto prazo.
Incorporar indicadores de tendência como o MACD para melhorar a identificação da inversão de tendência.
Adicione mecanismos de stop loss como trailing stop loss para controlar a perda de uma única negociação.
Teste de robustez em diferentes produtos e períodos de tempo.
Usar machine learning para otimização adaptativa de parâmetros.
A estratégia de rastreamento da média móvel é uma estratégia simples e prática de seguir tendências. Ela tem uma lógica clara e é fácil de implementar para capturar tendências. Mas também tem algumas fraquezas, como ser insensível a correções de curto prazo e controle de risco fraco. Podemos otimizar a estratégia a partir de vários aspectos para torná-la mais robusta, melhor parametrizada e com uma gestão de risco mais forte.
/*backtest start: 2023-09-19 00:00:00 end: 2023-10-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MA X 200 BF", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0) /////////////// Time Frame /////////////// testStartYear = input(2012, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0) testStopYear = input(2019, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0) testPeriod() => true ///////////// MA 200 ///////////// slowMA = sma(close, input(200)) /////////////// Strategy /////////////// long = close > slowMA short = close < slowMA last_long = 0.0 last_short = 0.0 last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) /////////////// Execution /////////////// if testPeriod() strategy.entry("Long Entry", strategy.long, when=long_signal) strategy.entry("Short Entry", strategy.short, when=short_signal) strategy.exit("Long Ex", "Long Entry") strategy.exit("Short Ex", "Short Entry") /////////////// Plotting /////////////// plot(slowMA, color = long ? color.lime : color.red, linewidth=2) bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80) bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)