16 agents en ligneXAUUSD 4 552,4Session : London KillzoneProchaine analyse : 04:12
Indicateurs · Pine Script v5 · ICT / SMC
● Gratuit · TradingView

STX OB Retest Fib : entrée sur Order Block avec objectifs Fibonacci

STX OB Retest Fib automatise une lecture ICT classique : il détecte une cassure de structure (BOS) avec déplacement, marque l'Order Block qui l'a provoquée puis, lorsque le prix retest cette zone, dessine l'entrée, le stop et trois objectifs par extension de Fibonacci de l'impulsion. Un outil pour entraîner votre œil sur le retest des zones institutionnelles.

Outil d'étude et de visualisation. Les zones et niveaux sont approximés en Pine à partir de la structure du prix ; c'est une aide à la décision, pas une recommandation ni un signal d'achat/vente. Les résultats ne sont pas garantis.

Ajouter sur TradingViewVoir le codeTélécharger .pine

Que fait-il ?

  • Détection de BOS avec déplacement. Marque la cassure d'un swing précédent uniquement lorsque la bougie dépasse un seuil de range mesuré en ATR (filtre les cassures faibles).
  • Order Block automatique. Dessine une boîte sur la dernière bougie contraire avant l'impulsion (teal en achat, rouge en vente) : l'empreinte institutionnelle.
  • Signal au retest. Attend que le prix revienne dans la zone de l'Order Block (avec tolérance en ATR) avant de marquer l'entrée — pas à la cassure.
  • Entrée, SL et 3 TP Fibonacci. Trace l'entrée, le stop (buffer ATR) et TP1/TP2/TP3 comme extensions 1,618 / 2,0 / 2,618 de l'impulsion, avec étiquettes de prix.
  • Un signal par Order Block. Option pour limiter à un seul déclenchement par zone et éviter le bruit des réentrées.
  • Paramètres ajustables. Lookback des swings, seuil de déplacement, tolérance de retest, buffer de SL et longueur des lignes.

Comment le lire

Lorsqu'un triangle vert (BUY) apparaît sous la bougie ou rouge (SELL) au-dessus, le prix vient de retester un Order Block après une cassure avec déplacement. Les lignes projettent l'entrée, le SL et les trois objectifs. La boîte teal/rouge rappelle d'où vient le mouvement. L'indicateur n'exécute ni ne recommande : il montre le scénario pour que vous décidiez avec votre propre gestion du risque.

L'actif, en direct

Graphique de référence (XAUUSD). Chargez l'indicateur dans votre propre compte TradingView pour voir les zones et niveaux sur le prix en temps réel.

