Uma estratégia de negociação baseada no cruzamento de média móvel


Data de criação: 2024-01-24 14:59:44 última modificação: 2024-01-24 14:59:44
cópia: 0 Cliques: 528
1
focar em
1617
Seguidores

Uma estratégia de negociação baseada no cruzamento de média móvel

Visão geral

A estratégia de negociação de cruzamento de médias móveis é uma estratégia de negociação quantitativa mais comum. A estratégia gera sinais de negociação por meio da computação de médias móveis de diferentes períodos e de sua intersecção. Concretamente, é a computação de médias móveis de índices de 4 ciclos, 8 ciclos e 20 ciclos (EMA), que são feitas quando a EMA de curto prazo atravessa a EMA de longo prazo e feitas em branco quando a EMA de curto prazo quebra a EMA de longo prazo.

Princípio da estratégia

A lógica central da estratégia é:

  1. Calcule a linha EMA de 4 ciclos, 8 ciclos e 20 ciclos.
  2. Para determinar a relação entre a linha EMA de 4 e a linha EMA de 8 ciclos:
    1. Quando a linha de EMA de 4 ciclos atravessa a linha de EMA de 8 ciclos, indica que o movimento de preços se fortalece e pertence ao sinal de múltiplas cabeças.
    2. Quando a EMA de 4 ciclos quebra a EMA de 8 ciclos, indica que a tendência de preços está enfraquecendo e é um sinal de cabeça-vazia.
  3. Ao mesmo tempo, julgue a direção da linha EMA de 20 ciclos:
    1. Entrar Long se a linha de EMA de 20 ciclos subir.
    2. Se a linha de EMA de 20 ciclos cair, então Enter Short.
  4. Quando a relação entre a linha EMA de 4 e a linha EMA de 8 ciclos é invertida, Prepare Exit。
  5. Quando a linha de EMA de 20 ciclos é invertida, Exit Now

Com este método, utilizamos a interseção entre diferentes médias periódicas para julgar os sinais do mercado, enquanto usamos a direção da média periódica mais longa para filtrar os sinais de erro e construir uma estratégia de negociação estável.

Vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. A lógica da estratégia é simples, clara, fácil de entender e de implementar.
  2. O uso de filtros de dupla condição reduz os sinais falsos.
  3. O aumento da EMA de 20 ciclos permite identificar grandes tendências e reforçar a estabilidade.
  4. Parâmetros personalizáveis para ajustar a frequência de transação.
  5. É fácil de combinar com outros indicadores ou modelos para construir estratégias complexas.

Risco estratégico

A estratégia também apresenta alguns riscos:

  1. A estratégia de dupla equilíbrio pode gerar falsos sinais.
  2. O ciclo fixo não se adapta às mudanças do mercado.
  3. Os investidores devem ter cuidado para não perder dinheiro com os investidores.

Os principais soluções são:

  1. A redução apropriada do período de detenção e o fim do prejuízo.
  2. Parâmetros de otimização dinâmica, ajuste do ciclo de linha média.
  3. Criar estratégias de combinação com outros indicadores ou modelos.

Otimização de Estratégia

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

  1. Otimização do ciclo: determinação da melhor combinação de ciclos de MA para diferentes variedades Optimização de stop loss: configuração razoável de stop loss e controle de perda individual

    1. Optimização de parâmetros: Parâmetros de otimização dinâmica com algoritmos genéticos, cadeias de Markov e outros métodos
  2. Integração de modelos: integração com modelos de aprendizagem profunda como LSTM, RNN e outros para extrair mais Alpha

Optimização de portfólio: construção de um portfólio de estratégias com outros indicadores

Resumir

A estratégia de cruzamento de média móvel é uma estratégia de negociação quantitativa mais clássica e comum. A lógica da estratégia é simples, fácil de entender e implementar, com uma certa estabilidade. Mas também há alguns problemas, como a produção de falsos sinais, a incapacidade de se adaptar às mudanças no mercado, etc. Esses problemas podem ser melhorados por meio de métodos como otimização de parâmetros, otimização de stop loss e integração de modelos.

Código-fonte da estratégia
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2.05)
//stock strategy
strategy(title = "stub",   overlay = true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.0,default_qty_value=10000)


testStartYear = input(1900, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() => true

ema1 = ema(close,4)
ema2 = ema(close,8)
ema3 = ema(close,20)

go_long = ema1[0] > ema2[0] and ema3[0] > ema3[1]
exit_long = ema1[0] < ema2[0] or ema3[0] < ema3[1]

go_short = ema1[0] < ema2[0] and ema3[0] < ema3[1]
exit_short = ema1[0] > ema2[0] or ema3[0] > ema3[1]

 
if testPeriod()
    strategy.entry("simpleBuy", strategy.long, when=go_long)
    strategy.exit("simpleBuy", "simpleSell",when=exit_long)
    
    strategy.entry("simpleSell", strategy.short,when=go_short)
    strategy.exit("simpleSell", "simpleSell",when=exit_short)