Профессиональная стратегия отката тренда: теория Доу и модель отфильтрованного импульса ADX

趋势 回调 道氏理论 ADX EMA 市场结构 止损 止盈 风险管理 HH/HL LH/LL
Дата создания: 2025-07-14 11:22:46 Последнее изменение: 2025-07-14 11:22:46
Копировать: 0 Количество просмотров: 249
2
Подписаться
319
Подписчики

Профессиональная стратегия отката тренда: теория Доу и модель отфильтрованного импульса ADX Профессиональная стратегия отката тренда: теория Доу и модель отфильтрованного импульса ADX

Обзор

Профессиональная стратегия по реверсу тренда - это торговая система, основанная на ключевых принципах теории Доу, предназначенная для выявления и торговли установленными возможностями реверса в тренде. Эта стратегия определяет направление тренда с помощью структуры рынка (основная ось с высокими и низкими точками) и использует индикаторные движущиеся средние (EMA) для точного определения времени реверса.

Стратегический принцип

Логика этой стратегии состоит из трех ключевых шагов:

Шаг 1: определение тенденции (теория Доуша)

  • Основные тенденции можно определить, анализируя последние опорные точки.
  • Когда стратегия обнаруживает более высокие высоты и более высокие низкие высоты (HH / HL), она утверждает, чтоТенденция к росту
  • При обнаружении более низких максимумов и более низких минимумов (LH/LL) следует признать, чтоТенденция к снижению
  • Если ни одна из этих моделей не существует, стратегия считает, что рынок находится в диапазоне колебаний и не ищет сделки

Шаг 2: входный сигнал (переадресация на EMA)

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

Шаг 3: Подтверждение и управление рисками

  • Фильтр ADXДля того, чтобы убедиться, что тренд достаточно силен, входные сигналы проверяются только в том случае, если ADX выше пользовательского определения (например, 25), что помогает отфильтровать колебания или консолидировать слабые сигналы на рынке.
  • Остановка убытковНачальный стоп автоматически и логически помещается в последнюю точку структуры рынка:
    • Стоп-лосс для многосторонних сделокlastPivotLow(Последнее низкое ося)
    • Стоп-лосс в случае сделки с пустой рыбойlastPivotHigh(Последнее вершины оси)
  • ЗадержкаR:R) рассчитывает два уровня стоп-офф. Стратегия позволяет получить прибыль в первой части цели (TP1) и перенести оставшуюся позицию во вторую (TP2)

Стратегические преимущества

Взглянув на код, можно сделать вывод, что у этой стратегии есть следующие значительные преимущества:

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

  2. Объективные условия поступленияВходные точки определяются через четко определенные цены и перекрестные связи с EMA, что уменьшает субъективные суждения и делает торговые решения более согласованными и повторяемыми.

  3. Динамическое управление рискамиСтоп-позиции: автоматически настраиваются на основе структуры рынка, а не с использованием фиксированных пропорций или пунктов, что гарантирует, что стоп-позиции соответствуют и обоснованы текущим состояниям рынка

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

  5. Фильтр состояния рынкаADX-фильтр помогает избежать торговли на рынках без тренда или слабо трендовых рынках и вступать в рынок только тогда, когда тренд достаточно силен

  6. Высокая степень адаптацииС помощью настраиваемых параметров (например, периода поворота осей, длины EMA и понижения ADX) стратегия может адаптироваться к характеристикам различных рынков и временных рамок.

  7. Полный цикл сделокСтратегия: обеспечивает полную систему торговли, которая охватывает весь цикл торговли - от определения трендов, времени входа, управления рисками до стратегии выхода

Стратегический риск

Несмотря на разумную конструкцию, существуют некоторые потенциальные риски и ограничения:

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

  2. Фальшивый вызовВ сильных тенденциях цены могут не глубоко отклоняться к уровню EMA, что приводит к пропущенным торговым возможностям; напротив, в волатильных рынках могут появляться многочисленные ложные отклонения

  3. Чрезмерное перекашиваниеСлишком высокая отметка ADX может привести к упущенным выгодным торговым возможностям, а слишком низкая отметка может не эффективно отфильтровывать слабые трендовые условия

  4. Параметр Чувствительность: Политическая производительность очень чувствительна к параметрам (особенно к периоду обратного отсчета и длине EMA), неправильный выбор параметров может привести к плохой производительности стратегии

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

