Bonjour,
Je me posse la question si c’est possible de rajouter : MACD Zéro retard 12/26/9 ? avec le signal d’achat à mon Sceener ?
Voila le code
Merci 🙏
// Heikin-Ashi calculation
once haOpen = open
haClose = (open + close + high + low) / 4
if barindex > 0 then
haOpen = (haOpen[1] + haClose[1]) / 2
endif
// Indicators
tenkan = TenkanSen[9,26,52]
kijun = KijunSen[9,26,52]
sma20 = average[20](close)
// haOpen below all lines, haClose above all lines
cond = haOpen < tenkan AND haOpen < kijun AND haOpen < sma20 AND haOpen
cond = cond AND haClose > tenkan AND haClose > kijun AND haClose > sma20 AND haClose
SCREENER[cond]
Oui, tu peux ajouter un filtre de MACD Zéro retard 12/26/9 avec signal d’achat à ton ProScreener.
Logique proposée (signal d’achat MACD Zéro retard) :
- On calcule un MACD “zéro retard” en travaillant directement sur les prix (Heikin Ashi possibles, j’y reviens plus bas).
- On définit le signal d’achat par un croisement haussier du MACD au-dessus de sa ligne de signal ou de la ligne 0 (à adapter à ta préférence).
Ci-dessous, j’intègre un MACD 12/26/9 classique (moyennes exponentielles) et un signal d’achat basé sur le croisement haussier du MACD au-dessus de sa ligne de signal. Tu peux ajuster la condition selon ce que tu appelles exactement “zéro retard” (par ex. croisement avec 0 au lieu de la ligne de signal).
Code ProScreener avec MACD 12/26/9 + signal d’achat :
// =========================
// Heikin-Ashi calculation
// =========================
ONCE haOpen = open
haClose = (open + close + high + low) / 4
IF barindex > 0 THEN
haOpen = (haOpen[1] + haClose[1]) / 2
ENDIF
// =========================
// Ichimoku + SMA
// =========================
tenkan = TenkanSen[9,26,52]
kijun = KijunSen[9,26,52]
sma20 = average[20](close)
// =========================
// Condition Heikin Ashi
// haOpen sous toutes les lignes
// haClose au-dessus de toutes les lignes
// =========================
cond = haOpen < tenkan AND haOpen < kijun AND haOpen < sma20 AND haOpen
cond = cond AND haClose > tenkan AND haClose > kijun AND haClose > sma20 AND haClose
// =========================
// MACD 0-lag 12/26/9 (classique)
// =========================
// Si tu veux un MACD basé sur les bougies Heikin-Ashi,
// remplace "close" par "haClose" dans les EMA ci-dessous.
fastEMA = ExponentialAverage[12](close)
slowEMA = ExponentialAverage[26](close)
xmacd = fastEMA - slowEMA
signal = ExponentialAverage[9](macd)
// =========================
// Signal d'achat MACD
// Croisement haussier MACD > signal
// =========================
achatMACD = xmacd CROSSES OVER signal
// Variante : croisement haussier de la ligne 0
// achatMACD = xmacd CROSSES OVER 0
// =========================
// Condition finale du Screener
// =========================
cond = cond AND achatMACD
SCREENER[cond]
Explications rapides :
- fastEMA et slowEMA : EMA 12 et 26, base du MACD.
- macd = fastEMA − slowEMA.
- signal : EMA 9 du MACD.
- achatMACD : croisement haussier du MACD au-dessus de sa ligne de signal (ou de 0 selon la variante).
- cond combine tes conditions Heikin Ashi / Ichimoku / SMA20 avec le signal d’achat MACD.
Si par “MACD Zéro retard” tu utilises une autre formule précise (par exemple une version spécifique partagée sur ProRealCode), remplace simplement la partie de calcul macd / signal par cette variante et conserve le test de croisement achatMACD.
Bonjour
Il y a une erreur au code , ligne 34
JSParticipant
Veteran
Salut, “macd” est un mot-clé réservé dans le code PRT et ne peut donc pas être utilisé comme nom de variable.
Une solution consiste à ajouter la lettre “x” devant “macd”…
xmacd = fastEMA – slowEMA (line 34)
achatMACD = xmacd CROSSES OVER signal (line 42)
J’ai corrigé le code de AI-vy, cependant voici une autre version avec le “vrai” code du MACD Zéro retard:
// ── Paramètres MACD Zéro Retard ──────────────────────────────────
short = 12
long = 26
signal = 9
// ── Heikin-Ashi calculation ──────────────────────────────────────
once haOpen = open
haClose = (open + close + high + low) / 4
if barindex > 0 then
haOpen = (haOpen[1] + haClose[1]) / 2
endif
// ── Indicators ───────────────────────────────────────────────────
tenkan = TenkanSen[9,26,52]
kijun = KijunSen[9,26,52]
sma20 = average[20](close)
// ── MACD Zéro Retard 12/26/9 ────────────────────────────────────
EMAshort1 = exponentialaverage[short](close)
EMAshort2 = exponentialaverage[short](EMAshort1)
ZeroLagShort = EMAshort1 + (EMAshort1 - EMAshort2)
EMAlong1 = exponentialaverage[long](close)
EMAlong2 = exponentialaverage[long](EMAlong1)
ZeroLagLong = EMAlong1 + (EMAlong1 - EMAlong2)
ZeroLagMACD = ZeroLagShort - ZeroLagLong
signal1 = ExponentialAverage[signal](ZeroLagMACD)
signal2 = ExponentialAverage[signal](signal1)
SignalMACD = signal1 + (signal1 - signal2)
// Signal d'achat MACD : croisement haussier ZeroLagMACD > SignalMACD
macdBuy = ZeroLagMACD crosses over SignalMACD
// ── Conditions Heikin-Ashi + Ichimoku + SMA ──────────────────────
cond = haOpen < tenkan AND haOpen < kijun AND haOpen < sma20
cond = cond AND haClose > tenkan AND haClose > kijun AND haClose > sma20
// ── Condition finale ─────────────────────────────────────────────
cond = cond AND macdBuy
SCREENER[cond]
Voici ce qui a été ajouté et pourquoi :
- Les variables short, long, signal permettent de modifier facilement les périodes 12/26/9 sans toucher au calcul.
- ZeroLagShort et ZeroLagLong utilisent la méthode Double EMA (EMA – EMA de EMA) pour annuler le retard.
- SignalMACD est lui aussi calculé en Zéro Retard avec la même logique appliquée à la ligne MACD.
- macdBuy déclenche uniquement quand la ligne MACD Zéro Retard croise au-dessus de la ligne Signal (momentum haussier confirmé).
- Cette condition est combinée en AND avec tes conditions Heikin-Ashi / Ichimoku / SMA20 existantes, donc toutes les conditions doivent être vraies simultanément pour qu’un titre ressorte.
Merci Beaucoup, cest sympa 🙏