Estratégia de negociação quantitativa de reversão de lacuna de valor justo de confirmação de tendência dinâmica

FVG IFVG SMA ATR 趋势确认 跟踪止损 动态风险管理
Data de criação: 2025-02-21 11:55:42 última modificação: 2025-07-03 15:00:53
cópia: 3 Cliques: 606
2
focar em
319
Seguidores

Estratégia de negociação quantitativa de reversão de lacuna de valor justo de confirmação de tendência dinâmica Estratégia de negociação quantitativa de reversão de lacuna de valor justo de confirmação de tendência dinâmica

Visão geral

A estratégia é um sistema de negociação quantitativa baseado no Inverted Fair Value Gap (IFVG), combinado com a confirmação de tendências de médias móveis e um mecanismo de parada de rastreamento dinâmico. A estratégia identifica o fair value gap (FVG) no comportamento dos preços e sua forma de reversão e negocia com apoio de tendências.

Princípio da estratégia

A lógica central da estratégia inclui as seguintes etapas principais:

  1. Detecção de FVG: Identificação de brechas de justo valor através da análise da sobreposição entre a linha de preço atual e a linha de preço anterior.
  2. Confirmação do IFVG: Um sinal de reversão é formado quando o preço ultrapassa o máximo ou o mínimo do FVG.
  3. Confirmação de tendências: a relação cruzada entre as médias móveis simples (SMA) de 50 e 200 períodos é usada para determinar as tendências do mercado.
  4. Condições de entrada: em uma tendência ascendente, faça mais quando o preço está abaixo do ponto baixo do IFVG; em uma tendência descendente, faça a menos quando o preço está acima do ponto alto do IFVG.
  5. Gerenciamento de riscos: uma combinação de stop-loss fixo e stop-loss de rastreamento dinâmico baseado no ATR.

Vantagens estratégicas

  1. Confirmação multidimensional: combina análise multidimensional da estrutura de preços (IFVG) e indicadores de tendência (SMA) para aumentar a confiabilidade das negociações.
  2. Gerenciamento de risco dinâmico: através do indicador ATR, ajuste para rastrear o stop loss, protegendo os lucros já obtidos e dando espaço suficiente para os preços flutuarem.
  3. Otimização de risco/recompensas: a definição de metas de lucro com base nos 3Rs, buscando maiores retornos com base em um controle racional do risco.
  4. Filtragem de tendências: Confirmação cruzada de tendências por meio de médias móveis, evitando o excesso de negociação no mercado horizontal.

Risco estratégico

  1. Risco de deslizamento: os preços reais de transação podem estar em desvio do preço ideal em momentos de forte volatilidade do mercado.
  2. Atraso na tendência: a média móvel como um indicador de atraso, pode causar um pequeno atraso no tempo de entrada.
  3. Risco de Falso Breakout: o preço pode recuar rapidamente após o rompimento, provocando um stop loss.
  4. Sensibilidade de parâmetros: a performance estratégica é mais sensível a configurações de parâmetros como o ciclo SMA e o múltiplo ATR.

Direção de otimização da estratégia

  1. Otimização de indicadores: adicionar sinais de confirmação de volume de transação pode ser considerado para aumentar a confiabilidade da ruptura.
  2. Parâmetros de auto-adaptação: introdução de indicadores de volatilidade do mercado, ajuste dinâmico do ciclo SMA e do múltiplo ATR.
  3. Otimização do tempo de entrada: adicionar um mecanismo de confirmação de retorno de preços, evitando o rastreamento de preços altos ou baixos.
  4. Gerenciamento de posições: Ajuste o tamanho das posições de forma dinâmica de acordo com a volatilidade do mercado e a intensidade da tendência.
  5. Otimização do mecanismo de parada: Parâmetros de parada de rastreamento mais flexíveis podem ser usados em tendências fortes.

Resumir

A estratégia, através da combinação da estrutura de preços do IFVG, a confirmação de tendências e a gestão de risco dinâmico, constrói um sistema de negociação completo. A estratégia, ao mesmo tempo em que mantém a simplicidade, considera plenamente os elementos-chave, como tendências de mercado, controle de risco e gestão de lucros.

Código-fonte da estratégia
/*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)