voici le code proposé par gpt5
// ==============================
// MACD RELOADED + ZONES VERT/ROUGE
// Version corrigée
// ==============================
//DEFPARAM CumulateOrders = False
// —– Paramètres (valeurs par défaut)
short1 = 12
mmshort1 = 1
short2 = 6
mmshort2 = 1
long1 = 26
mmlong1 = 1
long2 = 13
mmlong2 = 1
signal = 9
// —– Calculs Reloaded MACD
EMAshort1 = Average[short1,mmshort1](close)
EMAshort2 = Average[short2,mmshort2](EMAshort1)
DifferenceShort= EMAshort1 – EMAshort2
ReloadedShort = EMAshort1 + DifferenceShort
EMAlong1 = Average[long1,mmlong1](close)
EMAlong2 = Average[long2,mmlong2](EMAlong1)
DifferenceLong = EMAlong1 – EMAlong2
ReloadedLong = EMAlong1 + DifferenceLong
ReloadedMACD = ReloadedShort – ReloadedLong
signal1 = ExponentialAverage[signal](ReloadedMACD)
signal2 = ExponentialAverage[signal](signal1)
DIFFERENCE2 = signal1 – signal2
SignalMACD = signal1 + DIFFERENCE2
// —– Couleurs pour la chandelle MACD (sous-graphique)
IF SignalMACD >= ReloadedMACD THEN
r = 250
g = 0
b = 0
ELSE
r = 0
g = 250
b = 0
ENDIF
// —– Tracer “chandelle” dans le sous-graphique MACD
// ordre : open, high, low, close
openC = SignalMACD
highC = max(SignalMACD, ReloadedMACD)
lowC = min(SignalMACD, ReloadedMACD)
closeC = ReloadedMACD
DRAWCANDLE(openC, highC, lowC, closeC) COLOURED(r,g,b)
// —– Flèche sur les croisements
IF (ReloadedMACD crosses over SignalMACD) OR (ReloadedMACD crosses under SignalMACD) THEN
DRAWTEXT(“▲”, barindex, SignalMACD, Dialog, Bold, 40) COLOURED(r,g,b)
ENDIF
// —– Détection régime (haussier / baissier)
bull = ReloadedMACD > SignalMACD
bear = ReloadedMACD < SignalMACD
ONCE zoneStart = barindex
ONCE regime = 0 // +1 = bullish, -1 = bearish
// initialisation du régime sur la première bougie utile
IF regime = 0 THEN
IF bull THEN
regime = 1
ELSIF bear THEN
regime = -1
ENDIF
zoneStart = barindex
ENDIF
// si changement de régime : démarrer une nouvelle zone
IF (bull AND regime <> 1) OR (bear AND regime <> -1) THEN
zoneStart = barindex
IF bull THEN
regime = 1
ELSE
regime = -1
ENDIF
ENDIF
// —– Bornes Y pour tracer les rectangles sur le graphique prix
// (si tu veux couvrir toujours tout l’écran, tu peux remplacer par yLow=0 / yHigh=close*100)
yLow = lowest[200](low) * 0.98
yHigh = highest[200](high) * 1.02
IF regime = 1 THEN
// zone haussière — vert semi-transparent
DRAWRECTANGLE(zoneStart, yLow, barindex, yHigh) COLOURED(0,200,0,30) BORDERCOLOR(0,0,0,0)
ELSIF regime = -1 THEN
// zone baissière — rouge semi-transparent
DRAWRECTANGLE(zoneStart, yLow, barindex, yHigh) COLOURED(200,0,0,30) BORDERCOLOR(0,0,0,0)
ENDIF
// —– Retour des courbes MACD (sous-graphique)
RETURN ReloadedMACD COLOURED(250,254,250) STYLE(line,3) AS “Reloaded MACD”,SignalMACD COLOURED(255,249,0) STYLE(line,1) AS “Signal MACD”,0 COLOURED(200,200,200) AS “zero line”