Estratégia quantitativa de rastreamento de momentum de cruzamento de média móvel dupla

MA SMA EMA SMMA RMA WMA VWMA
Data de criação: 2024-11-27 15:06:57 última modificação: 2024-11-27 15:06:57
cópia: 1 Cliques: 478
1
focar em
1617
Seguidores

Estratégia quantitativa de rastreamento de momentum de cruzamento de média móvel dupla

Visão geral

Esta é uma estratégia de negociação quantitativa baseada em sinais de cruzamento de duas equações. A estratégia utiliza duas médias móveis, uma como linha de sinal principal e outra como linha de sinal suave. A estratégia gera sinais de negociação monitorando o cruzamento de preços com linhas de sinal suave, permitindo a captação de tendências de mercado e o acompanhamento da dinâmica.

Princípio da estratégia

A estratégia usa dois níveis de cálculo de médias móveis. Primeiro, calcula-se uma média móvel básica (o ciclo padrão é de 9) e, em seguida, é feita uma segunda suavização dessa linha (o ciclo padrão é de 5). A estratégia oferece opções para vários métodos de cálculo de médias, incluindo média móvel simples (SMA), média móvel indexada (EMA), média móvel plana (SMMA), média móvel ponderada (WMA) e média móvel ponderada (VWMA).

Vantagens estratégicas

  1. O mecanismo de geração de sinais é claro, simples, fácil de entender e implementar
  2. A produção de falsos sinais é efetivamente reduzida através de um segundo processo de suavização.
  3. Oferece uma variedade de métodos de cálculo linear médio, com uma escolha flexível de acordo com diferentes características do mercado
  4. Configuração de parâmetros flexível e pode ser otimizada para diferentes ciclos de mercado
  5. Estrutura de código clara, fácil de manter e expandir
  6. Boa capacidade de acompanhamento de tendências

Risco estratégico

  1. Sinais de negociação frequentes podem ser gerados em um mercado volátil, aumentando os custos de transação
  2. O blogueiro, que também escreveu sobre o assunto, diz que há um certo atraso e que pode ter perdido o ponto de partida.
  3. A retracção pode ser maior em um retorno rápido.
  4. Estratégia de indicadores técnicos únicos, falta de julgamento do mercado
  5. O excesso de otimização de parâmetros pode levar a um risco de sobreajuste

Direção de otimização da estratégia

  1. Introdução de mecanismos de julgamento de mercado, usando configurações de parâmetros diferentes em diferentes estados de mercado
  2. Adição de um mecanismo de bloqueio de perda para controlar o risco
  3. Aumentar os filtros de volume de transação para evitar transações em ambientes de baixa liquidez
  4. Introdução de outros indicadores técnicos como sinais de confirmação auxiliares
  5. Desenvolver mecanismos de parâmetros de adaptação para ajustar os parâmetros de acordo com as mudanças dinâmicas do mercado
  6. Adição de módulo de gestão de localização para um controlo de posição mais flexível

Resumir

Esta é uma versão melhorada da clássica estratégia de acompanhamento de tendências, aumentando a estabilidade com o design de duas camadas de médias móveis, mantendo a simplicidade da estratégia. A estratégia tem boa escalabilidade e flexibilidade, pode se adaptar a diferentes ambientes de mercado através da otimização de parâmetros e extensão de funções.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Moving Average 1.0 Strategy", overlay=true)

// Input for Moving Average Length
len = input.int(9, minval=1, title="Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)

// Calculate the Moving Average
out = ta.sma(src, len)

// Plot the Moving Average
plot(out, color=color.blue, title="MA", offset=offset)

// Function to choose the type of moving average
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

// Input for Smoothing Method and Length
typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing")

// Calculate the Smoothing Line
smoothingLine = ma(out, smoothingLength, typeMA)

// Plot the Smoothing Line
plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset)

// Strategy Logic
if (ta.crossover(close, smoothingLine))
    strategy.entry("Buy", strategy.long)

if (ta.crossunder(close, smoothingLine))
    strategy.entry("Sell", strategy.short)