Dynamische Trendbestätigung und Umkehr der Fair-Value-Gap-Quantitative-Trading-Strategie

FVG IFVG SMA ATR 趋势确认 跟踪止损 动态风险管理
Erstellungsdatum: 2025-02-21 11:55:42 zuletzt geändert: 2025-07-03 15:00:53
Kopie: 3 Klicks: 606
2
konzentrieren Sie sich auf
319
Anhänger

Dynamische Trendbestätigung und Umkehr der Fair-Value-Gap-Quantitative-Trading-Strategie Dynamische Trendbestätigung und Umkehr der Fair-Value-Gap-Quantitative-Trading-Strategie

Überblick

Die Strategie ist ein quantitatives Handelssystem, das auf der Inverted Fair Value Gap (IFVG) basiert, kombiniert mit einer Trendbestätigung für Moving Averages und einem Stop-Loss-Mechanismus für die dynamische Verfolgung. Die Strategie identifiziert die Fair Value Gap (FVG) in der Preisbewegung und ihre Umkehrform und handelt bei Trendunterstützung. Diese Methode gewährleistet sowohl die Übereinstimmung der Handelsrichtung mit den allgemeinen Markttrends als auch die Fähigkeit, wichtige Wendepunkte im Markt zu erfassen.

Strategieprinzip

Die Kernlogik der Strategie umfasst die folgenden wichtigen Schritte:

  1. FVG-Untersuchung: Identifizierung von Fair Value-Lücken durch Analyse der Überschneidungen zwischen dem aktuellen und dem vorherigen Preissegment.
  2. IFVG-Bestätigung: Ein Umkehrsignal wird erzeugt, wenn der Preis den Höchst- oder Tiefpunkt des FVG überschreitet.
  3. Trendbestätigung: Marktrends werden anhand der Kreuzbeziehungen zwischen 50- und 200-Perioden-SMAs bestimmt.
  4. Eintrittsbedingungen: In einem Aufwärtstrend, wenn der Preis unter dem IFVG-Tiefpunkt liegt, mehr zu machen; in einem Abwärtstrend, wenn der Preis über dem IFVG-Hochpunkt ist, zu machen.
  5. Risikomanagement: Kombination aus festen Stop-Losses und ATR-basierten, dynamisch verfolgten Stop-Losses

Strategische Vorteile

  1. Mehrdimensionale Bestätigung: Mehrdimensionale Analyse von Preisstrukturen (IFVG) und Trendindikatoren (SMA) in Kombination, um die Zuverlässigkeit des Handels zu erhöhen.
  2. Dynamisches Risikomanagement: Stop-Loss-Anpassungen durch ATR-Indikatoren, um bereits erzielte Gewinne zu schützen und den Preisen genügend Spielraum zu geben.
  3. Risiko-Rendite-Optimierung: Mit der 3R-Rendite-Zielsetzung wird auf der Grundlage einer vernünftigen Risikokontrolle ein höherer Rendite verfolgt.
  4. Trendfilter: Trends werden durch die Kreuzung von Moving Averages bestätigt, um übermäßige Transaktionen in horizontalen Märkten zu vermeiden.

Strategisches Risiko

  1. Rutschrisiko: Bei starken Marktschwankungen kann der tatsächliche Kaufpreis von dem idealen Preis abweichen.
  2. Trendverzögerung: Der Moving Average als Rückstandsindikator kann zu einer geringfügigen Verzögerung der Eintrittszeit führen.
  3. Falsche Durchbruchrisiken: Der Preis kann sich nach einem Durchbruch schnell zurückziehen und einen Stop-Loss auslösen.
  4. Parameter-Sensitivität: Die strategische Performance ist empfindlich auf Parameter-Einstellungen wie SMA-Zyklen und ATR-Multiplizierungen.

Richtung der Strategieoptimierung

  1. Optimierung der Kennziffern: Erwägen Sie, ein Signal für die Bestätigung des Umsatzes hinzuzufügen, um die Zuverlässigkeit des Durchbruchs zu erhöhen.
  2. Die Parameter sind anpassungsfähig: Marktschwankungsindikatoren, dynamische Anpassung der SMA-Zyklen und der ATR-Multiplikatoren werden eingeführt.
  3. Optimierung der Eintrittszeit: Erhöhung der Bestätigungsmechanismen für Rückrufe und Vermeidung von Auf- und Abwärtskursen.
  4. Positionsmanagement: Positionsgröße wird dynamisch an die Marktfluktuation und die Trendstärke angepasst.
  5. Optimierte Stop-Loss-Mechanismen: Eine lockere Verfolgung von Stop-Loss-Parametern bei starken Trends.

Zusammenfassen

Die Strategie baut ein vollständiges Handelssystem auf, indem sie die IFVG-Preisstruktur, die Trendbestätigung und das dynamische Risikomanagement kombiniert. Die Strategie berücksichtigt die wichtigen Elemente wie Markttrends, Risikokontrolle und Gewinnmanagement, während sie die Einfachheit behält. Durch die empfohlene Optimierungsrichtung kann die Strategie ihre Anpassungsfähigkeit und Stabilität weiter verbessern.

Strategiequellcode
/*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)