Estrategia de negociación cuantitativa de brecha de valor razonable con confirmación de tendencia dinámica

FVG IFVG SMA ATR 趋势确认 跟踪止损 动态风险管理
Fecha de creación: 2025-02-21 11:55:42 Última modificación: 2025-07-03 15:00:53
Copiar: 3 Número de Visitas: 606
2
Seguir
319
Seguidores

Estrategia de negociación cuantitativa de brecha de valor razonable con confirmación de tendencia dinámica Estrategia de negociación cuantitativa de brecha de valor razonable con confirmación de tendencia dinámica

Descripción general

La estrategia es un sistema de negociación cuantitativa basado en el Inverted Fair Value Gap (IFVG), combinado con una confirmación de tendencia de las medias móviles y un mecanismo de seguimiento dinámico del stop loss. La estrategia identifica el Fair Value Gap (FVG) en el comportamiento de los precios y su forma de reversión, y opera en caso de apoyo de la tendencia. Este método asegura que la dirección de negociación esté en consonancia con la tendencia general del mercado y captura los puntos clave de reversión en el mercado.

Principio de estrategia

La lógica central de la estrategia incluye los siguientes pasos clave:

  1. Detección de FVG: identificación de brechas de valor justo mediante el análisis de la superposición entre el rango de precios de la línea de referencia actual y la línea de referencia anterior.
  2. IFVG confirma: Se forma una señal de reversión cuando el precio supera el punto más alto o más bajo de FVG.
  3. Confirmación de tendencias: se utiliza la relación cruzada entre las medias móviles simples de 50 y 200 periodos (SMA) para determinar las tendencias del mercado.
  4. Condiciones de entrada: en una tendencia ascendente, hacer más cuando el precio está por debajo del punto bajo de IFVG; en una tendencia descendente, hacer menos cuando el precio está por encima del punto alto de IFVG.
  5. Gestión de riesgos: la combinación de stop loss fijo y stop loss de seguimiento dinámico basado en ATR.

Ventajas estratégicas

  1. Confirmación multidimensional: combina el análisis multidimensional de la estructura de precios (IFVG) y el indicador de tendencias (SMA) para mejorar la fiabilidad de las transacciones.
  2. Gestión de riesgos dinámica: los indicadores ATR se ajustan para rastrear el stop loss, protegiendo los márgenes de ganancias y dando suficiente espacio a los precios para fluctuar.
  3. Optimización de la relación entre el riesgo y el beneficio: el establecimiento de objetivos de ganancias con las 3Rs para buscar mayores beneficios sobre la base de un control razonable del riesgo.
  4. Filtración de tendencias: Confirmación de tendencias cruzada con las medias móviles para evitar el exceso de operaciones en el mercado horizontal.

Riesgo estratégico

  1. Riesgo de deslizamiento: cuando el mercado fluctúa fuertemente, el precio de transacción real puede estar desviado del precio ideal.
  2. Retraso de la tendencia: el promedio móvil como indicador de retraso puede causar un pequeño retraso en el tiempo de entrada.
  3. Riesgo de falsa ruptura: el precio puede retroceder rápidamente después de la ruptura, provocando un stop loss.
  4. Sensibilidad de parámetros: la estrategia de rendimiento es más sensible a la configuración de parámetros como el ciclo SMA y el múltiplo ATR.

Dirección de optimización de la estrategia

  1. Optimización de indicadores: Se puede considerar agregar señales de confirmación de la transacción para mejorar la fiabilidad de la ruptura.
  2. Parámetros de adaptación: introducción de indicadores de volatilidad del mercado, ajuste dinámico del ciclo SMA y el multiplicador ATR.
  3. Optimización del tiempo de entrada: Mecanismo de confirmación de devolución de precios, evitando la subida o bajada.
  4. Administración de posiciones: ajuste dinámico del tamaño de las posiciones en función de la volatilidad del mercado y la intensidad de la tendencia.
  5. Mecanismo de parada optimizado: Parámetros de parada de seguimiento más flexibles en una tendencia fuerte.

Resumir

La estrategia construye un sistema de negociación completo mediante la combinación de la estructura de precios de IFVG, la confirmación de tendencias y la gestión de riesgos dinámicos. La estrategia, al tiempo que mantiene la simplicidad, tiene en cuenta los elementos clave como las tendencias del mercado, el control de riesgos y la gestión de ganancias.

Código Fuente de la Estrategia
/*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)