Programmer un screener avec le MACD

Il s'agit d'un article pédagogique pour apprendre à utiliser les codes Probuilder et Proscreener. Nous allons construire un screener (scanner de marché) qui ramène des titres présentant des caractéristiques intéressantes à trader du point de vue de l’indicateur MACD.
Venice Beach – Los Angeles – Californie – USA

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

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 faite à partir de la soustraction de 2 Moyennes mobiles exponentielles (des « EMA »), la EMA12 et la EMA26, sur prix de clôture.

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 MACD c’est la Moyenne mobile exponentielle sur 9 périodes du résultat du calcul suivant : valeur de la EMA12 – valeur de la EMA26.

Rappel : « EMA12 » veut dire Moyenne exponentielle à 12 périodes, ce qui signifie qu’on calcule 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.

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)

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 Cond2.

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].

Iki le dragon trader du site Ikitrading

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

Screener utilisant le MACD pour ramener des titres en tendance haussière.

Ci-dessus : Titre ramenée par le screener : Reprise après consolidation = 5 barres ascendantes sur le MACD – Fraicheur = 5

Screener utilisant le MACD pour ramener des titres en tendance haussière avec reprise après consolidation.

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

Le graphique du MACD agrandi

Ci-dessus : Agrandissement du graphique MACD

Iki le dragon trader du site Ikitrading
  • 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.
Iki le dragon trader du site Ikitrading

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

Iki le dragon trader du site Ikitrading
  • ExponentialAverage[12](close)
  • ExponentialAverage[26](close)
  • ExponentialAverage[9](close)
  • VOLUME
  • SCREENER
Iki le dragon trader du site Ikitrading

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 !

Iki au travail by Alex M.
© Tous droits réservés

Auteure
Diane Dulac
hellodiane@ikitrading.com

Inspirée par IKI
Dragon trader

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *