Эта стратегия представляет собой торговую систему, основанную на экспоненциальных пересечениях скользящих средних (EMA), в сочетании с средним истинным диапазоном (ATR) для динамического управления рисками. Стратегия использует краткосрочные и долгосрочные линии EMA для улавливания динамических изменений ценовых тенденций, используя ATR для динамического установления уровней получения прибыли и остановки потерь, достигая точного контроля над рисками торговли.
Основная логика стратегии основана на перекрестных сигналах между двумя EMA разных периодов (9 и 21). Сигнал покупки генерируется, когда краткосрочная EMA пересекается выше долгосрочной EMA, в то время как сигнал продажи генерируется, когда краткосрочная EMA пересекается ниже долгосрочной EMA. Для лучшего управления рисками стратегия включает в себя динамический механизм получения прибыли и остановки потери, основанный на 14-периодическом ATR, с уровнем получения прибыли, установленным на 2x ATR, и уровнем остановки потери на 1x 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)