
Стратегия представляет собой торговую систему, основанную на пересечениях экспоненциальной скользящей средней (EMA) в сочетании со средним истинным диапазоном (ATR) для достижения динамического управления рисками. Стратегия использует краткосрочные и долгосрочные линии EMA для отслеживания изменений динамики ценовых трендов, а также использует ATR для динамической установки позиций тейк-профит и стоп-лосс, обеспечивая точный контроль торговых рисков.
Основная логика стратегии основана на перекрестных сигналах двух экспоненциальных скользящих средних разных периодов (9 и 21). Когда краткосрочная EMA пересекает долгосрочную EMA снизу вверх, генерируется длинный сигнал; когда краткосрочная EMA пересекает долгосрочную EMA сверху вниз, генерируется короткий сигнал. Для лучшего управления рисками стратегия вводит динамический механизм стоп-профита и стоп-лосса на основе 14-периодного ATR. Уровень тейк-профита устанавливается в 2 раза больше ATR, а уровень стоп-лосса устанавливается в 1 раз больше ATR. Эта настройка обеспечивает достаточное пространство для прибыли и может контролировать риски вовремя.
Эта стратегия реализует относительно полную торговую систему, объединяя классическую систему пересечения EMA и динамическое управление рисками ATR. Основными преимуществами стратегии являются ее возможности динамического управления рисками и хорошие характеристики следования за трендом. Предложенные направления оптимизации еще позволяют улучшить стратегию. При применении в режиме реального времени рекомендуется проводить достаточное бэк-тестирование и оптимизацию параметров, а также вносить соответствующие корректировки на основе конкретных характеристик рынка.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved EMA Crossover Strategy", overlay=true)
// User-defined inputs for EMAs
shortTermLength = input(9, title="Short-Term EMA Length")
longTermLength = input(21, title="Long-Term EMA Length")
// Dynamic Take Profit and Stop Loss
atrLength = input(14, title="ATR Length")
atrMultiplierTP = input(2.0, title="ATR Multiplier for Take Profit")
atrMultiplierSL = input(1.0, title="ATR Multiplier for Stop Loss")
// Calculate EMAs and ATR
shortTermEMA = ta.ema(close, shortTermLength)
longTermEMA = ta.ema(close, longTermLength)
atr = ta.atr(atrLength)
// Plot the EMAs
plot(shortTermEMA, color=color.blue, title="Short-Term EMA")
plot(longTermEMA, color=color.red, title="Long-Term EMA")
// Generate Entry Conditions
longCondition = ta.crossover(shortTermEMA, longTermEMA)
shortCondition = ta.crossunder(shortTermEMA, longTermEMA)
// Optional Debugging: Print conditions (you can remove this later)
var label longLabel = na
var label shortLabel = na
if longCondition
longLabel := label.new(bar_index, high, "Buy Signal", color=color.green, style=label.style_label_down, textcolor=color.white)
if shortCondition
shortLabel := label.new(bar_index, low, "Sell Signal", color=color.red, style=label.style_label_up, textcolor=color.white)
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", limit=close + atr * atrMultiplierTP, stop=close - atr * atrMultiplierSL)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", limit=close - atr * atrMultiplierTP, stop=close + atr * atrMultiplierSL)