Estratégia de negociação quantitativa baseada na média móvel


Data de criação: 2024-01-16 17:37:13 última modificação: 2024-01-16 17:37:13
cópia: 0 Cliques: 711
1
focar em
1617
Seguidores

Estratégia de negociação quantitativa baseada na média móvel

Visão geral

Esta estratégia é uma estratégia típica de acompanhamento de tendências através da computação de médias móveis de diferentes períodos e julgar a formação de sinais de negociação de suas forcas de ouro e forcas mortas. Utiliza principalmente a média móvel ponderada WMA e a média móvel adaptada ALMA.

Princípio da estratégia

A estratégia primeiro calcula as médias médias móveis de curto e médio prazo do preço, ma1 e ma2, onde ma1 tem um ciclo mais curto e ma2 tem um ciclo mais longo. Em seguida, calcula a diferença entre ma1 e ma2 em ma3 e calcula a média móvel de suavização de ma4 em ma3. Quando a ma3 atravessa a ma4, gera um sinal de compra, e quando a ma3 atravessa o sinal de venda.

Assim, a ma3 reflete a direção da tendência de médio e curto prazo do preço, a ma4 filtra parte do ruído na ma3 e forma um sinal de negociação mais confiável. A relação periódica de ma1 e ma2 é definida pelo parâmetro maLen, permitindo aos usuários obter a melhor combinação de parâmetros de acordo com os diferentes ciclos de ajuste do mercado.

Vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. Usando a média móvel adaptada ALMA e a média móvel ponderada WMA, é possível melhor se adaptar às mudanças do mercado.

  2. A aplicação de métodos de média de preços multicíclicos torna os sinais de negociação mais confiáveis.

  3. Os parâmetros são ajustáveis e os usuários podem otimizá-los para diferentes mercados.

  4. A estratégia é clara, fácil de entender e de implementar.

  5. O mercado de ações é um mercado de ações que pode ser bem-sucedido tanto em mercados de tendência quanto em mercados de turbulência.

Riscos e soluções

A estratégia também apresenta alguns riscos:

  1. Em situações de alta volatilidade, a estratégia de média móvel pode gerar problemas de incerteza e atraso nos sinais de negociação. Pode ser otimizada ajustando o período e os parâmetros da média móvel.

  2. A estratégia de acompanhamento de tendência pura é propensa a perdas durante a fase de correção de choque. Pode ser combinada com outros indicadores como condições de filtragem.

  3. A configuração inadequada dos parâmetros pode levar a excesso de negociação em períodos muito curtos. Os parâmetros apropriados devem ser selecionados com cuidado.

Otimização de Estratégia

A estratégia pode ser melhorada em vários aspectos:

  1. Testar mais tipos de médias móveis, como médias móveis lineares, médias móveis ponderadas, etc.

  2. Aumentar o mecanismo de stop loss baseado em indicadores como a volatilidade e os canais de preços.

  3. Combinação de análises de vários períodos de tempo com parâmetros de otimização de rolagem.

  4. Adição de algoritmos de aprendizagem de máquina para otimização automática de parâmetros.

Resumir

Esta estratégia baseia-se em uma média móvel para formar um sinal de negociação. A aplicação de uma média móvel adaptada e de uma média de preços de períodos de tempo múltiplos torna o sinal mais preciso e confiável. Os parâmetros da estratégia são ajustáveis, abrangentes, simples e claros, têm um bom desempenho em mercados de tendência e um alto valor de combate.

Código-fonte da estratégia
/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Oracle Move Strategy", overlay=true)

maLen = input(30, "ma period")
mode =  input(defval="wma", options=["alma", "ema", "wma"])
price = close

ma(src, len) =>
     mode=="alma"  ? alma(src, len, 0.85, 6) :
     mode=="ema"? ema(src, len) : 
     wma(src, len)
    

ma1 = ma(price, floor(maLen / 2))
ma2 = ma(price, maLen)
ma3 = 2.0 * ma1 - ma2
ma4 = ma(ma3, floor(sqrt(maLen)))

//plot(ma1, color = red)
//plot(ma2, color = green)
plot(ma3, color = blue)
plot(ma4, color = orange)


mafast = ma3
maslow = ma4

if (crossover(mafast, maslow))
    strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE")

if (crossunder(mafast, maslow))
    strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)