Стратегия торговли скользящими средними показателями DMI

Автор:Чао Чжан, Дата: 2023-09-13 14:42:19
Тэги:

Недавно я разработал новую количественную торговую стратегию, основанную главным образом на индикаторе DMI для определения дна и вершин на рынке.

Логика стратегии

Индикатор DMI, сокращение от Average Directional Movement Index, был создан Уэллсом Уайлдером в 1970-х годах для измерения тенденции и силы рынка.

  • +DI: отражает силу восходящего тренда
  • -DI: отражает силу нисходящего тренда
  • ADX: представляет собой общую силу тренда

Когда +DI пересекает -DI, это указывает на укрепление восходящего тренда, и можно рассматривать длинную позицию.

Основная логика этой стратегии заключается в следующем:

  1. Продолжительная сделка, когда +DI опускается ниже 10 и -DI поднимается выше 40
  2. Сокращение, когда -DI опускается ниже 10 и +DI поднимается выше 40

Другими словами, когда обратный DI значительно отклоняется от форвардного DI, можно судить, что текущая тенденция может измениться, и можно принять соответствующую обратную торговую позицию.

Для фильтрации шума эта стратегия использует скользящую среднюю величину ДИ с параметрами, установленными как:

  • Период +DI и -DI равен 11
  • Период сглаживания ADX составляет 11

Настройка параметров скользящей средней позволяет регулировать частоту торговых сигналов.

Эта стратегия в основном применяется к торговле индексными опционами NIFTY50. Она также может использоваться на других продуктах.

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

По сравнению с простыми кросс-стратегиями DI, эта стратегия использует скользящие средние DI для фильтрации шума и сокращения торгов, тем самым снижая затраты на транзакции и скольжение.

По сравнению с стратегией чистого следования тренду, эта стратегия более точна в обнаружении точек переворота тренда, что позволяет своевременно вводить всходы вокруг поворотов.

Оптимизация стратегии проста с гибкими параметрами для настройки производительности.

Предупреждения о риске

Эта стратегия предоставляет только направленные сигналы.

DMI может производить много ложных сигналов в течение периодов, ограниченных диапазоном.

DI кроссоверы не могут полностью предсказать обратные тенденции. Могут возникнуть некоторые ошибки синхронизации. Для проверки торговых сигналов следует использовать другие индикаторы.

Заключение

Скрининг с помощью скользящих средних DI позволяет эффективно выявлять возможности для изменения тренда. По сравнению с другими стратегиями, следующими за трендом, эта стратегия имеет преимущество более сильных способностей распознавания изменения. В целом эта стратегия имеет гибкую настройку параметров и может использоваться в качестве модуля в количественных торговых системах. Обратите внимание на ложные сигналы и правильно оценивайте режим рынка при его использовании.


/*backtest
start: 2023-09-05 00:00:00
end: 2023-09-12 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © email_analysts
// This code gives indication on the chart to go long based on DMI and exit based on RSI. 
//Default value has been taken as 14 for DMI+ and 6 for RSI.
//@version=5
strategy(title="DMI Strategy", overlay=false)
lensig = input.int(11, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(11, minval=1, 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)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
//plot(adx, color=#F50057, title="ADX")
plot(plus, color=color.green, title="+DI")
plot(minus, color=color.red, title="-DI")
hlineup = hline(40, color=#787B86)
hlinelow = hline(10, color=#787B86)

buy = plus < 10 and minus > 40
if buy
    strategy.entry('long', strategy.long)

sell = plus > 40 and minus < 10
if sell
    strategy.entry('short', strategy.short)



Больше