Динамическое подтверждение тренда разворот разрыв справедливой стоимости количественная торговая стратегия

FVG IFVG SMA ATR 趋势确认 跟踪止损 动态风险管理
Дата создания: 2025-02-21 11:55:42 Последнее изменение: 2025-07-03 15:00:53
Копировать: 3 Количество просмотров: 606
2
Подписаться
319
Подписчики

Динамическое подтверждение тренда разворот разрыв справедливой стоимости количественная торговая стратегия Динамическое подтверждение тренда разворот разрыв справедливой стоимости количественная торговая стратегия

Обзор

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

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

Основная логика стратегии включает следующие ключевые шаги:

  1. FVG-тестирование: выявление пробелов в справедливой стоимости путем анализа совпадений между ценовым диапазоном текущей линии и предыдущей линии.
  2. IFVG подтверждает: образуется обратный сигнал, когда цена пересекает высокие или низкие точки FVG.
  3. Подтверждение трендов: используется перекрестная связь 50- и 200-летней простой подвижной средней (SMA) для определения тенденций рынка.
  4. Условия входа: в восходящем тренде, когда цена ниже нижней точки IFVG; в нисходящем тренде, когда цена выше высокой точки IFVG.
  5. Управление рисками: применение фиксированного стопа и динамического стопа, основанного на ATR.

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

  1. Многомерное подтверждение: в сочетании с многоуровневым анализом ценовой структуры (IFVG) и трендового индикатора (SMA) повышает надежность торгов.
  2. Динамическое управление рисками: с помощью ATR-индикатора отслеживаются и отслеживаются остановки, защищающие уже полученные прибыли, а также предоставляя цены достаточного пространства для колебаний.
  3. Оптимизация прибыли по сравнению с риском: использование 3R для установления целевых показателей прибыли, чтобы добиваться более высокой прибыли на основе разумного контроля риска.
  4. Тренд-фильтр: перекрестное подтверждение тренда с помощью скользящих средних, чтобы избежать чрезмерной торговли на горизонтальном рынке.

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

  1. Риск скольжения: при резких колебаниях на рынке реальная цена может отклоняться от идеальной цены.
  2. Задержка тренда: подвижная средняя, используемая в качестве отстающего показателя, может привести к небольшой задержке времени входа.
  3. Риск ложного прорыва: цена может быстро отступить после прорыва и вызвать остановку.
  4. Чувствительность к параметрам: стратегическая производительность чувствительна к параметрам, таким как SMA-циклы и ATR-множители.

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

  1. Оптимизация показателей: можно рассмотреть возможность добавления сигнала подтверждения загрузки, чтобы повысить надежность прорыва.
  2. Параметры самостоятельно адаптируются: внедряются индикаторы рыночной волатильности, динамически корректируются циклы SMA и кратность ATR.
  3. Оптимизация времени входа: добавление механизма подтверждения обратного вызова цены, чтобы избежать повышения или снижения цены.
  4. Управление позициями: размер позиции динамически корректируется в зависимости от волатильности рынка и интенсивности тренда.
  5. Оптимизация стоп-механизма: более гибкий стоп-параметр для отслеживания убытков при сильных тенденциях.

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

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

Исходный код стратегии
/*backtest
start: 2025-05-31 00:00:00
end: 2025-06-30 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
args: [["RunMode",1,358374]]
*/

//@version=6
strategy("Inverted FVG Strategy with Trend Check and Trailing Stops", default_qty_value = 10, overlay=true)

// Function to detect FVG
fvgDetected(src, high, low) =>
    float prevHigh = na
    float prevLow = na
    float prevClose = na
    float fvgHigh = na
    float fvgLow = na
    bool fvg = false
    if (not na(src[3]))
        prevHigh := high[3]
        prevLow := low[3]
        prevClose := src[3]
        if (src[2] > prevClose and low[2] > prevHigh) or (src[2] < prevClose and high[2] < prevLow)
            fvg := true
            fvgHigh := low[2] > prevHigh ? high[2] : na
            fvgLow := high[2] < prevLow ? low[2] : na
    [fvg, fvgHigh, fvgLow]

// Detect FVG on the chart
[fvg, fvgHigh, fvgLow] = fvgDetected(close, high, low)

// Detect IFVG - Inversion of FVG
bool ifvg = false
float ifvgHigh = na
float ifvgLow = na

if (fvg)    
    if (high[1] > fvgHigh and close[1] > open[1]) or (high[1] < fvgLow and close[1] < open[1])
        ifvg := true
        ifvgHigh := close[1] > open[1] ? high[1] : na
        ifvgLow := close[1] <  open[1] ? low[1] : na

// Plot FVG and IFVG zones for visualization
plot(ifvgHigh, title="IFVG High", color=color.red, linewidth=2, style=plot.style_cross)
plot(ifvgLow, title="IFVG Low", color=color.red, linewidth=2, style=plot.style_cross)

// Trend Check using Simple Moving Averages
smaShort = ta.sma(close, 50)  // Short term SMA
smaLong = ta.sma(close, 200)  // Long term SMA
bool uptrend = false
bool downtrend = false

uptrend := smaShort > smaLong  // Up trend if short SMA is above long SMA
downtrend := smaShort < smaLong  // Down trend if short SMA is below long SMA

// Plot SMAs for visualization
plot(smaShort, title="SMA Short", color=color.blue, linewidth=1)
plot(smaLong, title="SMA Long", color=color.orange, linewidth=1)

// Trading logic with trend confirmation
longCondition = ifvg and close < ifvgLow and uptrend
shortCondition = ifvg and close > ifvgHigh and downtrend

// Risk Definition - 使用百分比
stopLoss = 0.005   // 0.5% 止损
takeProfit = 0.015  // 1.5% 止盈

if (longCondition and strategy.position_size == 0)
    strategy.entry("Long", strategy.long)
    stopPrice = close * (1 - stopLoss)
    limitPrice = close * (1 + takeProfit)
    strategy.exit("Initial Long Exit", "Long", stop=stopPrice, limit=limitPrice)

if (shortCondition and strategy.position_size == 0)
    strategy.entry("Short", strategy.short)
    stopPrice = close * (1 + stopLoss)
    limitPrice = close * (1 - takeProfit)
    strategy.exit("Initial Short Exit", "Short", stop=stopPrice, limit=limitPrice)

// ATR for dynamic trailing stop
atr = ta.atr(14)

// Trailing Stop for Long Position if the trade has moved > 0.5% (half of takeProfit)
if (strategy.position_size > 0)
    profitThreshold = takeProfit * 0.5  // 1.5% profit threshold
    if (close - strategy.position_avg_price >= strategy.position_avg_price * profitThreshold)
        // 将止损移动到盈亏平衡点加上一点利润
        trailingStopLong = math.max(strategy.position_avg_price * (1 + profitThreshold), close - (atr * 2))
        strategy.exit("Trailing Stop Long", "Long", stop=trailingStopLong)

// Trailing Stop for Short Position if the trade has moved > 0.5% (half of takeProfit)
if (strategy.position_size < 0)
    profitThreshold = takeProfit * 0.5  // 1.5% profit threshold
    if (strategy.position_avg_price - close >= strategy.position_avg_price * profitThreshold)
        // 将止损移动到盈亏平衡点加上一点利润
        trailingStopShort = math.min(strategy.position_avg_price * (1 - profitThreshold), close + (atr * 2))
        strategy.exit("Trailing Stop Short", "Short", stop=trailingStopShort)