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.
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.
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.
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.
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
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()