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.
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
- Ouvrez le Pine Editor (panneau inférieur de TradingView).
- Collez le code ci-dessous (Pine Script v5) et remplacez le contenu.
- « 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).
- 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.
//@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.