Эта стратегия построена на основе индикатора DMI путем мониторинга перекрестного взаимодействия +DI и -DI для определения направления тренда цен на акции и с использованием индикатора ADX для определения силы тренда, чтобы достичь отслеживания тренда.
Эта стратегия использует два компонента индикатора DMI: +DI и -DI. +DI измеряет подъемный импульс. Взлетный перекресток +DI над -DI указывает на усиление подъемного импульса. -DI измеряет нисходящий импульс. Взлетный перекресток -DI ниже +DI указывает на усиление нисходящего импульса.
Когда +DI пересекает -DI, появляется восходящий тренд, и стратегия идет на длинный. После вхождения в позицию, последующая линейная стоп-лосс отслеживает определенный процент от самой высокой цены. По мере оттягивания цены, цена стоп-лосса будет соответственно снижаться, блокируя некоторые из более ранних прибылей в некоторой степени.
Когда -DI переходит ниже +DI, происходит нисходящий тренд, и стратегия закрывает свою позицию. Индикатор ADX может быть использован для определения силы тренда. Чем выше ADX, тем более выражен тренд. Таким образом, стратегия использует ADX в качестве вспомогательного индикатора для входа, входя в позицию только тогда, когда ADX находится в определенном диапазоне.
В целом, эта стратегия отслеживает точки перелома в ценовых тенденциях, чтобы реализовать отслеживание движущихся средних трендов.
Основные преимущества этой стратегии отражаются в трех аспектах:
Использование индикатора DMI для определения направления ценовых тенденций является точным и надежным.
Применение индикатора ADX для определения силы тенденций позволяет избежать частой торговли на нестабильных рынках, что делает стратегию более надежной.
Механизм линейного отслеживания может динамически регулировать позиции стоп-лосса и выходить раньше, когда тенденции меняются, блокируя частичную прибыль для эффективного контроля рисков.
Правила стратегии просты и понятны, легко понять и реализовать, подходят для алгоритмической торговли.
Основными рисками этой стратегии являются:
Возможность того, что индикатор DMI не работает на некоторых специальных рынках. DMI не распространяется на все рынки. Он может генерировать ложные сигналы, когда тенденция не выражена.
Риск того, что цена опустится ниже уровня стоп-лосса, прежде чем снова упадет.
Риск, связанный с неправильными настройками параметров ADX. Параметры ADX напрямую влияют на результаты планирования стратегии.
Легкость остановки в быстро развивающемся восходящем тренде из-за метода линейного остановки.
Риски могут быть дополнительно уменьшены с помощью настройки параметров, строгих стоп-потерь, оптимизации архитектуры программы и т. Д.
Эта стратегия может быть оптимизирована в нескольких аспектах:
Использовать другие индикаторы, такие как MACD, KDJ для вспомогательного суждения для улучшения стабильности стратегии.
Испытать различные методы остановки потери, такие как остановки с задержкой кривой, остановки с задержкой на основе времени и т.д.
Добавление механизмов размещения позиций для постепенного наращивания позиций после подтверждения направления тренда, улучшение рентабельности.
Включить высокочастотные факторы, машинное обучение и т. д. для динамической оптимизации параметров DMI и ADX для повышения интеллекта.
Добавление программных модулей управления рисками с использованием бюджетного планирования рисков и т.д. для строгого управления максимальным извлечением средств.
Различные средства могут быть объединены для эффективного повышения эффективности, стабильности и безопасности стратегии.
Общая логика этой стратегии ясна и понятна, используя индикатор DMI для определения направления тренда цен и индикатор ADX в качестве вспомогательного показателя силы тренда, при этом линейные задержки эффективно контролируют риск. Стратегия относительно стабильна, но все еще требует осторожности в отношении определенных рисков. Благодаря постоянной оптимизации и тестированию можно постепенно улучшать надежность и эффективность стратегии.
/*backtest start: 2023-02-13 00:00:00 end: 2024-02-19 00:00:00 period: 1d basePeriod: 1h 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/ //@version=5 //1.0 - 240202 @caddjax strategy(title = "+DI Crossover", overlay=false) //DMI + ADX Chart w/ overlay // © jrregencia lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50) len = input.int(6, 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) adxmax = input.int(50, title="ADX Max Buying Area", minval=1, maxval=100) adxmin = input.int(0, title="ADX Min Buying Area", minval=0, maxval=99) //DI cross alert DIPcross = ta.crossover(plus, minus) ? plus : na plotshape(DIPcross, style = shape.cross , color=color.white, location=location.absolute) plot(adx, color=color.rgb(255, 238, 0, 23), title="ADX", linewidth=2) p1 = plot(plus, color=color.rgb(16, 137, 0, 31), title="+DI", linewidth=1) p2 = plot(minus, color=color.rgb(143, 82, 255, 25), title="-DI", linewidth=1) adxmaxl = hline(adxmax, title="ADX MaxLine", color=color.silver, linestyle=hline.style_solid) adxminl = hline(adxmin, title="ADX MinLine", color=color.silver, linestyle=hline.style_solid) fill(p1, p2, title="Cloud Fill", color = plus > minus ? color.teal : color.red, transp=50) fill(adxmaxl, adxminl, title="ADX Fill", color=color.silver, transp=90) // Configure trail stop level with input options (optional) longTrailPerc = input.float(3, title="Trail Long Loss (%)", minval=0.0, step=0.1) * 0.01 // Determine trail stop loss prices longStopPrice = 0.0 // Determine entry condition enterLong = ta.crossover(plus, minus) ? plus : na longStopPrice := if strategy.position_size > 0 stopValue = high[1] * (1 - longTrailPerc) math.max(stopValue, longStopPrice[1]) else 0 // Submit entry orders if enterLong strategy.entry("EL", strategy.long) // Submit exit orders for trail stop loss price if strategy.position_size > 0 strategy.exit("XL TRL STP", stop=longStopPrice)