
Esta estratégia é um sistema de negociação de acompanhamento de tendências que combina uma média móvel indexada (EMA) e um mecanismo de parada de perda baseado na amplitude de flutuação real (ATR). A estratégia usa EMAs de 9 e 21 ciclos para identificar tendências de mercado, enquanto utiliza ATR para ajustar dinamicamente as posições de parada, realizando uma combinação orgânica de acompanhamento de tendências e controle de risco.
A lógica central da estratégia inclui duas partes principais: o julgamento de tendências e o controle de risco. No julgamento de tendências, a tendência do mercado é determinada pela monitorização do cruzamento entre a EMA rápida (ciclo 9) e a EMA lenta (ciclo 21). Quando a linha rápida atravessa a linha lenta, o sinal de multiplicação é acionado; Quando a linha rápida atravessa a linha lenta, o sinal de vazio é acionado. No controle de risco, a estratégia usa o indicador ATR para calcular a posição de parada dinâmica.
A estratégia é construída em um sistema de negociação de seguimento de tendências completo através da combinação de tendências de julgamento de cruzamento de equilíbrio e parada dinâmica do ATR. A vantagem da estratégia é julgar a objetividade padrão e a flexibilidade de controle de risco, mas também é necessário prestar atenção ao risco de mercado de turbulência e problemas de atraso de sinal.
/*backtest
start: 2024-02-20 00:00:00
end: 2024-05-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/
//@version=5
strategy("EMA 9/21 + ATR SL Strategy", shorttitle="EMA+ATR", overlay=true)
// ===== Input Parameters ===== //
emaFastLen = input.int(9, "Fast EMA")
emaSlowLen = input.int(21, "Slow EMA")
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Multiplier")
// ===== EMA Calculation ===== //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
// ===== ATR Calculation ===== //
atrValue = ta.atr(atrLen)
// ===== Conditions for Entry ===== //
longCondition = ta.crossover(emaFast, emaSlow) // Long when 9 EMA crosses above 21 EMA
shortCondition = ta.crossunder(emaFast, emaSlow) // Short when 9 EMA crosses below 21 EMA
// ===== Entry Commands ===== //
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// ===== Set Stop-Loss Using ATR ===== //
//
// For LONG: stop-loss = entry price - (atrMult * ATR)
// For SHORT: stop-loss = entry price + (atrMult * ATR)
//
// Note: You can adjust the atrMult values based on market volatility
//
if strategy.position_size > 0
// If holding LONG, define stop-loss below the entry price
strategy.exit("Exit Long", "Long", stop = strategy.position_avg_price - atrMult * atrValue)
if strategy.position_size < 0
// If holding SHORT, define stop-loss above the entry price
strategy.exit("Exit Short", "Short", stop = strategy.position_avg_price + atrMult * atrValue)