
Стратегия представляет собой систему трендового трейдинга, которая сочетает в себе индексные скользящие средние ((EMA) и стоп-модели, основанные на реальной волатильности ((ATR)). Стратегия использует 9-циклические и 21-циклические ЭМА для идентификации рыночных тенденций, а также использует ATR для динамической корректировки стоп-позиций, реализуя органическое сочетание трендового слежения и контроля риска.
Центральная логика стратегии включает в себя две основные части: определение тренда и управление риском. В определении тренда рыночная тенденция определяется путем наблюдения за перекрестком быстрого ЭМА (цикл 9) и медленного ЭМА (цикл 21).
Эта стратегия, объединяя равнолинейный перекрестный тренд и динамический стоп ATR, создает целостную торговую систему для отслеживания трендов. Преимущества стратегии заключаются в том, что она является объективной, гибкой в управлении рисками, но также требует внимания к рискам рынка и сигнальной задержке.
/*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)