Esta estratégia utiliza duas linhas EMA de períodos diferentes para identificar reversões de tendência através dos seus cruzamentos como sinais de entrada e saída.
A estratégia calcula duas linhas EMA usando ta.ema, uma com comprimento 10 para curto prazo e outra com comprimento 20 para tendência de longo prazo. Ela identifica crossovers e crossunders da EMA usando ta.crossover e ta.crossunder para determinar pontos de entrada e saída. Quando a EMA curta cruza a EMA longa, ela vai longa. Quando a EMA curta cruza sob a EMA longa, ela vai curta. Dessa forma, os crossovers da EMA são usados para capturar pontos de virada na tendência.
A estratégia também usa uma variável lastCrossTime para registrar o tempo do último cruzamento para evitar sinais repetidos. Em cada cruzamento válido, ele fecha todas as posições atuais primeiro, depois abre uma nova posição na direção do cruzamento. Após abrir a posição, o take profit e o stop loss são definidos para sair.
A lógica estratégica é simples e clara, fácil de compreender e implementar.
A utilização de cruzamento da EMA para identificar pontos de reversão da tendência é uma estratégia de indicador técnico eficaz comumente utilizada.
A adopção de EMAs de períodos diferentes ajuda a melhorar a sensibilidade a movimentos de curto prazo, enquanto ainda capta grandes tendências.
Tomar lucro e parar a perda ajuda a controlar o risco e a recompensa de cada comércio.
A variável lastCrossTime filtra sinais duplicados e evita transações desnecessárias.
Os cruzamentos da EMA podem gerar sinais falsos, com algum risco de fenda.
Os níveis fixos de TP e SL podem não se adaptar às condições de mercado em evolução.
Os sistemas que dependem exclusivamente do cruzamento da EMA podem sofrer perdas em mercados variados.
Os custos de negociação, como o spread, não são considerados, o que afeta o desempenho real.
A estratégia funciona melhor em tendências do que em mercados variados.
As melhorias podem ser feitas através da otimização do TP/SL, adição de filtros, combinação de outros indicadores, etc. O controle rigoroso do risco e a evitação de grandes perdas individuais são essenciais para a negociação ao vivo.
Teste e otimize os períodos de EMA para encontrar melhores combinações.
Adicionar outros indicadores como KDJ, MACD etc. para melhorar a qualidade do sinal e evitar problemas.
Utilize a dinâmica de lucro e stop loss, como a parada de trail ao longo da tendência.
Considere o volume de negociação para confirmar os sinais.
Incorpore padrões de ação de preços como breakouts para fortalecer sinais.
Contabilizar os custos de negociação, como o spread, e otimizar os níveis de TP/SL em conformidade.
A estratégia identifica reversões de tendência usando crossovers EMA de forma simples e direta. TP/SL são usados para controlar riscos e recompensas. É fácil de implementar, mas os crossovers EMA têm riscos de serra. Outras otimizações podem ser feitas ajustando parâmetros, adicionando filtros e combinando outros indicadores para melhorar a robustez.
/*backtest start: 2023-10-30 00:00:00 end: 2023-11-06 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('XXXquang', overlay=true) // Sử dụng hàm input.int() và input.float() để tạo các trường nhập liệu với giới hạn giá trị length1 = input.int(10, title="Length EMA Short", minval=1) length2 = input.int(20, title="Length EMA Long", minval=1) lotSize = input.int(1, title="Lot Size", minval=1) takeProfitLevel = input.int(600, title="Take Profit Level", minval=1) stopLossLevel = input.int(200, title="Stop Loss Level", minval=1) ema1 = ta.ema(close, length1) ema2 = ta.ema(close, length2) var float lastCrossTime = na if ta.crossover(ema1, ema2) if na(lastCrossTime) strategy.close_all() strategy.entry('Buy Order', strategy.long, qty=lotSize) strategy.exit('Exit Buy', 'Buy Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue) lastCrossTime := timenow if ta.crossunder(ema1, ema2) if na(lastCrossTime) strategy.close_all() strategy.entry('Sell Order', strategy.short, qty=lotSize) strategy.exit('Exit Sell', 'Sell Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue) lastCrossTime := timenow plot(ema1, title='EMA Short', color=color.new(color.blue, 0), linewidth=2) plot(ema2, title='EMA Long', color=color.new(color.red, 0), linewidth=2)