Способы снижения риска

  • Проведение тщательной исторической регрессии, оптимизация параметров для конкретных рынков и временных рамок
  • Подумайте о добавлении дополнительных фильтров, таких как индикатор волатильности или подтверждение силы тренда
  • Применение адаптивных параметров для корректировки периода ретроспекции и длины EMA в зависимости от текущей рыночной ситуации
  • Подумайте об изменении механизма входа, например, используйте цены, близкие к EMA, а не перекрестные EMA в качестве сигнала
  • Добавление подтверждения объема сделок или других структурных показателей рынка для улучшения качества сигнала

Направление оптимизации стратегии

На основе анализа кода можно предложить следующие направления оптимизации:

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

  2. Анализ многовременных рамок: консолидация более высоких временных рамок, подтверждение тенденций, гарантирование торговли в направлении более широких тенденций и предотвращение обратной торговли

  3. Укрепление тенденции подтвержденоПомимо существующих моделей HH/HL и LH/LL, следует рассмотреть возможность интеграции других признаков подтверждения тренда, таких как трендовые линии, скольжение скользящих средних или динамический индикатор

  4. Интеллектуальные меры по ликвидации убытков: реализация механизма отслеживания стоп-лосс, автоматическое перемещение стоп-лосс позиций для защиты прибыли, если сделка движется в положительном направлении

  5. Коррекция волатильности рынка: более консервативная настройка на рынки с высокой волатильностью с учетом рискованного коэффициента возврата и стоп-дистанции, скорректированных в соответствии с текущей волатильностью рынка

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

  7. Фильтр времениПрименение временной фильтрации, чтобы избежать торговли в известные периоды низкой ликвидности или высокой волатильности, такие как важные пресс-релизы или открытие / закрытие рынка

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

Эти оптимизации помогут повысить устойчивость, адаптивность и общую производительность стратегий, особенно в различных рыночных условиях.

Подвести итог

Профессиональная стратегия трендового отклонения - это хорошо структурированная торговая система, объединяющая основные принципы теории Дауса с современными инструментами технического анализа. Используя структуру рынка для определения тенденции, EMA для идентификации отклонений и фильтр ADX для обеспечения силы тенденции, стратегия предоставляет всеобъемлющую структуру для идентификации высоковероятных торговых возможностей.

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

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

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

Исходный код стратегии
//@version=5
strategy("Pullback Pro Dow Strategy v7 (ADX Filter)",
         shorttitle="Pullback Pro v7 ADX",
         overlay=true,
         initial_capital=10000,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=10,
         commission_type=strategy.commission.percent,
         commission_value=0.04,
         process_orders_on_close=true)

// --- Grouping ---
string GP_DOW = "① Dow Theory Settings"
string GP_ENTRY = "② Entry Logic (Pullback)"
string GP_RISK = "③ Risk & Exit Management"
string GP_FILTER = "④ Filters"
string GP_DISPLAY = "Display Settings"

// --- Dow Theory Settings ---
pivotLookback = input.int(10, title="Pivot Lookback Period", minval=1, group=GP_DOW)

// --- Entry Logic (Pullback) ---
pullbackEmaLength = input.int(21, title="Pullback EMA Length", group=GP_ENTRY, tooltip="このEMAへの価格の接近を「押し目/戻り」と判断します。")

// --- Risk & Exit Management ---
riskRewardRatio1 = input.float(1.5, "Take Profit 1 R:R", minval=0.1, step=0.1, group=GP_RISK, tooltip="TP1のリスクリワード比率")
qtyPercentTP1 = input.int(50, title="Take Profit 1 (%)", minval=1, maxval=100, group=GP_RISK, tooltip="TP1で決済するポジションの割合(%)")
riskRewardRatio2 = input.float(3.0, "Take Profit 2 R:R", minval=0.1, step=0.1, group=GP_RISK, tooltip="TP2のリスクリワード比率")

// --- Filters (Modified from RSI to ADX) ---
useAdxFilter = input.bool(true, title="Use ADX Trend Filter", group=GP_FILTER)
adxLength = input.int(14, "ADX Length", group=GP_FILTER)
adxThreshold = input.float(25, "ADX Threshold", group=GP_FILTER, tooltip="この値よりADXが大きい場合のみエントリーします。")

// --- Display Settings ---
showPivots = input.bool(true, title="Show Pivots", group=GP_DISPLAY)
showEma = input.bool(true, title="Show Pullback EMA", group=GP_DISPLAY)

