Стратегия следования за трендом с тремя EMA в сочетании с DMI и MACD


Дата создания: 2024-01-25 15:48:59 Последнее изменение: 2024-01-25 15:48:59
Копировать: 0 Количество просмотров: 1177
1
Подписаться
1617
Подписчики

Стратегия следования за трендом с тремя EMA в сочетании с DMI и MACD

Обзор

Это стратегия отслеживания трендов, которая использует три индекса: скользящую среднюю (EMA), трендовый индикатор (DMI) и скользящий средний сплошной индикатор (MACD) для определения направления тренда и генерации сигнала покупки и продажи. Ключевые компоненты включают в себя золотой крест EMA, DMI, который определяет силу тренда и MACD для подтверждения динамики.

Стратегическая логика

Основная логика зависит от трех ЭМА, рассчитанных на цикле M5 - 34, 89 и 200 - для определения общей тенденции. 34-циклические ЭМА обеспечивают недавнее направление, а 89 и 200 ЭМА определяют среднесрочные тенденции.

При покупке сигнала:

  • 34 EMA на конец дня
  • +DI ((показатель движения по тренду) > 17
  • ADX (мощность тренда) > -DI

Продажа при создании сигнала:

  • 34 EMA по окончании торгов
  • -DI ((подвиг в сторону понижения) > 17
  • ADX > +DI

Дополнительное подтверждение по MACD.

Преимущества

Эта стратегия имеет несколько ключевых преимуществ:

  1. Переключение по краткосрочной EMA золота на пересечение и раннее захват тренда
  2. Использование нескольких ЭМА для определения силы тренда в разных временных рамках
  3. DMI-фильтр помогает избежать ошибочных сигналов, проверяя сильные трендовые движения
  4. MACD обеспечивает динамическое подтверждение, повышение качества и вероятности торговых возможностей
  5. Комбинация показателей повышает точность и время входа в сигнал

Риск

Основные риски:

  1. Полагаясь только на EMA, золотой крест подвержен заблуждению и дезинформации
  2. Многократное подтверждение может привести к задержке в момент генерации сигнала
  3. Подверженность резкому изменению тенденций

Способы смягчения:

  • Применение надлежащего управления остановками и позициями
  • Оптимизация параметров EMA в соответствии с текущими рыночными условиями
  • Наблюдение за движением цены для визуального подтверждения

Направление оптимизации

Дальнейшее совершенствование стратегии:

  1. Увеличение показателей, таких как RSI, для определения зоны перекупа
  2. Комбинированный анализ трафика дает более сильный сигнал
  3. Оптимизация показателей и параметров для различных активов и временных рамок
  4. Продолжаем учиться на новых рыночных данных с помощью машинного обучения

Подвести итог

В целом, это мощная система отслеживания тенденций, которая сочетает в себе использование нескольких простых, но практичных последовательностей индикаторов. Три 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)