Sur la plateforme ProRealTime, on peut écrire ses propres algorithmes.
L’indicateur MACD existe déjà pré-installé sur la plateforme, mais on peut fabriquer son propre MACD.
Dans quel but ?
– Apprendre à utiliser les codes Probuilder et Proscreener pour automatiser son trading (et ceci est un article pédagogique).
ET / OU :
– Faire un screener (scanner de marché) qui ramènent des titres qui présentent certains caractéristiques intéressantes à trader du point de vue de l’indicateur MACD.
Cliquer ici pour sauter les explications sur la façon d’écrire le screener et aller directement au CODE du screener et aux RESULTATS en graphiques.
Article réécrit en septembre 2022
Comment est calculé le MACD ?
Il y a un article complet sur le MACD ici : tenants et aboutissants, des graphiques en exemples, une solution d’utilisation facile avec plusieurs points d’entrée en position, que penser du MACD ZeroLag….
Mais voici la formule de calcul de cet indicateur, la seule chose nécessaire pour écrire un petit programme.
Le MACD comprend 2 lignes et un histogramme qui sont élaborés à partir de 3 Moyennes mobiles exponentielles.
– Une ligne rapide appelée la ligne de MACD calculée à partir de la soustraction de 2 Moyennes mobiles exponentielles (des « EMA »), la EMA12 et la EMA26, sur prix de clôture.
C’est la ligne bleue d’un graphique MACD.
– Une ligne lente appelée Ligne de Signal. C’est en fait la ligne de MACD lissée par une Moyenne mobile exponentielle à 9 périodes.
En d’autres termes, la ligne de Signal c’est la Moyenne mobile exponentielle sur 9 périodes du résultat du calcul suivant : valeur de la EMA12 – valeur de la EMA26.
C’est la ligne rouge d’un graphique MACD.
Rappel : « EMA12 » veut dire Moyenne exponentielle à 12 périodes. On calcule alors la moyenne des 12 dernières valeurs du prix en donnant plus de poids aux valeurs les plus récentes.
– L’histogramme est formé grâce au résultat du calcul suivant : Valeur de la ligne de MACD – Valeur de la ligne de signal
On peut aussi changer ces paramètres avec des Moyennes mobiles plus courtes si on a besoin de plus de réactivité. Les périodes 12, 26, 9 sont des paramètres par défaut de l‘indicateur sur les plateformes de trading mais ces périodes sont modifiables.
Déclaration des variables
2 façons de procéder :
– simple : on prend les valeur les plus courantes du MACD et on fait une déclaration « littérale ».
– moins simple : on reprend l’idée que l’on va avoir envie de modifier les périodes données par défaut sur les plateformes.
Dans ce cas, on va ajouter des variables intermédiaires. On changera alors le nombre de périodes dans la variable.
// SIMPLE : EN REPRENANT LES VALEURS CLASSIQUES DU MACD
LignedeMACD = ExponentialAverage[12](close) – ExponentialAverage[26](close)
LignedeSignal = ExponentialAverage[9](LignedeMACD)
// MOINS SIMPLE : AVEC VARIABLES INTERMEDIAIRES si on veut changer le paramétrage un jour
MoyCourte = ExponentialAverage[12](close)
MoyLongue = ExponentialAverage[26](close)
MoydeLissage = ExponentialAverage[9](close)
LignedeMACD = MoyCourte – MoyLongue
LignedeSignal = MoydeLissage (LignedeMACD)
// LE CALCUL DE L’HISTOGRAMME NE CHANGE PAS
HISTOdeMACD = LignedeMACD – LignedeSignal
(ExponentialAverage[12](close), ExponentialAverage[26](close), ExponentialAverage[9](close) sont des fonctions de Prorealcode)
Les conditions que doivent remplir un titre pour être pris dans les filets du screener
Des conditions de base
– un volume de transactions suffisant, c’est à dire supérieur à 10 000 titres déjà échangés pendant l’unité de temps du jour de lancement :
Cond1 = VOLUME > 10000
(« VOLUME est une fonction de Prorealcode)
– On ne veut pas de titres dont la valeur est inférieure à 10 centimes d’euros.
Cond2 = close > 0.1
(« close » est le prix du jour de l’actif)
Les conditions liées au MACD
Ce que l’on veut :
Des titres dont la tendance vient de passer haussière donc :
– des titres dont l’histogramme de MACD est positif.
– des titres dont l’histogramme de MACD est ascendant.
– On veut aussi afficher la fraicheur du signal c’est à dire depuis combien de temps l’histogramme a franchi la ligne de zéro pour devenir positif.
NB : on a choisi l’unité de temps journalière dans cet exemple pour les pratiquants du Swing trading.
On choisit l’unité de temps dans « Période » au lancement du screener ( à sélectionner en même temps que la liste d’actifs).
Comment programmer ce screener ?
- On veut un histogramme positif :
On ne veut que les titres dont l’histogramme est devenu positif depuis au plus 4 jours et au moins 2 jours.
(NB : positif = les barres sont devenues vertes sur le graphique MACD, le jour J est le jour 0)
Il faut que l’histogramme ait traversé la ligne de zéro soit il y a 2 jours (J-2), soit il y a 3 jours (J-3), soit il y a 4 jours (J-4), ceci afin de s’assurer que la tendance haussière pourrait être déjà confirmée.
Voici l’instruction correspondante, on l’appelle Cond3.
Cond3 = HISTOdeMACD[2] CROSSES OVER 0 OR HISTOdeMACD [3] CROSSES OVER 0 OR HISTOdeMACD [4] CROSSES OVER 0
- On veut un histogramme vert soit ascendant.
Il faut que chaque barre soit plus haute que la barre précédente, ceci pour les 3 dernières barres. Cette condition s’appelle Cond4.
Cond4 = (HISTOdeMACD[0] > HISTOdeMACD[1]) AND (HISTOdeMACD[1] > HISTOdeMACD[2]) AND (HISTOdeMACD[2] > HISTOdeMACD[3])
- Affichage de la fraicheur du signal
Les valeurs prises pour le nombre de barres vont de 5 à 3.
Selon les conditions de marché dans la liste d’actifs choisie, il peut ne pas y avoir de fraicheur 5 ou de 4 ou de 3.
On alimente une variable (nbbarres) avec le nombre de barres depuis le passage au vert de l’histogramme. 2 façons de faire ce test.
On peut écrire :
IF HistodeMACD[2] > 0 THEN
nbbarres = 3
ENDIF
IF HistodeMACD[3] > 0 THEN
nbbarres = 4
ENDIF
IF HistodeMACD[4] > 0 THEN
nbbarres = 5
ENDIF
Ou on peut écrire aussi :
IF HistodeMACD[2] CROSSES OVER 0 THEN
nbbarres = 3
ENDIF
IF HistodeMACD[3] CROSSES OVER 0 THEN
nbbarres = 4
ENDIF
IF HistodeMACD[4] CROSSES OVER 0 THEN
nbbarres = 5
ENDIF
NB : Le jour J , jour de lancement du screener, est HistodeMACD [0].
Ecriture du screener
Pour rentrer le code sur la plate-forme Prorealtime :
1°) Créer l’enveloppe du Screener
- Aller sur Affichage dans la barre supérieure de commande.
- Cliquez sur ProScreener.
- Cliquez sur le logo « outil configuration » (la clé à molette) directement s’il est affiché à ce moment.
- Sinon cliquez sur les 3 barres indiquant l’accès au menu et cliquez sur le logo « outil configuration ».
- Cliquer sur « Créer ».
- Cliquez sur « Création par programmation ».
- Donner un titre au screener – Lui donner un nom commençant par #, plus facile pour reconnaitre vos algos parmi ceux déjà présents.
- Retirer les lignes pré-installées (un commentaire et l’instruction Screener).
2°) Copier / coller le code du screener ci-dessous :
// SCREENER UTILISANT LE MACD
// DECLARATION DES VARIABLES
LignedeMACD = ExponentialAverage[12](close) – ExponentialAverage[26](close)
LignedeSignal = ExponentialAverage[9](LignedeMACD)
HISTOdeMACD = LignedeMACD – LignedeSignal
nbbarres = 0
// DESCRIPTION DES CONDITIONS
Cond1 = VOLUME > 10000
Cond2 = close > 0.1
Cond3 = HISTOdeMACD[2] CROSSES OVER 0 OR HISTOdeMACD[3]CROSSES OVER 0 OR HISTOdeMACD[4]CROSSES OVER 0
Cond4 = (HISTOdeMACD[0] > HISTOdeMACD[1])AND (HISTOdeMACD[1] > HISTOdeMACD[2]) AND (HISTOdeMACD[2] > HISTOdeMACD[3])
// affichage du nombre de barres positives depuis le passage de la ligne de zéro autrement dit la Fraicheur du signal
IF HistodeMACD[2] CROSSES OVER 0 THEN
nbbarres = 3
ENDIF
IF HistodeMACD[3] CROSSES OVER 0 THEN
nbbarres = 4
ENDIF
IF HistodeMACD[4] CROSSES OVER 0 THEN
nbbarres = 5
ENDIF
SCREENER[Cond1 and Cond2 and Cond3 and Cond4] (nbbarres AS « Fraicheur du signal »)
Remarque : Attention aux guillemets autour de « Fraicheur du signal » dans l’espace d’écriture du programme si vous copiez / collez ce code.
Il ne faut pas de chevrons (guillemets français) mais des caractères « double apostrophe » (guillemets anglais) de part et d’autre de l’expression.
Veillez à les transformer après le copier / coller sinon il y a une erreur lors du lancement du programme sur la ligne SCREENER.
3°) Choisir une liste de titres et exécuter le screener.
Selon les conditions de marché et son besoin, on choisit une liste plus ou moins étendue.
Quand la tendance est globalement baissière pour les actions, on aura plus de titres retournés par le screener avec la liste Europe Euronext Actions qu’avec la liste France Actions.
On peut n’afficher que le MACD sur le graphique pour voir plus distinctement les barres de l’histogramme : mettre le curseur sur le graphique MACD, faire clic droit et sélectionner « Agrandir le graphique MACD ».
Résultats graphiques
Ci-dessus : Titre ramenée par le screener : Reprise après consolidation = 5 barres ascendantes sur le MACD – Fraicheur = 5
Ci-dessous : Titre ramené par le screener : Reprise de la tendance 3 jours après le franchissement de la ligne de zéro – Fraicheur = 3
Ci-dessus : Agrandissement du graphique MACD
Conclusion
- Ce screener doit être à associer à l’examen d’un autre indicateur, par exemple le RSI, pour étudier / confirmer l’hypothèse une entrée en position.
Les graphiques ci-dessus font apparaitre le RSI affiché sous le MACD ainsi que les Moyennes mobiles simples 5 périodes (rouge), 20 périodes(bleue) et la Moyenne mobile exponentielle 13 périodes (verte) sur le graphique des prix. - Ce screener peut faire partie d’un screener plus large qui teste plusieurs indicateurs.
- Grâce à ce screener, vous pouvez découvrir des titres sur le point d’entrer en divergence (= MACD ascendant et courbe des prix baissière). Mais dans ce cas c’est à vous de l’observer sur le graphique car ils ne sont pas sélectionnés particulièrement.
Historique des modifications de cet article
Septembre 2022 – Ce que j’ai retiré de la version précédente (septembre 2021) de ce screener.
Cette condition a été retirée car peut-être pas utile (à discuter si vous le désirez, voir mon adresse e-mail ci-dessous).
- On veut que les lignes de MACD et ligne de signal se croisent sous la ligne de zéro.
Mais ça ne suffit pas car quand l’histogramme devient positif la tendance est haussière, certes, mais on veut attraper la tendance quand elle débute et non pas quand elle reprend après un fléchissement. Le début de la tendance haussière commence quand la ligne de MACD et la ligne de signal se croisent sous la ligne de zéro. Voir graphique ci-dessous.
On sait que quand l’histogramme est à zéro, c’est que les lignes sont en train de se croiser.
Rappel de l’article sur le MACD :
Quand les lignes se croisent, c’est que l’écart entre les Moyennes mobiles exponentielles EMA12 et EMA26 se rétrécit.
Le croisement des lignes indique la première bougie du graphique des prix qui voit les 2 EMA réduire leur écart.
(La première bougie = la première unité de temps. EX : soit le premier jour si on a affiché un graphique journalier, soit la première minute si on a affiché un graphique en minutes).
Puis, après un croisement, quand la Ligne de MACD passe au-dessus de la Ligne de Signal, l’histogramme devient positif.
Mais il peut aussi redevenir positif juste après un fléchissement, une petite baisse momentanée : c’est le cas quand les deux lignes se croisent au-dessus de zéro.
Pour avoir une tendance haussière forte suite à un retournement, il faut plus d’élan.
Il faut donc que la Ligne de MACD et la Ligne de Signal se croisent en dessous de la ligne de zéro.
Comment savoir si elles se croisent au-dessus ou en dessous de zéro ?
On sait qu’elles se croisent en dessous de zéro seulement quand la EMA12 était en dessous de la EMA26.
Normal ! La tendance passera de baissière à haussière quand la EMA12 passera au-dessus de la EMA26.
On peut dire que la EMA12 prend donc son élan sous la EMA26.
Donc on va chercher l’annonce du changement de tendance à la hausse.
On ajoute la condition : EMA12 < EMA26 c’est à dire EMA12 doit être en dessous de EMA26.
Flèche verte : les deux lignes se croisent sous la ligne de zéro ce qui veut dire que la EMA12 se rapproche de la EMA26 pour la croiser et, là, la tendance sera fortement à la hausse.
Flèche rouge : la EMA12 repasse au-dessus de la EMA26 après un petit fléchissement. Les deux lignes se croisent au-dessus de la ligne de zéro. On n’a pas le meilleur de la hausse.
On exprime cette condition ainsi selon qu’on passe par des variables intermédiaires ou pas :
– soit : ExponentialAverage[12](close) < ExponentialAverage[26](close)
– soit : MoyCourte < MoyLongue
Liste des fonctions Probuilder de ProRealTime utilisées dans le screener :
- ExponentialAverage[12](close)
- ExponentialAverage[26](close)
- ExponentialAverage[9](close)
- VOLUME
- SCREENER
Diane Dulac
hellodiane@ikitrading.com
En écrivant à cette adresse email, vous pouvez : signaler une erreur, donner une piste d’amélioration de ce screener, demander des explications, me donner les résultats de vos tests, proposer une stratégie à transformer en screener ou en indicateur …
Merci d’être passé(e) par Ikitrading et bons trades !
Auteure
Diane Dulac
hellodiane@ikitrading.com
Inspirée par IKI
Dragon trader