Description de l’indicateur : Ichimoku Multi-Layer Oscillator
Présentation
Cet indicateur transforme les composants classiques de l’Ichimoku Kinko Hyo en un oscillateur de momentum à couches multiples. Au lieu de lire les composantes sur le prix, cet outil agrège la force de la Tenkan, de la Kijun et du Nuage (Kumo) dans une fenêtre unique pour identifier la puissance et la qualité d’une tendance.
Fonctionnalités principales :
- L’Oscillateur à 4 Couches : L’indicateur calcule quatre niveaux de données superposés qui représentent la santé du marché :
- Oscline : Position du prix par rapport aux bornes du nuage.
- Lagging : Intègre l’élan de la Chikou Span (mémoire du prix).
- ConvBase : Ajoute l’interaction entre la Tenkan (Conversion) et la Kijun (Base).
- Cloud Layer : La couche finale incluant l’épaisseur et la direction du nuage (Sspan A/B).
- Analyse de Force de Tendance (Trend Score) : L’indicateur ne se contente pas de suivre le prix ; il attribue un score de 1 à 4 (positif ou négatif) basé sur la confluence des signaux Ichimoku.
- Un score de 4 signifie que tous les éléments (Prix, Tenkan/Kijun, Nuage, Lagging) sont alignés à la hausse.
- Un score de -4 indique un alignement total à la baisse.
- Protection contre les “Whipsaws” (ATR) : L’indicateur utilise l’ATR (Average True Range) pour créer une zone de tolérance autour de la Kijun-sen. Cela permet d’éviter les faux signaux de sortie lors de légères corrections de marché ou de phases de bruit.
- Signaux Visuels Intégrés :
- Coloration du fond : Le graphique se colore en vert ou bleu selon la dominance acheteuse ou vendeuse.
- Flèches de Signal : Une flèche blanche (achat) ou jaune (vente) apparaît sur la ligne zéro lorsque le score de tendance atteint son paroxysme (niveau 4), signalant une entrée à haute probabilité.
Pourquoi l’utiliser ?
C’est l’outil idéal pour les traders qui aiment l’Ichimoku mais souhaitent épurer leur graphique de prix. Il permet de détecter rapidement si une tendance s’essouffle ou si, au contraire, tous les paramètres techniques sont réunis pour une accélération majeure.
Note technique : Les paramètres sont réglés par défaut sur des cycles optimisés (8, 13, 26) avec un décalage de 13 périodes pour une réactivité accrue par rapport aux réglages standards.
// --- Initialisation des variables
conversionPeriods = 8
basePeriods = 13
laggingSpan2Periods = 26
displacement = 13
useatr = 1 // 1 pour utiliser l'ATR, 0 sinon
atrlen = 9
atrmul = 2.0
emalen = 9
// --- Calculs Ichimoku Standard
HighCL = Highest[conversionPeriods](high)
LowCL = Lowest[conversionPeriods](low)
conversionLine = (HighCL + LowCL) / 2
HighBL = Highest[basePeriods](high)
LowBL = Lowest[basePeriods](low)
baseLine = (HighBL + LowBL) / 2
leadLine1 = (conversionLine + baseLine) / 2
HighLS = Highest[laggingSpan2Periods](high)
LowLS = Lowest[laggingSpan2Periods](low)
leadLine2 = (HighLS + LowLS) / 2
// --- Décalage (Displacement)
CloudMin = min(leadLine1[displacement-1], leadLine2[displacement-1])
CloudMax = max(leadLine1[displacement-1], leadLine2[displacement-1])
// --- Gestion de la tendance (mtrend)
IF close > CloudMax THEN
mtrend = 1
ELSIF close < CloudMin THEN
mtrend = -1
ELSE
mtrend = mtrend[1]
ENDIF
// --- Calcul des 4 couches de l'oscillateur
// Couche 1 : Oscline
IF mtrend = 1 THEN
Oscline = close - CloudMin
ELSE
Oscline = close - CloudMax
ENDIF
// Couche 2 : Lagging
IF mtrend = 1 THEN
Lagging = Oscline + max(close - CloudMax[displacement-1], 0)
ELSE
Lagging = Oscline + min(close - CloudMin[displacement-1], 0)
ENDIF
// Couche 3 : ConvBase
IF mtrend = 1 THEN
ConvBase = Lagging + max(conversionLine - baseLine, 0)
ELSE
ConvBase = Lagging + min(conversionLine - baseLine, 0)
ENDIF
// Couche 4 : Cloud
IF mtrend = 1 THEN
CloudOsc = ConvBase + max(leadLine1 - leadLine2, 0)
ELSE
CloudOsc = ConvBase + min(leadLine1 - leadLine2, 0)
ENDIF
// --- Logique ATR (Whipsaw protection)
myATR = AverageTrueRange[atrlen](close)
tole = 0
IF useatr THEN
tole = myATR * atrmul
ENDIF
// --- Calcul de la force de tendance (trend)
anyRising = (conversionLine > conversionLine[1]) OR (baseLine > baseLine[1])
anyFalling = (conversionLine < conversionLine[1]) OR (baseLine < baseLine[1])
IF mtrend = 1 THEN
IF mtrend[1] = -1 THEN
trend = 0
ENDIF
IF trend < 4 AND close > CloudMax THEN
cond1 = (Lagging > Oscline)
cond2 = (conversionLine >= baseLine AND anyRising)
cond3 = (leadLine1 >= leadLine2)
trend = cond1 + cond2 + cond3 + 1
ELSE
IF conversionLine < (baseLine - tole) THEN
trend = 0
ENDIF
ENDIF
ELSIF mtrend = -1 THEN
IF mtrend[1] = 1 THEN
trend = 0
ENDIF
IF trend > -4 AND close < CloudMin THEN
cond1 = -(Lagging < Oscline)
cond2 = -(conversionLine <= baseLine AND anyFalling)
cond3 = -(leadLine1 <= leadLine2)
trend = cond1 + cond2 + cond3 - 1
ELSE
IF conversionLine > (baseLine + tole) THEN
trend = 0
ENDIF
ENDIF
ENDIF
// --- Moyenne mobile sur l'oscillateur
emaOsc = ExponentialAverage[emalen](CloudOsc)
// --- Coloration du fond (Background)
IF trend >= 1 THEN
BACKGROUNDCOLOR(0, 200, 0, 30) // Vert très clair
ELSIF trend <= -1 THEN
BACKGROUNDCOLOR(0, 0, 200, 30) // Bleu très clair
ENDIF
// --- Affichage des signaux (Flèches sur la ligne 0)
IF trend = 4 AND trend[1] < 4 THEN
DRAWARROWUP(barindex, 0) COLOURED(255,255,255) // Flèche Blanche pour achat
ENDIF
IF trend = -4 AND trend[1] > -4 THEN
DRAWARROWDOWN(barindex, 0) COLOURED(255,255,0) // Flèche Jaune pour vente
ENDIF
RETURN CloudOsc AS "Cloud Layer", ConvBase AS "ConvBase Layer", Lagging AS "Lagging Layer", Oscline AS "Osc Line", emaOsc AS "EMA Cloud", 0 AS "Zero Line"