Estratégia da EMA com ATR Stop Loss

Autora:ChaoZhang, Data: 2023-12-11 16:00:09
Tags:

img

Resumo

Esta estratégia usa a cruz de ouro da EMA para gerar sinais de negociação, ou seja, um sinal de compra é gerado quando a linha rápida da EMA cruza acima da linha lenta da EMA, e um sinal de venda é gerado quando a linha rápida da EMA cruza abaixo da linha lenta da EMA. Ela pertence a uma estratégia típica de tendência. Ao mesmo tempo, a estratégia usa o indicador ATR para definir um stop loss dinâmico para controlar riscos, garantindo lucros.

Princípio da estratégia

  1. Definir o período de EMA rápido como 13 e o período de EMA lento como 48.
  2. Quando a linha EMA rápida cruza acima da linha EMA lenta, é gerado um sinal de compra; quando a linha EMA rápida cruza abaixo da linha EMA lenta, é gerado um sinal de venda.
  3. Utilize as funções ta.crossover e ta.crossunder para determinar a cruz de ouro e a cruz de morte das médias móveis.
  4. Utilize o indicador ATR para calcular a perda de parada dinâmica, que é 1,5 vezes a distância do ATR do fechamento.
  5. Intuitivamente exibir sinais de negociação e níveis de stop loss através de mudanças de cor, marcas de compra / venda e linhas de stop loss.

Análise das vantagens

  1. Os sinais são gerados com base na cruz de ouro da EMA e na cruz da morte, o que evita perder as principais tendências do mercado e os retornos são consideráveis.
  2. O ATR trailing stop loss garante lucros adequados seguindo a tendência, ao mesmo tempo que controla os drawdowns, alcançando uma relação equilibrada risco/benefício.
  3. Display de sinal intuitivo e display de stop loss, fácil de operar, adequado para a maioria das pessoas.
  4. Poucos parâmetros ajustáveis, fáceis de compreender e otimizar.

Análise de riscos

  1. As falhas de flash podem desencadear o stop loss.
  2. Podem ocorrer sinais inválidos frequentes em mercados variados.
  3. A configuração de parâmetros inadequada pode resultar em entrada excessivamente agressiva ou perda de parada frouxa.
  4. Os parâmetros EMA e ATR necessitam de uma otimização adequada.

Soluções:

  1. Afrouxar adequadamente o multiplicador de ATR para deixar algum amortecedor das altas recentes.
  2. Considere mecanismos de confirmação após a ocorrência do sinal, tais como a quebra do preço do máximo anterior, etc.
  3. A otimização dos parâmetros deve ter em conta várias condições de mercado.

Orientações de otimização

  1. Teste diferentes combinações de parâmetros para encontrar parâmetros ótimos.
  2. Considerar a adição de outros indicadores de filtragem de sinal, tais como indicadores de volume, volatilidade, etc., para melhorar a qualidade do sinal.
  3. Ajustar os parâmetros da EMA de acordo com as principais tendências para melhor captar as principais tendências.
  4. Considerar o ajuste dinâmico do multiplicador de stop loss ATR para expandir o intervalo de stop durante os mercados de tendência.
  5. Incorporar algoritmos de aprendizagem de máquina para otimização de parâmetros adaptativos.

Conclusão

A estratégia é relativamente simples e fácil de usar. Ela gera sinais baseados em crossovers da EMA, segue a tendência e usa o ATR para controlar os riscos de forma eficaz. Embora possa haver alguns sinais falsos, ela tem fortes capacidades para capturar as principais tendências e os retornos são relativamente estáveis.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 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/
// © byee322

/// This strategy uses the EMA to generate buy and sell signals with a 1.5x ATR stop loss
//@version=5
strategy("EMA Strategy with ATR Stop Loss", overlay=true)

// Define the EMA lengths as input parameters
emaLength1 = input(13, "EMA Length 1")
emaLength2 = input(48, "EMA Length 2")

// Define the moving averages
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)

// Buy signal: EMA 1 crosses above EMA 2
buy = ta.crossover(ema1, ema2)

// Sell signal: EMA 1 crosses below EMA 2
sell = ta.crossunder(ema1, ema2)

// Define the state variable
state = 0
state := buy ? 1 : sell ? -1 : nz(state[1])

// Change the color of the candles
color = state == 1 ? color.green : state == -1 ? color.red : na

// Plot the colored candles
plotcandle(open, high, low, close, color=color)

// Plot the signals on the chart with text labels
plotshape(buy, style=shape.triangleup, color=color.new(color.green, 50), location=location.belowbar, text="Buy")
plotshape(sell, style=shape.triangledown, color=color.new(color.red, 50), location=location.abovebar, text="Sell")

// Calculate the ATR
atrVal = ta.atr(14)

// Calculate the stop loss level for buy
stopLossBuy = buy ? close[1] - 1.5 * atrVal : na

// Calculate the stop loss level for sell
stopLossSell = sell ? close[1] + 1.5 * atrVal : na

// Plot the stop loss level for buy
plot(stopLossBuy,  color=color.new(color.green, 50), linewidth=3)

// Plot the stop loss level for sell
plot(stopLossSell, color=color.new(color.red, 50), linewidth=3)

if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)

Mais.