Динамическая стратегия дневной торговли с разрывом справедливой стоимости: система бэктестинга с несколькими таймфреймами, основанная на теории SMC

FVG SMC SL TP Risk-Reward Ratio
Дата создания: 2025-03-26 15:27:29 Последнее изменение: 2025-03-26 15:27:29
Копировать: 2 Количество просмотров: 601
2
Подписаться
319
Подписчики

Динамическая стратегия дневной торговли с разрывом справедливой стоимости: система бэктестинга с несколькими таймфреймами, основанная на теории SMC Динамическая стратегия дневной торговли с разрывом справедливой стоимости: система бэктестинга с несколькими таймфреймами, основанная на теории SMC

Обзор

Дневная торговая стратегия, основанная на теории рыночной структуры, представляет собой количественную торговую систему, которая специализируется на выявлении и торговле ценовым пробелом между справедливой стоимостью (Fair Value Gap, или FVG). Эта стратегия использует три гиперлинейные формы, чтобы обнаружить неравновесие спроса и предложения в ценовом поведении и совершать входные сделки в этих районах при обратной оценке цен.

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

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

  1. Механизм обнаружения пробеловСтратегия использует трёхстрочную модель для выявления двух типов FVG:

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

    • FVG-наблюдатель: вызывает многосигнальный сигнал, когда цена опускается к верхней границе FVG-зоны ((высокая точка)).
    • Падение FVG: когда цена отскочит к нижней границе зоны FVG (низкая точка), то будет задействован сигнал дефолта.
  3. Управление рисками

    • Стоп-лосс устанавливается на границе соответствующего FVG ((нижние точки прибыльного FVG или высокие точки прибыльного FVG))
    • Цель прибыли использует соотношение риска и прибыли 1:2 и рассчитывается следующим образом: входная цена ± ((входная цена - стоп-лосс) × 2 ).
  4. Позиция на конец дня равнозначна.Стратегия: Автоматически ликвидировать все позиции и очистить все FVG-аресты каждый день в 15:15 по индийскому времени, чтобы подготовиться к следующему торговому дню

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

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

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

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

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

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

  3. Механизмы контроля риска

    • Предусмотренный стоп-лосс определяет максимальный риск для каждой сделки.
    • Фиксированная отдача от риска оправдана выигрышной вероятностью, необходимой для обеспечения долгосрочной прибыли.
    • Обязательное закрытие позиций в конце дня устраняет риск остаться на ночь.
  4. Комбинированный потенциал прибыли: Позволяя накладывать сделки (до 5 позиций), стратегия позволяет значительно увеличить прибыль на рынке с сильным трендом, контролируя при этом риск для каждой позиции с помощью стоп-лосса.

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

  6. Эффективность программирования: код использует массивный способ хранения информации FVG и эффективного управления несколькими потенциальными торговыми возможностями, обеспечивая возможность отслеживания и реагирования системы на нескольких уровнях цен.

  7. Визуальная помощь: Стратегия визуально отображает на графике зоны FVG ((зеленый - быстрый FVG, красный - нисходящий FVG), помогает трейдеру понять процесс принятия решений в системе.

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

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

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

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

  3. Ограничения фиксированного коэффициента возврата рискаИспользование фиксированного соотношения риска и прибыли в соотношении 1:2 может не подходить для всех рыночных условий. В менее волатильных рынках такое может быть трудно достижимо; в высоко волатильных рынках может быть преждевременно снято с выгодных сделок.

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

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

  6. Потенциальные проблемы с фиксированным выходомВыход в определенное время суток может привести к преждевременному выходу в выигрышном положении или к упущению лучшей возможности выхода в невыигрышном положении. Учитывайте условия выхода в сочетании с ценовыми действиями.

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

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

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

  1. Фильтрация структуры рынка

    • Осуществление более высокого уровня системы распознавания трендов, торговля FVG только в направлении тренда.
    • Можно добавить простые фильтры движущихся средних или более сложный анализ структуры рынка.
    • Такие фильтры позволяют значительно снизить убытки от контрастных сделок.
  2. Корректировка волатильности

    • Достижение динамических целей по остановке убытков и прибыли, основанных на текущей волатильности рынка, а не на использовании фиксированного коэффициента возврата риска.
    • Расширяйте цели в условиях высокой волатильности и ужесточайте цели в условиях низкой волатильности.
    • Для количественного определения волатильности можно использовать ATR (Average True Range) или аналогичный показатель.
  3. Подтверждение объема сделки

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

    • Динамический размер позиции, основанный на исторической победе, текущей волатильности и конкретных характеристиках FVG.
    • Для более “чистых” FVG (с более четкой структурой трёх нитей) или для FVG, сформированных в сильных трендах, можно увеличить размер позиции.
  5. Анализ многовременных рамок

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

    • Изменения в логике накладывания сделок, основанные на силе тренда и успешности предыдущих сделок.
    • Возможность наложения увеличивается после выигрышной сделки, а уменьшается после убыточной.
  7. Машинное обучение

    • Внедрение алгоритмов машинного обучения для выявления наиболее вероятных признаков FVG.
    • Это может включать в себя анализ факторов, таких как размер FVG, скорость формирования и рыночная обстановка.
  8. Фреймворк статистической обратной связи

    • Разработка более полной системы отзывов для оценки эффективности стратегии в различных рыночных условиях.
    • Использование моделирования Монте-Карло для оценки ожидаемых результатов при различных комбинациях параметров и рыночных условиях.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-03-26 00:00:00
end: 2025-03-25 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Intraday FVG", overlay=true, pyramiding=5, max_bars_back=500, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent)

// 2. FVG Detection (Three-Candle Pattern)
var bullFVGHigh = array.new_float()
var bullFVGLow = array.new_float()
var bullFVGIndex = array.new_int()
var bearFVGHigh = array.new_float()
var bearFVGLow = array.new_float()
var bearFVGIndex = array.new_int()

detectFVG() =>

    // Bullish FVG: Current low > prior high AND next high < current low
    bullCondition = low > high[2] and close[1] > high[2]
    // Bearish FVG: Current high < prior low AND next low > current high
    bearCondition = high < low[2] and close[1] < low[2]


    if bullCondition 
        // log.info("bull condition met: {0} {0} {0}", high[2], close[1], low)
        array.push(bullFVGHigh, low)
        array.push(bullFVGLow, low[2])
        array.push(bullFVGIndex, bar_index)

    
    if bearCondition
        // log.info("bear condition met: {0} {0} {0}", low[2], close[1], high)
        array.push(bearFVGHigh, high[2])
        array.push(bearFVGLow, high)
        array.push(bearFVGIndex, bar_index)

detectFVG()

// 3. Retest Execution Logic
checkRetests(arrayHigh, arrayLow, barIndex, direction) =>
    // log.info("{0} : {1}", bar_index, time)
    i = array.size(arrayHigh) - 1
    
    while i >= 0

        // log.info("barIndex : {0}" , array.get(barIndex, i))
        // log.info("bar_index : {0}" , bar_index)
        
        if array.get(barIndex, i) <  bar_index
            
            fvgHigh = array.get(arrayHigh, i)
            fvgLow = array.get(arrayLow, i)
            // log.info("visting : {0} : {1} : {2} : {3} ", array.get(barIndex, i), bar_index, fvgHigh, fvgLow)
            
            if direction == "long" and low <= fvgHigh
                // log.info("entering long")
                sl = array.get(arrayLow, i)  // Previous candle's low
                entry = close
                tp = entry + (entry - sl)*2
                strategy.entry("L"+str.tostring(array.get(barIndex, i)), strategy.long)
                strategy.exit("XL"+str.tostring(array.get(barIndex, i)), "L"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
                array.remove(arrayHigh, i)
                array.remove(arrayLow, i)
                array.remove(barIndex, i)
            
            if direction == "short" and high >= fvgLow
                // log.info("entering short")
                sl = array.get(arrayHigh, i)   // Previous candle's low
                entry = close
                tp = entry - (sl - entry)*2
                strategy.entry("S"+str.tostring(array.get(barIndex, i)), strategy.short)
                strategy.exit("XS"+str.tostring(array.get(barIndex, i)), "S"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
                array.remove(arrayHigh, i)
                array.remove(arrayLow, i)
                array.remove(barIndex, i)
        
        i := i - 1


checkRetests(bullFVGHigh, bullFVGLow, bullFVGIndex, "long")
checkRetests(bearFVGHigh, bearFVGLow, bearFVGIndex,"short")

// 5. Daily Exit at 3:15 PM IST
exitTime = hour == 15 and minute >= 15
if exitTime
    strategy.close_all()
    array.clear(bullFVGHigh)
    array.clear(bullFVGLow)
    array.clear(bearFVGHigh)
    array.clear(bearFVGLow)
    array.clear(bullFVGIndex)
    array.clear(bearFVGIndex)