Bonjour. Je ne peux pas importer le code joint, mais j’ai pris mon indicateur et j’ai ajouté la variable sptK (Kijun) à la ligne de retour afin que vous puissiez créer une alerte avec.
//DEFPARAM DRAWONLASTBARONLY = TRUE
//--------------------------------------------
// PRC_SuperIchi (SuperIchi [LUX] by LuxAlgo)
// version = 0
// 04.09.2026
// Ivan Gonzalez @ www.prorealcode.com
// Sharing ProRealTime knowledge
//--------------------------------------------
// Ichimoku-style set of lines built on an ATR trailing-stop
// engine instead of the classic Donchian midpoints.
// Each line is the midpoint between the extreme reached by
// price and the trailing stop of its own regime.
//--------------------------------------------
//=== INPUTS (declare as Variables in the editor) ===
tenkanLen = 9 // Tenkan ATR length
tenkanMult = 2.0 // Tenkan ATR multiplier
kijunLen = 26 // Kijun ATR length
kijunMult = 4.0 // Kijun ATR multiplier
spanBLen = 52 // Senkou Span B ATR length
spanBMult = 6.0 // Senkou Span B ATR multiplier
disp = 26 // Displacement
//=== ADAPTIVE MIDLINE ENGINE - TENKAN ===
atrT = averagetruerange[tenkanLen](close) * tenkanMult
upT = (high + low) / 2 + atrT
dnT = (high + low) / 2 - atrT
IF barindex <= tenkanLen THEN
upperT = upT
lowerT = dnT
osT = 0
sptT = close
mxT = close
mnT = close
ELSE
IF close[1] lowerT[1] THEN
lowerT = max(dnT, lowerT[1])
ELSE
lowerT = dnT
ENDIF
IF close > upperT THEN
osT = 1
ELSIF close < lowerT THEN
osT = 0
ELSE
osT = osT[1]
ENDIF
IF osT = 1 THEN
sptT = lowerT
ELSE
sptT = upperT
ENDIF
crT = 0
IF close[1] sptT THEN
crT = 1
ENDIF
IF close[1] > sptT[1] AND close < sptT THEN
crT = 1
ENDIF
IF crT = 1 OR osT = 1 THEN
mxT = max(close, mxT[1])
ELSE
mxT = sptT
ENDIF
IF crT = 1 OR osT = 0 THEN
mnT = min(close, mnT[1])
ELSE
mnT = sptT
ENDIF
ENDIF
//=== ADAPTIVE MIDLINE ENGINE - KIJUN ===
atrK = averagetruerange[kijunLen](close) * kijunMult
upK = (high + low) / 2 + atrK
dnK = (high + low) / 2 - atrK
IF barindex <= kijunLen THEN
upperK = upK
lowerK = dnK
osK = 0
sptK = close
mxK = close
mnK = close
ELSE
IF close[1] lowerK[1] THEN
lowerK = max(dnK, lowerK[1])
ELSE
lowerK = dnK
ENDIF
IF close > upperK THEN
osK = 1
ELSIF close < lowerK THEN
osK = 0
ELSE
osK = osK[1]
ENDIF
IF osK = 1 THEN
sptK = lowerK
ELSE
sptK = upperK
ENDIF
crK = 0
IF close[1] sptK THEN
crK = 1
ENDIF
IF close[1] > sptK[1] AND close < sptK THEN
crK = 1
ENDIF
IF crK = 1 OR osK = 1 THEN
mxK = max(close, mxK[1])
ELSE
mxK = sptK
ENDIF
IF crK = 1 OR osK = 0 THEN
mnK = min(close, mnK[1])
ELSE
mnK = sptK
ENDIF
ENDIF
//=== ADAPTIVE MIDLINE ENGINE - SENKOU SPAN B ===
atrS = averagetruerange[spanBLen](close) * spanBMult
upS = (high + low) / 2 + atrS
dnS = (high + low) / 2 - atrS
IF barindex <= spanBLen THEN
upperS = upS
lowerS = dnS
osS = 0
sptS = close
mxS = close
mnS = close
ELSE
IF close[1] lowerS[1] THEN
lowerS = max(dnS, lowerS[1])
ELSE
lowerS = dnS
ENDIF
IF close > upperS THEN
osS = 1
ELSIF close < lowerS THEN
osS = 0
ELSE
osS = osS[1]
ENDIF
IF osS = 1 THEN
sptS = lowerS
ELSE
sptS = upperS
ENDIF
crS = 0
IF close[1] sptS THEN
crS = 1
ENDIF
IF close[1] > sptS[1] AND close < sptS THEN
crS = 1
ENDIF
IF crS = 1 OR osS = 1 THEN
mxS = max(close, mxS[1])
ELSE
mxS = sptS
ENDIF
IF crS = 1 OR osS = 0 THEN
mnS = min(close, mnS[1])
ELSE
mnS = sptS
ENDIF
ENDIF
//=== OUTPUT LINES (masked during the longest warm-up) ===
IF barindex sB THEN
aUp = 51
aDn = 0
ELSE
aUp = 0
aDn = 51
ENDIF
COLORBETWEEN(sA, sB, 0, 137, 123, aUp)
COLORBETWEEN(sA, sB, 255, 82, 82, aDn)
//=== PROJECTED CLOUD (bars that do not exist yet) ===
IF islastbarupdate AND barindex > spanBLen + disp THEN
FOR j = 1 TO dispPlot DO
xa = barindex + j - 1
xb = barindex + j
ya = senkouA[dispPlot - j + 1]
yb = senkouA[dispPlot - j]
za = senkouB[dispPlot - j + 1]
zb = senkouB[dispPlot - j]
ym = (ya + yb) / 2
zm = (za + zb) / 2
IF ym > zm THEN
rr = 0
gg = 137
bb = 123
ELSE
rr = 255
gg = 82
bb = 82
ENDIF
DRAWRECTANGLE(xa, min(ym, zm), xb, max(ym, zm)) COLOURED(rr, gg, bb, 0) FILLCOLOR(rr, gg, bb, 51)
NEXT
ENDIF
//=== TENKAN / KIJUN CROSSES ===
dotUp = undefined
dotDn = undefined
aDotUp = 0
aDotDn = 0
IF tenkan > kijun AND tenkan[1] <= kijun[1] THEN
dotUp = kijun
drawtext("●", barindex,dotUp,dialog,bold,30) coloured(33, 87, 243)
aDotUp = 255
ENDIF
IF tenkan = kijun[1] THEN
dotDn = kijun
drawtext("●", barindex,dotDn,dialog,bold,30) coloured(255, 93, 0)
aDotDn = 255
ENDIF
RETURN tenkan COLOURED(33, 87, 243, 255) STYLE(line, 2) AS "Tenkan-Sen", kijun COLOURED(255, 93, 0, 255) STYLE(line, 2) AS "Kijun-Sen", dotUp COLOURED(33, 87, 243, aDotUp) STYLE(point, 3) AS "Crossover", dotDn COLOURED(255, 93, 0, aDotDn) STYLE(point, 3) AS "Crossunder", sA COLOURED(0, 137, 123, 0) STYLE(line, 1) AS "Senkou Span A", sB COLOURED(255, 82, 82, 0) STYLE(line, 1) AS "Senkou Span B", senkouA COLOURED(0, 137, 123, 0) STYLE(line, 1) AS "Span A (no shift)", senkouB COLOURED(255, 82, 82, 0) STYLE(line, 1) AS "Span B (no shift)", sptK COLOURED(255, 93, 0, 255) STYLE(line, 1) AS "Kijun stop"