
Стратегия, основанная на ADX и Supertrend, является количественным методом торговли, который сочетает в себе инструменты подтверждения тренда с помощью направленного индикатора, который создает полноценную торговую систему, объединяя средний ориентировочный индекс (ADX), направленный движущийся индикатор (DMI) и индикатор Supertrend, а также дополнительный анализ ордерных блоков (Order Block) с переменным весом. Эта стратегия особо подчеркивает механизм проверки непрерывных условий, то есть торговый сигнал может быть вызван только после выполнения нескольких технических условий.
Основная логика этой стратегии основана на следующих ключевых компонентах:
Анализ показателей ADX и DMI: Система использует индикатор ADX для измерения силы рыночных тенденций и определяет направление тенденции путем сравнения значений +DI и -DI. Когда значение ADX выше установленного порога ((по умолчанию 25), это указывает на наличие сильной тенденции на рынке; +DI больше, чем -DI, означает тенденцию к повышению, а наоборот, означает тенденцию к снижению.
Подтверждение тренда SupertrendСупертрендный индикатор как инструмент подтверждения второго двойного тренда, поддерживающий покупку, когда он показывает положительный сигнал ((тренд == -1), и продажу, когда он показывает отрицательный сигнал ((тренд == 1). Изменения в супертренде также используются в качестве условия для выхода из сигнала.
Блоки заказов с перевесом по объему поставки: В стратегии введены механизмы идентификации динамических зон поддержки и сопротивления на основе количества сделок. Когда объем сделок превышает определенное кратное среднего уровня (в 2 раза по умолчанию) и цена достигает локального максимума или минимума, система отмечает эти зоны как потенциальные блоки заказов и сохраняет их действие в течение установленного периода времени (в 15 циклов по умолчанию).
Проверка условий непрерывностиНаиболее уникальной частью стратегии является ее механизм проверки условий непрерывности. Система отслеживает торговые условия с помощью четырех бульерных знаков: условия тренда, условия ADX, условия DMI и региональные условия. Торговый сигнал будет срабатывать только тогда, когда все условия будут удовлетворены.
Условия покупки:
Условия продажи:
Логика выхода: когда индикатор Supertrend изменяет направление тренда, стратегия устраняет текущую позицию.
Механизм многократного подтвержденияС помощью интеграции нескольких технических индикаторов стратегия значительно уменьшает количество ложных сигналов и повышает точность торгов. В частности, сочетание ADX и Supertrend обеспечивает силу тренда и дает четкое направление.
Проверка условий непрерывностиПродолжительная проверка стратегии позволяет системе действовать, когда все условия созревают, а не только на основе одного сигнала. Такая конструкция значительно повышает устойчивость стратегии и уменьшает ненужные сделки в неблагоприятных рыночных условиях.
Динамическая идентификация поддержки и сопротивленияАнализ блока заказов, основанный на количестве сделок, предоставляет стратегию с динамическими ориентирами на поддержку и сопротивление, что позволяет принимать решения о сделках вблизи микроструктуры рынка и избегать регрессивной торговли в ключевых ценовых зонах.
Ясный механизм выходаСтратегия: использование обратного пути Supertrend в качестве сигнала выхода, обеспечивает объективный и своевременный метод остановки и остановки, эффективно управляет риском каждой сделки.
Высокая степень адаптацииС помощью множества настраиваемых параметров стратегия может адаптироваться к различным рыночным условиям и видам торгов, что повышает ее практичность и гибкость.
Параметр ЧувствительностьЭффективность стратегии в значительной степени зависит от параметров. Выбор параметров, таких как длина ADX, кратность Supertrend и цикл ATR, оказывает значительное влияние на эффективность стратегии. Неправильная параметровая настройка может привести к чрезмерной торговле или пропуску важных возможностей.
Риск изменения трендаНесмотря на использование многократного подтверждения, в условиях сильного рыночного переворота или высокой волатильности стратегия может быть подвержена риску отставания. Решение заключается в том, чтобы рассмотреть возможность внедрения фильтров волатильности или динамической корректировки порога ADX для адаптации к различным состояниям волатильности рынка.
Риск отклонений в количестве: стратегия зависит от анализа объема сделок, и в случае аномалий объема сделок (например, неожиданного необычного большого объема сделок) может привести к ошибочному распознаванию блоков заказов. Решение - это увеличение обработки сглаживания сделок или введение дополнительных механизмов обнаружения аномалий.
Оптимизация рискаПоскольку стратегия содержит множество регулируемых параметров, это может привести к чрезмерной оптимизации, которая позволяет стратегии хорошо работать на исторических данных, но плохо работать в реальных сделках. Решение заключается в использовании прогрессивного тестирования и тестирования вне образца, чтобы обеспечить стабильность стратегии.
Риск ликвидностиВ низколиквидных рынках большое количество сделок может привести к проскальзыванию или задержке исполнения ордеров, что может повлиять на эффективность стратегии. Решение заключается в добавлении дополнительных условий фильтрации ликвидности в низколиквидных условиях или корректировке размера позиции.
Изменение динамических параметров: Стратегия может быть дополнительно оптимизирована для автоматической корректировки ADX-температуры и параметров Supertrend в зависимости от волатильности рынка. Например, в периоды высокой волатильности можно повысить ADX-температуру, уменьшая ложные прорывные сигналы; в периоды низкой волатильности можно снизить температуру и повысить чувствительность. Такой адаптивный механизм позволяет стратегии лучше адаптироваться к различным рыночным этапам.
Интеграция фильтра времениВнедрение временного фильтра позволяет избежать торговли в периоды, когда рынок открыт, закрыт или имеет низкую ликвидность. Эта оптимизация особенно применима к стратегии торговли в течение дня, которая может значительно уменьшить ненужные сделки, вызванные рыночным шумом.
Анализ многовременных рамок: С помощью интеграции информации о тенденциях более высоких временных рамок стратегия может обеспечить согласованность направления торговли с более широкими тенденциями. Например, сделки могут быть выполнены только в том случае, если направление тренда дневной линии и часовой линии совпадает, что повышает шансы на победу и снижает риск обратной торговли.
Усиление управления рисками: Механизм выхода из текущей стратегии относительно прост, и можно усилить управление рисками, добавив мобильный стоп, фильтрацию на убытки или расчет стоп-стоп на основе волатильности. Эти улучшения позволяют лучше защищать прибыль и контролировать риск на каждой сделке.
Классификация состояния рынкаВнедрение классификации состояния рынка, позволяющей стратегии идентифицировать различные рыночные условия, такие как период сверки, период тренда и период высокой волатильности, и корректировать логику торговли в соответствии с этим. Такая оптимизация позволяет избежать торговли в неблагоприятных для стратегии условиях рынка, что еще больше повышает устойчивость стратегии.
Стратегия, основанная на ADX и Supertrend, создает всеобъемлющую и надежную торговую систему, объединяя несколько технических показателей и уникальный механизм верификации условий для постоянной торговли. Стратегия делает особый упор на торговлю в идеальных рыночных условиях, избегая многих распространенных ловушек ложных сигналов.
Несмотря на многочисленные преимущества этой стратегии, пользователям необходимо обращать внимание на потенциальные проблемы, такие как чувствительность к параметрам, риск обратного тренда и чрезмерная оптимизация. Существует большое пространство для оптимизации стратегии путем внедрения механизмов регулирования динамических параметров, анализа многократных временных рамок и усиленного управления рисками. В конечном итоге, этот метод в сочетании с техническими показателями и анализом микроструктуры рынка представляет собой сбалансированную и всеобъемлющую количественную торговую концепцию, подходящую для инвесторов, которые ищут качественные торговые сигналы, а не высокочастотные торговые сигналы.
/*backtest
start: 2024-07-22 00:00:00
end: 2025-07-20 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":2000000}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © algostudio
//Code Generated using PineGPT - www.marketcalls.in
//@version=6
strategy("ADX + Supertrend Persistent Entry Logic", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, process_orders_on_close=true, calc_on_every_tick=true, max_bars_back=500)
// === INPUTS === //
adxLen = input.int(7, "ADX Length")
dilen = input.int(7, "+DI/-DI Length")
adxThresh = input.float(25, "ADX Threshold")
supertrendFactor = input.float(2.0, "Supertrend Multiplier", minval=0.1)
supertrendLen = input.int(7, "Supertrend ATR Length")
volLookback = input.int(10, "Volume Zone Lookback")
volMult = input.float(2.0, "Volume Threshold Multiplier")
zoneDuration = input.int(15, "Zone Display Duration")
// === ADX AND DI CALCULATION === //
[plusDI, minusDI, adx] = ta.dmi(dilen, adxLen)
// === SUPER TREND CALCULATION === //
[supertrend, trend] = ta.supertrend(supertrendFactor, supertrendLen)
bullishSupertrendShift = trend == -1 and trend[1] == 1
bearishSupertrendShift = trend == 1 and trend[1] == -1
// === DYNAMIC ORDER BLOCK ZONES (Volume weighted) === //
volThreshold = ta.sma(volume, volLookback) * volMult
volHighs = high == ta.highest(high, 5) and volume > volThreshold
volLows = low == ta.lowest(low, 5) and volume > volThreshold
obSupportValid = ta.valuewhen(volLows, low, 0)
bbResistanceValid = ta.valuewhen(volHighs, high, 0)
obSupportStart = ta.valuewhen(volLows, bar_index, 0)
bbResistanceStart = ta.valuewhen(volHighs, bar_index, 0)
obSupportEnd = obSupportStart + zoneDuration
bbResistanceEnd = bbResistanceStart + zoneDuration
inObZone = bar_index >= obSupportStart and bar_index <= obSupportEnd
inBbZone = bar_index >= bbResistanceStart and bar_index <= bbResistanceEnd
// === PLOT ZONES === //
plot(inObZone ? obSupportValid : na, title="OB Support Line", color=color.green, linewidth=2)
plot(inBbZone ? bbResistanceValid : na, title="BB Resistance Line", color=color.red, linewidth=2)
plot(supertrend, color=trend == 1 ? color.red : color.green, title="Supertrend")
// === PERSISTENT FLAGS === //
var bool buyTrendMet = false
var bool buyAdxMet = false
var bool buyDiMet = false
var bool buyZoneClear = false
var bool sellTrendMet = false
var bool sellAdxMet = false
var bool sellDiMet = false
var bool sellZoneClear = false
// === READY FLAGS (declare early to resolve use-before-declare issues) === //
buyReady = buyTrendMet and buyAdxMet and buyDiMet and buyZoneClear
sellReady = sellTrendMet and sellAdxMet and sellDiMet and sellZoneClear
// Track condition flags
buyTrendMet := trend == -1 ? true : buyTrendMet
buyAdxMet := adx > adxThresh ? true : (buyReady ? buyAdxMet : false)
buyDiMet := plusDI > minusDI ? true : buyDiMet
buyZoneClear := not inBbZone ? true : buyZoneClear
sellTrendMet := trend == 1 ? true : sellTrendMet
sellAdxMet := adx > adxThresh ? true : (sellReady ? sellAdxMet : false)
sellDiMet := minusDI > plusDI ? true : sellDiMet
sellZoneClear := not inObZone ? true : sellZoneClear
// Recalculate readiness after condition updates
buyReady := buyTrendMet and buyAdxMet and buyDiMet and buyZoneClear
sellReady := sellTrendMet and sellAdxMet and sellDiMet and sellZoneClear
// === STRATEGY ENTRIES === //
if buyReady
strategy.entry("Buy", strategy.long)
buyTrendMet := false
buyAdxMet := false
buyDiMet := false
buyZoneClear := false
if sellReady
strategy.entry("Sell", strategy.short)
sellTrendMet := false
sellAdxMet := false
sellDiMet := false
sellZoneClear := false
// === STRATEGY EXITS === //
if strategy.position_size > 0 and trend == 1
strategy.close("Buy")
if strategy.position_size < 0 and trend == -1
strategy.close("Sell")
// === PLOTS === //
plotshape(buyReady, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellReady, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// For more tutorials on Tradingview Pinescript visit , visit https://www.marketcalls.in/category/tradingview