Estratégia de cruzamento de média móvel otimizada

Autora:ChaoZhang, Data: 2024-02-04 10:31:45
Tags:

img

Resumo

Esta estratégia baseia-se em cruzamento regular de médias móveis, mas algumas modificações foram feitas para gerar sinais de negociação mais precisos.

Estratégia lógica

Quando a média móvel rápida cruza acima da média móvel lenta de baixo para cima, ela é considerada um sinal de compra. Quando a média móvel rápida cruza a média móvel lenta de cima para baixo, ela é considerada um sinal de venda. Ou seja, cruz de ouro para longo, cruz de morte para curto. Uma vez que a posição longa / curta é tomada, o stop loss será definido para evitar grandes perdas.

A chave reside na seleção de médias móveis rápidas e lentas. Esta estratégia adota as médias móveis exponenciais do período 50&100 como a linha rápida e lenta, respectivamente. O efeito da estratégia pode ser otimizado ajustando os parâmetros MA.

Análise das vantagens

Esta estratégia identifica a direção da tendência combinando médias móveis duplas, que podem filtrar o ruído do mercado efetivamente. Em comparação com as estratégias de MA única, pode melhorar a probabilidade de lucratividade. Além disso, a configuração de stop loss também limita a perda de negócios individuais.

Ao alavancar as regras de cruzamento para determinar pontos de inflexão, esta estratégia pode capturar oportunidades de tendência em tempo hábil.

Análise de riscos

Existem três riscos principais para esta estratégia: risco de parâmetro MA inadequado, risco de período de detenção inadequado e risco de posição stop loss não razoável.

  • A selecção inadequada dos parâmetros MA conduzirá a sinais falsos.

  • O período de detenção demasiado longo ou demasiado curto não pode maximizar o lucro nem controlar o risco adequadamente.

  • A definição de posição de stop loss não razoável levará a uma stop loss demasiado ampla ou demasiado estreita, pelo que deve ser determinada uma stop loss adequada com base na volatilidade do instrumento.

Orientações de otimização

Esta estratégia pode ser otimizada a partir dos seguintes aspectos:

  • Teste mais combinações de parâmetros MA para encontrar os parâmetros ideais

  • Determinação da posição de stop loss dinâmica com base na flutuação de preços ou no ATR dos últimos N dias

  • Combine mais indicadores como MACD, KD etc. para determinar o tempo de entrada

  • Adicionar regras de filtragem de tendências para evitar o mercado limitado por intervalo

  • Considerar a aplicação da estratégia a mais instrumentos ou melhorá-la para uma estratégia multi-instrumental

Resumo

Esta estratégia de cruzamento de média móvel otimizada integra a vantagem da dupla MA na avaliação das direções da tendência e define stop loss para controlar os riscos. Ela pertence a estratégias de tendência fácil de implementar. Esta estratégia pode ser ainda melhorada em estabilidade e eficiência através da otimização de parâmetros, otimização de stop loss, filtragem de sinal, etc. Em comparação com estratégias complexas, é mais fácil de entender e implementar, e, portanto, muito adequado para ser a primeira estratégia de negociação quant para iniciantes.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ashishchauhan
strategy(title="MA CO Strategy Test", overlay=true, pyramiding=0, initial_capital=100000)

fastEMALen = input(title="Fast EMA Length", type=input.integer, defval=50)
slowEMALen = input(title="Slow EMA Length", type=input.integer, defval=100)

fastEMA = ema(close, fastEMALen)
slowEMA = ema(close, slowEMALen)

enterLong = crossover(fastEMA, slowEMA)
enterShort = crossunder(fastEMA, slowEMA)

longStop = 0.0
longStop := enterShort ? close : longStop[1]

shortStop = 0.0
shortStop := enterLong ? close : shortStop[1]

plot(series=fastEMA, color=color.orange, title="Fast EMA")
plot(series=slowEMA, color=color.teal, linewidth=3, title="Slow EMA")

if enterLong
    strategy.entry(id="GoLong", long=true)

if enterShort
    strategy.entry(id="GoShort", long=false)

if strategy.position_size > 0
    strategy.exit(id="ExLong", from_entry="GoLong", stop=longStop)

if strategy.position_size < 0
    strategy.exit(id="ExShort", from_entry="GoShort", stop=shortStop)

strategy.close_all()


Mais.