Это стратегия следования тренду, которая сочетает в себе 3 экспоненциальные скользящие средние (EMAs) с индексом направленного движения (DMI) и индикатором конвергенции конвергенции скользящей средней (MACD) для определения направления тренда и генерации сигналов покупки / продажи. Ключевые компоненты включают сигналы перекрестного движения EMA, DMI для силы тренда и MACD для подтверждения импульса.
Основная логика основана на трех EMA - 34, 89 и 200 - рассчитанных на временной шкале M5 для определения общей тенденции.
Сигналы покупки запускаются, когда: - Закрытие цены пересекает 34 EMA - +DI (бусистское движение в направлении) > 17 - ADX (сильная тенденция) > -DI
Сигналы продажи генерируются, когда: - Закрытие цены пересекается ниже 34 EMA - -DI (медвежье направление движения) > 17 - ADX > +DI
Дополнительное подтверждение приходит из индикатора MACD перед записями.
Эта стратегия имеет несколько ключевых преимуществ:
Основные риски, которые следует учитывать:
Методы смягчения последствий: - Используйте соответствующие стоп-лосс, размеров позиций - оптимизировать длины EMA для текущих рыночных условий - Смотрите на ценовое движение для визуального подтверждения
Дальнейшие улучшения стратегии:
В целом, это надежная система, сочетающая в себе простые, но мощные индикаторы для торговли в направлении преобладающей тенденции. Тройная конфигурация EMA измеряет тенденции в течение нескольких временных рамок, а проверки DMI и MACD повышают сроки и вероятность прибыльных входов. При надлежащей оптимизации и управлении рисками она может быть эффективным дополнением для трейдеров тренда.
/*backtest start: 2023-01-18 00:00:00 end: 2024-01-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("2 EMA di+ Buy Sell, strategy ", overlay=true) // Define the EMA calculation function ema(src, length) => ta.ema(src, length) // Calculate and plot EMA on M5 ema34_M5 = ema(close, 34) ema89_M5 = ema(close, 89) ema200_M5 = ema(close, 200) // Plot EMAs plot(ema34_M5, color=color.green, title="EMA 34 M5", linewidth=2) plot(ema89_M5, color=color.blue, title="EMA 89 M5", linewidth=2) plot(ema200_M5, color=color.black, title="EMA 200 M5", linewidth=2) // Define DMI parameters len = input(14, title="DI Length") up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) trur = ta.rma(ta.tr, len) plusDI = 100 * ta.rma(plusDM, len) / trur minusDI = 100 * ta.rma(minusDM, len) / trur // Calculate ADX adxValue = 100 * ta.rma(math.abs(plusDI - minusDI) / (plusDI + minusDI == 0 ? 1 : plusDI + minusDI), len) // Define MACD parameters fastLength = input(12, title="Fast Length") slowLength = input(26, title="Slow Length") signalLength = input(9, title="Signal Length") // Calculate MACD [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength) // Create buy/sell conditions buyCondition = close > ema34_M5 and plusDI > 17 and adxValue > minusDI sellCondition = close < ema34_M5 and minusDI > 17 and adxValue > plusDI // Strategy logic strategy.entry("Buy", strategy.long, when = buyCondition) strategy.entry("Sell", strategy.short, when = sellCondition) // Create alerts for buy/sell signals alertcondition(buyCondition, title="Buy Signal", message="Buy Signal") alertcondition(sellCondition, title="Sell Signal", message="Sell Signal") // Plot buy/sell arrows on the price chart bgcolor(buyCondition ? color.new(color.green, 90) : sellCondition ? color.new(color.red, 90) : na) plotarrow(buyCondition ? 1 : sellCondition ? -1 : na, colorup=color.new(color.green, 0), colordown=color.new(color.red, 0), offset=-1)