Comment l'installer sur TradingView

  1. Ouvrez le Pine Editor (panneau inférieur de TradingView).
  2. Collez le code ci-dessous (Pine Script v5) et remplacez le contenu.
  3. « Add to chart » sur l'actif et l'unité de temps que vous tradez (fonctionne sur tout marché ; nous l'utilisons surtout sur XAUUSD intraday).
  4. Ajustez les paramètres à votre style et sauvegardez avec Ctrl/Cmd + S.

Code Pine Script v5

STX OB Retest Fib · Pine v5 · 105 lignes · code ouvert.

Télécharger .pine
//@version=5
indicator("STX OB Retest Fib", overlay=true, max_lines_count=300, max_labels_count=120, max_boxes_count=80)

swing = input.int(5, "Swing lookback", minval=2)
dispATR = input.float(1.0, "Displacement x ATR", minval=0.1, step=0.1)
retestTol = input.float(0.1, "Retest tol x ATR", minval=0.0, step=0.05)
f1 = input.float(1.618, "TP1 x legA", step=0.001)
f2 = input.float(2.0, "TP2 x legA", step=0.001)
f3 = input.float(2.618, "TP3 x legA", step=0.001)
slBuf = input.float(0.25, "SL buffer x ATR", minval=0.0, step=0.05)
extend = input.int(40, "Line length", minval=5)
oncePerOB = input.bool(true, "1 signal per OB")

atr = ta.atr(14)
ph = ta.pivothigh(swing, swing)
pl = ta.pivotlow(swing, swing)

var float lastPH = na
var float lastPL = na
lastPH := not na(ph) ? ph : lastPH
lastPL := not na(pl) ? pl : lastPL

var float lastDownHi = na
var float lastDownLo = na
var float lastUpHi = na
var float lastUpLo = na
if close < open
    lastDownHi := high
    lastDownLo := low
if close > open
    lastUpHi := high
    lastUpLo := low

bullBOS = not na(lastPH) and close > lastPH and close[1] <= lastPH and (high - low) > dispATR * atr
bearBOS = not na(lastPL) and close < lastPL and close[1] >= lastPL and (high - low) > dispATR * atr

var float bHi = na
var float bLo = na
var float bLeg = na
var bool bUsed = true
var float sHi = na
var float sLo = na
var float sLeg = na
var bool sUsed = true

if bullBOS and not na(lastDownLo)
    bHi := lastDownHi
    bLo := lastDownLo
    bLeg := high - lastDownLo
    bUsed := false
    box.new(bar_index, bHi, bar_index + 6, bLo, border_color=color.teal, bgcolor=color.new(color.teal, 85))

if bearBOS and not na(lastUpHi)
    sHi := lastUpHi
    sLo := lastUpLo
    sLeg := lastUpHi - low
    sUsed := false
    box.new(bar_index, sHi, bar_index + 6, sLo, border_color=color.red, bgcolor=color.new(color.red, 85))

tol = retestTol * atr
bullRetest = not na(bHi) and (not bUsed or not oncePerOB) and low <= bHi + tol and low >= bLo - tol and close > bLo
bearRetest = not na(sHi) and (not sUsed or not oncePerOB) and high >= sLo - tol and high <= sHi + tol and close < sHi

var float buyE = na
var float sellE = na

if bullRetest
    buyE := bHi
    sl = bLo - slBuf * atr
    t1 = buyE + f1 * bLeg
    t2 = buyE + f2 * bLeg
    t3 = buyE + f3 * bLeg
    line.new(bar_index, buyE, bar_index + extend, buyE, color=color.gray, width=2)
    line.new(bar_index, sl, bar_index + extend, sl, color=color.red, style=line.style_dashed)
    line.new(bar_index, t1, bar_index + extend, t1, color=color.green)
    line.new(bar_index, t2, bar_index + extend, t2, color=color.green)
    line.new(bar_index, t3, bar_index + extend, t3, color=color.green)
    label.new(bar_index + extend, buyE, "ENTRY " + str.tostring(buyE, format.mintick), style=label.style_label_left, color=color.gray, textcolor=color.white, size=size.small)
    label.new(bar_index + extend, sl, "SL " + str.tostring(sl, format.mintick), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small)
    label.new(bar_index + extend, t1, "TP1 " + str.tostring(t1, format.mintick), style=label.style_label_left, color=color.green, textcolor=color.black, size=size.small)
    label.new(bar_index + extend, t2, "TP2 " + str.tostring(t2, format.mintick), style=label.style_label_left, color=color.green, textcolor=color.black, size=size.small)
    label.new(bar_index + extend, t3, "TP3 " + str.tostring(t3, format.mintick), style=label.style_label_left, color=color.green, textcolor=color.black, size=size.small)
    bUsed := true

if bearRetest
    sellE := sLo
    sl = sHi + slBuf * atr
    t1 = sellE - f1 * sLeg
    t2 = sellE - f2 * sLeg
    t3 = sellE - f3 * sLeg
    line.new(bar_index, sellE, bar_index + extend, sellE, color=color.gray, width=2)
    line.new(bar_index, sl, bar_index + extend, sl, color=color.red, style=line.style_dashed)
    line.new(bar_index, t1, bar_index + extend, t1, color=color.lime)
    line.new(bar_index, t2, bar_index + extend, t2, color=color.lime)
    line.new(bar_index, t3, bar_index + extend, t3, color=color.lime)
    label.new(bar_index + extend, sellE, "ENTRY " + str.tostring(sellE, format.mintick), style=label.style_label_left, color=color.gray, textcolor=color.white, size=size.small)
    label.new(bar_index + extend, sl, "SL " + str.tostring(sl, format.mintick), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small)
    label.new(bar_index + extend, t1, "TP1 " + str.tostring(t1, format.mintick), style=label.style_label_left, color=color.lime, textcolor=color.black, size=size.small)
    label.new(bar_index + extend, t2, "TP2 " + str.tostring(t2, format.mintick), style=label.style_label_left, color=color.lime, textcolor=color.black, size=size.small)
    label.new(bar_index + extend, t3, "TP3 " + str.tostring(t3, format.mintick), style=label.style_label_left, color=color.lime, textcolor=color.black, size=size.small)
    sUsed := true

plotshape(bullRetest, title="BUY", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(bearRetest, title="SELL", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

Questions fréquentes

Qu'est-ce qu'un Order Block ?

C'est la dernière bougie contraire au mouvement impulsif qui suit : la zone où les institutions ont placé des ordres avant que le prix ne se déplace avec force. L'indicateur la dessine comme une boîte et attend que le prix y revienne.

Sur quoi reposent les objectifs ?

Les trois objectifs sont des extensions de Fibonacci (1,618, 2,0 et 2,618) mesurées sur l'impulsion qui a cassé la structure. Ce sont des niveaux de projection, pas des promesses : le prix peut ne pas les atteindre.

Fonctionne-t-il sur tout actif ?

Oui. Reposant sur la structure du prix et l'ATR, il fonctionne sur le Forex, les indices, la crypto ou l'or. Nous l'utilisons surtout sur XAUUSD intraday, mais vous pouvez l'ajuster.

Donne-t-il des signaux d'achat/vente ?

Non. Il marque les contextes et niveaux selon la méthodologie ICT. C'est un outil éducatif d'aide à la décision, pas une recommandation d'investissement ni un signal automatique.

Est-ce gratuit ?

Oui, le code est disponible à copier et télécharger. Il vous faut seulement un compte TradingView (le plan gratuit suffit).

Contenu exclusivement éducatif ; ne constitue pas un conseil financier et ne garantit pas les résultats. Le trading implique un risque de perte en capital.

Vous voulez comprendre le pourquoi de chaque zone ? Apprenez la méthodologie ICT / Smart Money étape par étape dans l'École de trading gratuite, ou découvrez la salle STX Desk.