Stratégie de trading quantitative de confirmation de tendance dynamique, inversion de l'écart de juste valeur

FVG IFVG SMA ATR 趋势确认 跟踪止损 动态风险管理
Date de création: 2025-02-21 11:55:42 Dernière modification: 2025-07-03 15:00:53
Copier: 3 Nombre de clics: 606
2
Suivre
319
Abonnés

Stratégie de trading quantitative de confirmation de tendance dynamique, inversion de l’écart de juste valeur Stratégie de trading quantitative de confirmation de tendance dynamique, inversion de l’écart de juste valeur

Aperçu

La stratégie est un système de trading quantitatif basé sur l’Inverted Fair Value Gap (IFVG), combiné à une confirmation de tendance des moyennes mobiles et à un mécanisme de suivi dynamique des arrêts de perte. La stratégie identifie l’écart de juste valeur dans le comportement des prix (FVG) et sa forme inversée, et négocie en cas de soutien de la tendance. Cette méthode permet à la fois d’assurer que la direction des transactions est cohérente avec la tendance générale du marché et de capturer les virages négatifs clés du marché.

Principe de stratégie

La logique fondamentale de la stratégie comprend les étapes clés suivantes :

  1. Détection FVG: identifier les écarts de juste valeur en analysant les chevauchements entre la fourchette actuelle et la fourchette précédente.
  2. Confirmation de l’IFVG: Un signal de revers est formé lorsque le prix dépasse le sommet ou le bas de l’IFVG.
  3. Confirmation de la tendance: utilisation de la relation croisée entre les moyennes mobiles simples à 50 et 200 ans (SMA) pour déterminer la tendance du marché.
  4. Conditions d’entrée: en hausse, faire plus lorsque le prix est inférieur au bas de l’IFVG; en baisse, faire moins lorsque le prix est supérieur au haut de l’IFVG.
  5. Gestion des risques: une combinaison de stop-loss fixes et de stop-loss dynamiques basés sur l’ATR.

Avantages stratégiques

  1. Confirmation multidimensionnelle: analyse à plusieurs niveaux de la structure des prix (IFVG) et de l’indicateur de tendance (SMA) pour améliorer la fiabilité des transactions.
  2. Gestion dynamique des risques: suivi des arrêts de perte via l’indicateur ATR, afin de protéger les marges bénéficiaires et de laisser suffisamment de place aux fluctuations des prix.
  3. Optimisation des risques par rapport aux bénéfices: la définition d’objectifs de bénéfices des 3 R pour rechercher des rendements plus élevés sur la base d’une maîtrise raisonnable des risques.
  4. Filtrage de tendance: pour éviter une survente sur les marchés horizontaux, confirmez la tendance en croisant les moyennes mobiles.

Risque stratégique

  1. Risque de glissement: les prix de transaction réels peuvent être éloignés du prix idéal en cas de forte volatilité du marché.
  2. Le retard de la tendance: la moyenne mobile est un indicateur de retard qui peut entraîner un léger retard dans le temps d’entrée.
  3. Risque de fausse rupture: le prix peut revenir rapidement après la rupture, déclenchant un stop loss.
  4. Sensitivité aux paramètres: la performance stratégique est sensible aux paramètres tels que le cycle SMA et le multiplicateur ATR.

Orientation de l’optimisation de la stratégie

  1. Optimisation des indicateurs: il est envisageable d’ajouter des signaux de confirmation de transaction pour améliorer la fiabilité de la percée.
  2. Les paramètres s’adaptent: l’introduction d’indicateurs de volatilité du marché, l’ajustement dynamique des cycles SMA et du multiplicateur ATR.
  3. Optimisation de l’heure d’entrée: ajout d’un mécanisme de confirmation des retours de prix, afin d’éviter les retours à la hausse ou à la baisse.
  4. Gestion des positions: la taille des positions est ajustée en fonction de la volatilité du marché et de l’intensité des tendances.
  5. Optimisation du mécanisme d’arrêt: paramètres d’arrêt de suivi plus souples peuvent être utilisés dans les tendances fortes.

Résumer

La stratégie est construite en un système de négociation complet par la combinaison de la structure des prix IFVG, la reconnaissance des tendances et la gestion dynamique des risques. La stratégie prend en compte les éléments clés tels que les tendances du marché, le contrôle des risques et la gestion des bénéfices tout en conservant la simplicité.

Code source de la stratégie
/*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)