Недавно я разработал новую количественную торговую стратегию, основанную главным образом на индикаторе DMI для определения дна и вершин на рынке.
Индикатор DMI, сокращение от Average Directional Movement Index, был создан Уэллсом Уайлдером в 1970-х годах для измерения тенденции и силы рынка.
Когда +DI пересекает -DI, это указывает на укрепление восходящего тренда, и можно рассматривать длинную позицию.
Основная логика этой стратегии заключается в следующем:
Другими словами, когда обратный DI значительно отклоняется от форвардного DI, можно судить, что текущая тенденция может измениться, и можно принять соответствующую обратную торговую позицию.
Для фильтрации шума эта стратегия использует скользящую среднюю величину ДИ с параметрами, установленными как:
Настройка параметров скользящей средней позволяет регулировать частоту торговых сигналов.
Эта стратегия в основном применяется к торговле индексными опционами 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)