Stratégie avancée FVG Gap Pro+

FVG MTF IIR Trend RISK
Date de création: 2025-09-01 18:05:50 Dernière modification: 2025-09-01 18:05:50
Copier: 0 Nombre de clics: 274
2
Suivre
319
Abonnés

Stratégie avancée FVG Gap Pro+ Stratégie avancée FVG Gap Pro+

Je ne sais pas si cette tactique est efficace.

Saviez-vous que 90% des traders sur le marché sont à la recherche de failles, mais que les vrais bons joueurs sont à la recherche de “zones de vide de prix” ?

FVG (Fair Value Gap) signifie simplement “la zone blanche” laissée par le saut du prix, comme si vous marchiez à travers un trou d’eau et que vous deviez revenir un jour pour le remplir. La stratégie consiste à se cacher au bord du trou au moment idéal pour pêcher!

Les trois technologies noires les plus importantes

1. Analyse de plusieurs périodes Les stratégies peuvent être exécutées sur une carte de 5 minutes, mais avec un signal FVG d’une heure, c’est comme regarder une montagne avec un télescope, voir les détails avec une loupe, la vue est plus complète!

2. Le filtre de tendance IIR
Ce n’est pas une moyenne mobile ordinaire ! L’utilisation d’un filtre à faible perméabilité IIR de qualité ingénieure permet d’identifier avec précision la direction de la tendance.

3. Gestion intelligente des risques ️ Il prend en charge les deux modes de risque: pourcentage et montant fixe, et le mécanisme de protection contre les explosions de stockage. Tout comme la voiture a une double protection avec une ceinture de sécurité et un coussin d’air, cela rend votre compte plus sûr !

Scénario d’application en temps de guerre

Les meilleures pour:

  • La crise est une opportunité pour trouver une issue
  • Retour sur la tendance des points d’entrée
  • Un tir de précision près d’un point de résistance important

Le guide pour éviter les fosses:

  • Suspension de l’application à la veille d’une nouvelle majeure
  • Attention aux pièces de monnaie peu liquides
  • Rappelez-vous de modifier les paramètres de risque en fonction des fluctuations du marché

Pourquoi avoir choisi cette stratégie ?

Les stratégies traditionnelles sont soit trop peu de signaux qui manquent des opportunités, soit trop de signaux qui sont faussement percés.

Et le plus sympathique, c’est que tous les paramètres peuvent être personnalisés, comme un régulateur de volume, vous pouvez “jouer” le rythme de négociation le plus approprié en fonction des différentes conditions du marché.

N’oubliez pas: une bonne stratégie ne vous permet pas de négocier tous les jours, mais de le faire au moment où vous êtes le plus sûr !

