Estratégia de compra-venda inversa da EMA

Autora:ChaoZhang, Data: 2023-11-28 16:54:14
Tags:

img

Resumo

Esta é uma estratégia de tendência baseada em linhas EMA. Ela usa duas linhas EMA com períodos diferentes, 21 e 55. Quando a linha EMA mais rápida cruza acima da linha EMA mais lenta, um sinal de compra é gerado. Quando a EMA mais rápida cruza abaixo da mais lenta, um sinal de venda é gerado.

Além disso, a estratégia incorpora a negociação reversa, o ATR stop loss e a reversão do lucro para melhorar a sua estabilidade e rentabilidade.

Estratégia lógica

  1. Utilize as linhas EMA de 21 e 55 períodos.

  2. Quando 21 EMA cruza acima de 55 EMA, indica que a tendência de curto prazo muda para cima, gerando um sinal de compra.

  3. Quando a 21 EMA cruza abaixo da 55 EMA, indica que a tendência de curto prazo vira para baixo, gerando um sinal de venda.

  4. Negociação reversa: só compra quando o preço está abaixo do preço de abertura e só vende quando o preço está acima do preço de abertura.

  5. ATR stop loss: usar N vezes ATR para definir o preço de stop loss. Isso ajusta dinamicamente o stop loss com base na volatilidade do mercado.

  6. Reversão de lucro: use o preço de entrada menos N vezes ATR como meta de lucro.

Vantagens da estratégia

  1. Captura as tendências de médio e longo prazo utilizando uma EMA dupla.

  2. A negociação reversa é adequada para operações de retrocesso de curto prazo de tendências.

  3. A parada ATR adapta-se à volatilidade do mercado.

  4. A reversão do lucro está perto de níveis técnicos importantes com maior probabilidade.

  5. Lógica simples e clara, fácil de entender e modificar.

  6. Aplicável a mercados altamente voláteis como as criptomoedas.

Riscos e soluções

  1. A dupla EMA pode gerar sinais falsos e prolongar os períodos de EMA.

  2. Os negócios reversos são propensos ao stop loss, podem afrouxar um pouco o stop loss.

  3. Falsas fugas acontecem com frequência.

  4. Risco elevado em tomadas de lucro, remova manualmente as ordens de tomadas de lucro a tempo.

Sugestões de otimização

  1. Adicione indicadores como MACD, KD para filtrar sinais em zonas de sobrecompra/supervenda.

  2. Adicione mais EMA como 120 período EMA para julgar a tendência de forma abrangente.

  3. Configure deslizamento diferente para longs e shorts para melhor preço de entrada.

  4. Relaxar o ATR stop loss para negociações de criptomoedas altamente voláteis.

  5. Otimizar os mecanismos de multiplicador de ATR e de trailing stop para obter o máximo de lucro e o mínimo de utilização.

Conclusão

Em conclusão, esta é uma estratégia de seguimento de tendência dual EMA relativamente simples. Sua força reside em lógica limpa, parâmetros flexíveis, aplicabilidade em tendências de médio a longo prazo e reversões de curto prazo. Também analisamos suas possíveis fraquezas e soluções, juntamente com várias recomendações para melhorias futuras. De um modo geral, esta estratégia é prática até certo ponto e tem espaço para evoluir, mas seus parâmetros precisam de ajustes para diferentes mercados.


/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TheHulkTrading

// Simple EMA strategy, based on ema55+ema21 and ATR(Average True Range) and it enters a deal from ema55 when the other entry conditions are met


//@version=4
strategy("Simple Ema_ATR Strategy HulkTrading", overlay=true)

atr_multiplier = input(2, minval=1, title="ATR Multiplier") // ATR Multiplier. Recommended values between 1..4


emaFast=ema(close,21)
emaSlow=ema(close,55)

//Basically long and short conditions

//If long: 
// 1) close must be less than open (because we are searching for a pullback)
// 2) emaFast(21) must be bigger than emaSlow(55) - for a trend detection
// 3) Difference between emaFast and emaSlow must be greater than ATR(14) - for excluding flat
longCond = close < open and emaFast > emaSlow and abs(emaSlow-emaFast) > atr(14)  

//For short conditions are opposite
shortCond = close > open and emaFast < emaSlow and abs(emaSlow-emaFast) > atr(14) 

//Stop levels and take profits, based on ATR multiplier

stop_level_long = strategy.position_avg_price - atr_multiplier*atr(14)
take_level_long = strategy.position_avg_price + atr_multiplier*atr(14)
stop_level_short = strategy.position_avg_price + atr_multiplier*atr(14)
take_level_short = strategy.position_avg_price - atr_multiplier*atr(14)


//Entries and exits 
strategy.entry("Long", strategy.long, when=longCond, limit = emaSlow)
strategy.exit("Stop Loss/TP","Long", stop=stop_level_long, limit = take_level_long)
strategy.entry("Short", strategy.short, when=shortCond, limit = emaSlow)
strategy.exit("Stop Loss/TP","Short", stop=stop_level_short, limit = take_level_short)



Mais.