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


Data de criação: 2023-12-22 13:28:01 última modificação: 2023-12-22 13:28:01
cópia: 0 Cliques: 768
1
focar em
1623
Seguidores

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

Visão geral

A estratégia de crossover de média móvel é uma estratégia de negociação quantitativa baseada em médias móveis simples. A estratégia gera sinais de compra e venda ao calcular médias móveis simples de diferentes períodos quando elas se cruzam.

Especificamente, a estratégia calcula uma média móvel simples entre a linha de 9 e a linha de 45 dias. Quando o preço atravessa a linha de 9 e a linha de 45 dias, gera um sinal de compra; quando o preço atravessa a linha de 9 e a linha de 45 dias, gera um sinal de venda.

Princípio da estratégia

A lógica central da estratégia baseia-se no princípio da forquilha de ouro das médias móveis. As médias móveis são capazes de filtrar efetivamente o ruído do mercado, indicando mudanças na tendência geral. Quando a média de curto prazo atravessa a média de longo prazo, indica que o preço começa a entrar em uma tendência ascendente; Quando a média de curto prazo atravessa a média de longo prazo, indica que o preço começa a entrar em uma tendência descendente.

Especificamente, a estratégia usa uma média móvel simples entre a linha 9 e a linha 45. A linha 9 representa a tendência de curto prazo e a linha 45 representa a tendência de longo prazo. Quando o preço atravessa a linha 9 e a linha 45 acima, o preço da ação está em um canal ascendente no curto e no longo prazo, gerando assim um sinal de compra. Quando o preço atravessa a linha 9 e a linha 45 abaixo, o aumento do preço da ação diminui gradualmente, gerando assim um sinal de venda.

Do ponto de vista da lógica do código, a estratégia primeiro calcula as médias móveis simples da linha 9 e da linha 45, e depois julga a forca de ouro e a forca de morte da linha igual através das funções ta.crossover e ta.crossunder. Ao gerar os sinais de compra e venda, a função plotshape é usada para traçar um gráfico de sinal triangular e triangular invertido no mapa K.

Além disso, a estratégia também estabelece a lógica de parada de perda para posições longas e curtas. Concretamente, após a abertura da posição, o preço mais alto e o preço mais baixo da linha K anterior são extraídos como preço de parada. Isso permite bloquear o lucro e evitar grandes perdas.

Análise de vantagens

  • A configuração de dupla linha de equilíbrio permite capturar as mudanças de tendências de médio e longo prazo, evitando o ruído do mercado de curto prazo e melhorando a qualidade do sinal.
  • A combinação de estratégias de stop loss permite controlar o risco e bloquear o lucro.
  • A lógica da estratégia é simples, fácil de entender e de implementar.
  • A taxa de aproveitamento dos fundos é alta, permitindo uma boa recuperação.

Análise de Riscos

  • A estratégia de dupla linha de equilíbrio é propensa a produzir sinais de thrust de forquilha morta, o que pode levar a um excesso de negociações inválidas.
  • A fixação de um preço de parada pode ser demasiado conservadora para acompanhar a tendência de forma continuada.
  • A escolha inadequada dos parâmetros pode levar a uma frequência de negociação muito alta ou muito baixa.
  • O blogueiro também escreveu sobre a situação em Angola, onde a população não consegue se adaptar à mudança de cenário.

Resposta:

  1. Optimizar os parâmetros da linha média e reduzir a taxa de transação ineficaz
  2. Optimizar a lógica de stop loss, usando o stop loss de seguimento de tendências
  3. Combinação com outros indicadores de filtragem
  4. Intervenção humana para evitar a reversão da crise

Direção de otimização

A estratégia ainda tem espaço para ser melhorada:

  1. O uso de médias móveis adaptativas ou médias móveis indexadas permite capturar melhor as mudanças de tendência.

  2. Aumentar os sinais de filtragem, como os indicadores de taxa de flutuação, para evitar sinais errados em situações de tremores.

  3. Otimizar os parâmetros para encontrar a melhor combinação de parâmetros

  4. A adição de um mecanismo de acompanhamento de tendências na lógica de stop loss permite que a linha de stop loss acompanhe os preços de forma flexível.

  5. Aumentar o julgamento sobre a resistência de suporte em grandes níveis, evitando sinais errados em áreas de preços-chave.

  6. A combinação de modelos de aprendizagem de máquina permite uma filtragem adicional da qualidade do sinal.

Resumir

A estratégia de equilíbrio é uma estratégia de acompanhamento de tendências simples e práticas. Ela é capaz de filtrar eficazmente o ruído e capturar as mudanças na tendência de preços a médio e longo prazo.

Código-fonte da estratégia
/*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)