A estratégia de cruzamento da média móvel é uma estratégia quantitativa de negociação

Autora:ChaoZhang, Data: 22-12-2023 13:28:01
Tags:

img

Resumo

A estratégia de cruzamento da média móvel é uma estratégia quantitativa de negociação baseada em médias móveis simples (SMA).

Especificamente, esta estratégia calcula a SMA de 9 períodos e 45 períodos. Quando o preço cruza acima de ambas as linhas SMA, um sinal de compra é gerado. Quando o preço cruza abaixo de ambas as linhas, um sinal de venda é acionado.

Estratégia lógica

A lógica central desta estratégia baseia-se nos princípios golden cross e dead cross das médias móveis. As médias móveis podem efetivamente filtrar o ruído do mercado e indicar grandes mudanças de tendência.

Em particular, esta estratégia usa as médias móveis simples de 9 períodos e 45 períodos. A linha de 9 períodos representa tendências de curto prazo, enquanto a linha de 45 períodos capta movimentos de longo prazo. Quando o preço cruza acima de ambas as linhas SMA, ele indica que o preço está em canais ascendentes tanto a curto quanto a longo prazo, desencadeando assim uma entrada longa.

Do ponto de vista do código, a estratégia primeiro calcula os valores de SMA de 9 períodos e 45 períodos. Em seguida, usa as funções ta.crossover e ta.crossunder para detectar cruzes douradas e cruzes mortas entre as duas linhas MA. Quando os sinais de compra e venda são acionados, as funções de gráficos desenham triângulos e triângulos invertidos no gráfico de preços.

Além disso, a lógica de stop-loss é implementada para gerenciar saídas de negociações. Especificamente, os preços altos e baixos da barra anterior são extraídos como o preço de stop-loss após a abertura de novas negociações. Isso permite que a estratégia bloqueie ganhos e evite grandes perdas.

Análise das vantagens

  • A configuração de média móvel dupla capta mudanças de tendência de médio a longo prazo, enquanto filtra ruídos de curto prazo, melhorando a qualidade do sinal.

  • O mecanismo de stop-loss controla eficazmente os riscos e bloqueia os lucros.

  • Lógica simples e fácil de implementar, adequada para iniciantes.

  • Alta utilização do capital para ganhos compostos.

Análise de riscos

  • As estratégias de MA dupla tendem a gerar surpresas e sinais inválidos durante mercados agitados.

  • Colocação de stop loss conservadora incapaz de rastrear as tendências de forma eficaz.

  • A selecção de parâmetros subótima pode conduzir a excesso de negociação ou a uma frequência de negociação insuficiente.

  • Incapaz de se adaptar a grandes inversões de tendência.

Soluções:

  1. Otimizar os parâmetros de MA para reduzir os falsos sinais

  2. Implementar paradas dinâmicas de tendência

  3. Adicionar filtros usando outros indicadores

  4. Desempenho manual em reversões importantes

Orientações de otimização

Outras melhorias da estratégia:

  1. Usar MAs adaptativos ou exponenciais para melhor captar tendências.

  2. Adicionar um filtro de volatilidade para evitar sinais falsos durante os mercados variáveis.

  3. Realizar a otimização dos parâmetros para obter as melhores combinações de parâmetros.

  4. Incorporar mecanismos de acompanhamento da tendência na lógica de stop-loss.

  5. Adicionar análise suporte-resistência para evitar sinais em torno dos níveis-chave.

  6. Aproveitar o aprendizado de máquina para filtrar ainda mais a qualidade do sinal.

Conclusão

O sistema de cruzamento da média móvel é uma abordagem simples, mas eficaz, de seguir tendências. Ao filtrar o ruído e rastrear tendências de médio prazo, ele gera sinais de qualidade. Com perdas de parada adequadas, permite a negociação de tendências gerenciadas pelo risco. A lógica simples também o torna ideal para iniciantes.


/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA Crossover Strategy", overlay=true)

// Input parameters
fast_length = input(9, title="Fast SMA Length")
slow_length = input(45, title="Slow SMA Length")

// Calculate moving averages
fast_sma = ta.sma(close, fast_length)
slow_sma = ta.sma(close, slow_length)

// Buy condition
buy_condition = ta.crossover(close, fast_sma) and ta.crossover(close, slow_sma)

// Sell condition
sell_condition = ta.crossunder(close, fast_sma) and ta.crossunder(close, slow_sma)

// Calculate stop loss levels
prev_low = request.security(syminfo.tickerid, "1D", low[1], lookahead=barmerge.lookahead_on)
prev_high = request.security(syminfo.tickerid, "1D", high[1], lookahead=barmerge.lookahead_on)

// Plot signals on the chart
plotshape(buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Strategy exit conditions
long_stop_loss = sell_condition ? prev_low : na
short_stop_loss = buy_condition ? prev_high : na

strategy.exit("Long Exit", from_entry="Long", when=sell_condition, stop=long_stop_loss)
strategy.exit("Short Exit", from_entry="Short", when=buy_condition, stop=short_stop_loss)

strategy.entry("Long", strategy.long, when=buy_condition)
strategy.entry("Short", strategy.short, when=sell_condition)


Mais.