// --- Indicator Calculations (Modified from RSI to ADX) ---
pivotHighPrice = ta.pivothigh(high, pivotLookback, pivotLookback)
pivotLowPrice = ta.pivotlow(low, pivotLookback, pivotLookback)
pullbackEma = ta.ema(close, pullbackEmaLength)
[diPlus, diMinus, adx] = ta.dmi(adxLength, adxLength) // ADX calculation

// --- Pivot & Trend Determination ---
var float lastPivotHigh = na, var float prevPivotHigh = na
var float lastPivotLow = na, var float prevPivotLow = na
if not na(pivotHighPrice)
    prevPivotHigh := lastPivotHigh
    lastPivotHigh := pivotHighPrice
if not na(pivotLowPrice)
    prevPivotLow := lastPivotLow
    lastPivotLow := pivotLowPrice

var int trendDirection = 0
if not na(lastPivotHigh) and not na(prevPivotHigh) and not na(lastPivotLow) and not na(prevPivotLow)
    isUptrend = lastPivotHigh > prevPivotHigh and lastPivotLow > prevPivotLow
    isDowntrend = lastPivotHigh < prevPivotHigh and lastPivotLow < prevPivotLow
    if isUptrend
        trendDirection := 1
    else if isDowntrend
        trendDirection := -1
    else
        trendDirection := 0

// --- Entry Conditions (Modified from RSI to ADX) ---
bool isUptrendConfirmed = trendDirection == 1
bool isDowntrendConfirmed = trendDirection == -1
bool buyPullback = isUptrendConfirmed and ta.crossunder(low, pullbackEma)
bool sellRally = isDowntrendConfirmed and ta.crossover(high, pullbackEma)
bool adxTrendOk = not useAdxFilter or adx > adxThreshold // ADX filter logic
bool goLong = buyPullback and adxTrendOk
bool goShort = sellRally and adxTrendOk

// --- Strategy State & Risk Management ---
var float stopLossPrice = na
var float takeProfitPrice1 = na
var float takeProfitPrice2 = na
var bool tp1_hit = false

// Entry Logic
if strategy.position_size == 0
    tp1_hit := false // Reset TP1 flag on new trade
    if goLong
        stopLossPrice := lastPivotLow
        riskSize = close - stopLossPrice
        if riskSize > 0
            takeProfitPrice1 := close + (riskSize * riskRewardRatio1)
            takeProfitPrice2 := close + (riskSize * riskRewardRatio2)
            strategy.entry("L", strategy.long)
            
    if goShort
        stopLossPrice := lastPivotHigh
        riskSize = stopLossPrice - close
        if riskSize > 0
            takeProfitPrice1 := close - (riskSize * riskRewardRatio1)
            takeProfitPrice2 := close - (riskSize * riskRewardRatio2)
            strategy.entry("S", strategy.short)

// ▼▼▼【最終修正版 v7】決済ロジック ▼▼▼
if strategy.position_size > 0 // ロングポジション("L")の決済ロジック
    // --- Stop Loss ---
    if low <= stopLossPrice
        strategy.close("L", comment="SL Hit")
        tp1_hit := false

    // --- Take Profit 1 ---
    if not tp1_hit and high >= takeProfitPrice1
        strategy.close("L", comment="TP1 Hit", qty_percent=qtyPercentTP1)
        tp1_hit := true

    // --- Take Profit 2 ---
    if tp1_hit and high >= takeProfitPrice2
        strategy.close("L", comment="TP2 Hit")
        tp1_hit := false

if strategy.position_size < 0 // ショートポジション("S")の決済ロジック
    // --- Stop Loss ---
    if high >= stopLossPrice
        strategy.close("S", comment="SL Hit")
        tp1_hit := false

    // --- Take Profit 1 ---
    if not tp1_hit and low <= takeProfitPrice1
        strategy.close("S", comment="TP1 Hit", qty_percent=qtyPercentTP1)
        tp1_hit := true

    // --- Take Profit 2 ---
    if tp1_hit and low <= takeProfitPrice2
        strategy.close("S", comment="TP2 Hit")
        tp1_hit := false

// --- Plotting ---
plot(showEma ? pullbackEma : na, "Pullback EMA", color=color.orange)
plotshape(showPivots ? pivotHighPrice : na, style=shape.xcross, location=location.absolute, color=color.red, size=size.tiny)
plotshape(showPivots ? pivotLowPrice : na, style=shape.xcross, location=location.absolute, color=color.blue, size=size.tiny)