Code source de la stratégie
/*backtest
start: 2024-09-01 00:00:00
end: 2025-08-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Advanced FVG Strategy Pro+ (v6)", overlay=true,
  initial_capital=10000,
  default_qty_type=strategy.fixed,
  default_qty_value=1,
  commission_type=strategy.commission.percent,
  commission_value=0.05,
  calc_on_every_tick=true,
  process_orders_on_close=true)

// ---------------- Inputs ----------------
fvg_tf        = input.timeframe("", "FVG Timeframe (MTF)")
bodySens      = input.float(1.0, "FVG Body Sensitivity", step=0.1, minval=0.0)
mitigate_mid  = input.bool(true, "Mitigation on Midpoint")
rr_ratio      = input.float(2.0, "Risk/Reward Ratio", step=0.1)

risk_mode     = input.string("Percent", "Risk Mode", options=["Percent","Fixed $"])
risk_perc     = input.float(1.0, "Risk % (of Equity)", minval=0.1, maxval=10.0)
risk_fixed    = input.float(100.0, "Fixed $ Risk", minval=1.0)

useTrend      = input.bool(true, "Filter with FVG Trend")
rp            = input.float(10.0, "Trend Filter Ripple (dB)", minval=0.1, step=0.1)
fc            = input.float(0.1, "Trend Filter Cutoff (0..0.5)", minval=0.01, maxval=0.5, step=0.01)

extendLength  = input.int(10, "Extend Boxes (bars)", minval=0)

// ---------------- MTF candles ----------------
c1 = fvg_tf == "" ? close : request.security(syminfo.tickerid, fvg_tf, close,  lookahead = barmerge.lookahead_on)
o1 = fvg_tf == "" ? open  : request.security(syminfo.tickerid, fvg_tf, open,   lookahead = barmerge.lookahead_on)
h1 = fvg_tf == "" ? high  : request.security(syminfo.tickerid, fvg_tf, high,   lookahead = barmerge.lookahead_on)
l1 = fvg_tf == "" ? low   : request.security(syminfo.tickerid, fvg_tf, low,    lookahead = barmerge.lookahead_on)
h2 = fvg_tf == "" ? high[2] : request.security(syminfo.tickerid, fvg_tf, high[2], lookahead = barmerge.lookahead_on)
l2 = fvg_tf == "" ? low[2]  : request.security(syminfo.tickerid, fvg_tf, low[2],  lookahead = barmerge.lookahead_on)

// ---------------- FVG detection ----------------
float wick = math.abs(c1 - o1)
float avg_body = ta.sma(wick, 50)

bool bullFVG = (l1 > h2) and (c1 > h2) and (wick >= avg_body * bodySens)
bool bearFVG = (h1 < l2) and (c1 < l2) and (wick >= avg_body * bodySens)

// ---------------- Trend Filter (IIR low-pass) ----------------
float src = (h1 + l1) / 2.0
float epsilon = math.sqrt(math.pow(10.0, rp/10.0) - 1.0)
float d = math.sqrt(1.0 + epsilon * epsilon)
float c  = 1.0 / math.tan(math.pi * fc)
float norm = 1.0 / (1.0 + d * c + c * c)
float b0 = norm
float b1 = 2.0 * norm
float b2 = norm
float a1 = 2.0 * norm * (1.0 - c * c)
float a2 = norm * (1.0 - d * c + c * c)

var float trend = na
var float trend1 = na
var float trend2 = na
trend := bar_index < 2 ? src : (b0 * src + b1 * src[1] + b2 * src[2] - a1 * nz(trend1) - a2 * nz(trend2))
trend2 := trend1
trend1 := trend

bool trendUp   = trend > nz(trend[1])
bool trendDown = trend < nz(trend[1])

// ---------------- Strategy Conditions ----------------
bool longCond  = bullFVG and (not useTrend or trendUp)
bool shortCond = bearFVG and (not useTrend or trendDown)

// stop loss / take profit (based on MTF gap edges)
float longSL  = l1
float shortSL = h1
float longRisk = close - longSL
float shortRisk = shortSL - close
float longTP  = close + (close - longSL) * rr_ratio
float shortTP = close - (shortSL - close) * rr_ratio

// ---------------- Position sizing ----------------
float equity = strategy.equity
float riskCash = risk_mode == "Percent" ? (equity * risk_perc / 100.0) : risk_fixed
float longQty  = (longRisk > 0.0) ? (riskCash / longRisk) : na
float shortQty = (shortRisk > 0.0) ? (riskCash / shortRisk) : na

// safety cap: avoid ridiculously large position sizes (simple protective cap)
float maxQty = math.max(1.0, (equity / math.max(1e-8, close)) * 0.25)  // cap ~25% equity worth of base asset
if not na(longQty)
    longQty := math.min(longQty, maxQty)
if not na(shortQty)
    shortQty := math.min(shortQty, maxQty)

// small extra guard (do not trade if qty becomes extremely small or NaN)
bool canLong  = longCond and not na(longQty) and (longQty > 0.0)
bool canShort = shortCond and not na(shortQty) and (shortQty > 0.0)

// ---------------- Orders ----------------
if canLong
    strategy.entry("Long", strategy.long, qty = longQty)
    strategy.exit("Long TP/SL", "Long", stop = longSL, limit = longTP)

if canShort
    strategy.entry("Short", strategy.short, qty = shortQty)
    strategy.exit("Short TP/SL", "Short", stop = shortSL, limit = shortTP)

// ---------------- Visuals ----------------
plotshape(longCond, title="Bull FVG", color=color.new(color.green, 0), style=shape.triangleup, location=location.belowbar, size=size.small)
plotshape(shortCond, title="Bear FVG", color=color.new(color.red, 0), style=shape.triangledown, location=location.abovebar, size=size.small)
plot(useTrend ? trend : na, title="FVG Trend", color=trendUp ? color.lime : trendDown ? color.red : color.gray, linewidth=2)