Эта торговая стратегия сочетает в себе индекс направленного движения (DMI) и стохастический осциллятор для генерации торговых сигналов. DMI с его DI +, DI-линиями и средним направленным индексом (ADX) измеряет силу и направление тренда. Стратегия длится (купить), когда DI + выше DI-, ADX выше 25 и Stochastic %K ниже 20 (перепроданность). Она длится (продать), когда DI- выше DI+, ADX остается выше 25 и Stochastic %K превышает 80 (перепроданность). Динамические уровни стоп-лосса, основанные на последних максимальных и минимальных закрытиях, повышают контроль риска.
Стратегия основана на следующих ключевых компонентах:
DMI для определения тенденции: Диаграмма Диаграмма Диаграмма Диаграмма Диаграмма Диаграмма Диаграмма Диаграмма Диаграмма Диаграмма Диаграмма Диаграмма Диаграмма
Стохастический показатель перекупленности/перепродажи: %K линия стохастического показателя показывает текущую близость относительно недавнего максимума и минимума.
Логика сигналовСочетая DMI и Stochastic, стратегия становится длинной, когда DI+>DI- ((uptrend), ADX>25 (сильность тренда) и Stochastic %K <20 (перепроданность).
Динамическая стоп-лосс: Последние максимальные и минимальные закрытия после вступления используются в качестве динамических уровней стоп-лосса, что позволяет адаптивно контролировать риск.
Основными преимуществами этой стратегии являются:
Более высокая надежность с использованием двойного подтверждения DMI (тенденция) и Stochastic (перекуп/перепродажа).
Инновационная динамическая система стоп-лосса, основанная на недавних колебаниях цен, позволяет лучше контролировать риск.
Меньше параметров облегчает оптимизацию и реализацию.
Широкая адаптивность на финансовых рынках (акции, форекс, криптовалюты и т.д.) и временных рамках.
Сосновый скрипт позволяет напрямую применять на торговых платформах.
Некоторые риски следует учитывать:
Потенциальные ложные сигналы на трендовых рынках, когда ADX низкий.
Стохастический показатель является отстающим, рынок может измениться во время сигнала, объедините с ведущими показателями.
Динамические остановки не могут полностью избежать огромных колебаний тренда.
Недостаточная настройка параметров отрицательно влияет на производительность.
Чёрный лебедь требует приостановки стратегии, чтобы предотвратить аномальные потери.
Некоторые способы улучшения стратегии:
Добавление фильтров с дополнительными показателями, такими как скользящие средние и MACD, повышает надежность сигнала.
Оптимизация параметров с помощью обратного тестирования помогает обнаружить оптимальные настройки.
Настройка параметров на основе инструмента и временных рамок.
Включить подробные выходы журнала с использованием getInfo ((() для облегчения анализа и уточнения.
Наградите точки сигналов и линии стоп-лосса на графике для получения дополнительных сведений.
Разработать индивидуальные сигналы для получения своевременных уведомлений, позволяющих быстро вмешаться.
Эта стратегия сочетает в себе сильные стороны DMI и Стохастического осциллятора для определения направления тренда и уровня перекупа / перепродажи для вхождений в торговлю. Инновационный динамический механизм остановки потерь также позволяет более разумно контролировать риск. Благодаря надежным сигналам, широкой применимости, простоте использования и настройке, это эффективная алгоритмическая стратегия торговли. Дальнейшая оптимизация может привести к превосходной производительности.
/*backtest start: 2022-12-19 00:00:00 end: 2023-12-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("DMI with Stochastic and Dynamic Stop-Loss", shorttitle="DMI_Stoch_SL", overlay=true) length = input(14, title="DMI Length") adxThreshold = input(25, title="ADX Threshold") stochKLength = input(14, title="Stochastic %K Length") stochDLength = input(3, title="Stochastic %D Length") [diPlus, diMinus, adx] = ta.dmi(length, length) stochKLine = ta.stoch(close, high, low, stochKLength) var float lowestClose = na var float highestClose = na lowestClose := na(lowestClose) ? close : math.min(lowestClose, close) highestClose := na(highestClose) ? close : math.max(highestClose, close) longCondition = (diPlus > diMinus) and (adx > adxThreshold) and (stochKLine < 20) shortCondition = (diMinus > diPlus) and (adx > adxThreshold) and (stochKLine > 80) if longCondition strategy.entry("Buy", strategy.long) strategy.exit("Exit Buy", "Buy", stop=lowestClose) if shortCondition strategy.entry("Sell", strategy.short) strategy.exit("Exit Sell", "Sell", stop=highestClose)