Stratégie de trading vagues d'Elliott
Tout pour construire une stratégie de trading avec les vagues d’Elliott

Création d’une stratégie basée sur les vagues d’Elliott
Après avoir vu le principe de base des vagues d’Elliott, nous allons dorénavant créer une stratégie basée sur ce modèle d’analyse de marché avec la plateforme d’analyse et de trading Multicharts. Cette stratégie sera composée de 3 fonctions qui reprennent un oscillateur, une définition de la tendance et un outil de décompte des vagues. A partir de ces trois fonctions nous créerons notre système de trading.
Création des fonctions
Tout d’abord pour créer notre stratégie basée sur les vagues d’Elliott, il va nous falloir créer trois fonctions qui vont être utilisées par notre stratégie. Il s’agit des fonctions ELLIOTTWAVEOSC ,ELLIOTTREND et WAVE345ELLIOTT.
Commençons par la première fonction ELLIOTTWAVEOSC. Il s’agit d’un oscillateur basé sur les vagues d’Elliott. Cet oscillateur va être conçu à partir de la différence entre une moyenne mobile simple de 5 périodes et une moyenne mobile simple de 35 périodes.
Allez dans le Power language Editor, faite New=>Function
Nommez votre stratégie, puis copiez et collez le code de la stratégie dans la nouvelle fenêtre et compilez-la.
Et faites ainsi de suite pour les autres fonctions.
Le code de cette fonction « ELLIOTTWAVEOSC » est le suivant :
VARS: OSC535(0), PRICE(0);
PRICE = (H+L)/2;
IF AVERAGE(PRICE, 35) <> 0 THEN
OSC535 = AVERAGE(PRICE, 5) – AVERAGE(PRICE, 35);
ELLIOTTWAVEOSC = OSC535;
Ensuite nous allons créer la seconde fonction ELLIOTTREND. Cette fonction va utiliser la précédente pour qualifier la tendance. Selon certains paramètres cette fonction va qualifier la tendance soit haussière ou baissière.
Le code de cette fonction « ELLIOTTREND » est le suivant :
INPUTS: LEN(NUMERIC), TRIGGER(NUMERIC);
VARS: TREND(0), OSC(0);
OSC = ELLIOTTWAVEOSC;
IF OSC = HIGHEST(OSC, LEN) AND TREND = 0 THEN
TREND = 1;
IF OSC = LOWEST(OSC, LEN) AND TREND = 0 THEN
TREND = -1;
IF LOWEST(OSC, LEN) < 0 AND TREND = -1 AND OSC > -1 * TRIGGER * LOWEST(OSC, LEN) THEN
TREND = 1;
IF HIGHEST(OSC, LEN) > 0 AND TREND = 1 AND OSC < -1 * TRIGGER * HIGHEST(OSC, LEN) THEN
TREND = -1;
ELLIOTTREND = TREND;
Pour finir nous allons créer la troisième fonction WAVE345ELLIOTT. Cette fonction va utiliser les deux fonctions précédentes pour qualifier la vague dans laquelle nous nous trouvons. Selon certains paramètres cette fonction va nous dire si nous sommes dans une vague 3, 4 ou 5.
Le code de cette fonction « WAVE345ELLIOTT » est le suivant :
INPUTS: LEN(NUMERIC), TRIG(NUMERIC);
VARS: ET(0), PRICE(0), OSC(0), WAVE(0), HIOSC(-999), HIOSC2(-999), HIPRICE(-999), HIPRICE2(-999);
OSC = ELLIOTTWAVEOSC;
PRICE = (HIGH + LOW) / 2;
ET = ELLIOTTREND(LEN, TRIG);
IF ET = 1 AND ET[1] = -1 AND OSC > 0 THEN BEGIN
HIOSC = OSC;
HIPRICE = PRICE;
WAVE = 3;
END;
IF WAVE = 3 AND HIOSC < OSC THEN
HIOSC = OSC;
IF WAVE = 3 AND OSC <= 0 AND ET = 1 THEN
WAVE = 4;
IF WAVE = 4 AND PRICE = HIGHEST(PRICE, 5) AND OSC >= 0 THEN BEGIN
WAVE = 5;
HIOSC2 = OSC;
HIPRICE2 = PRICE;
END;
IF WAVE = 5 AND HIOSC2 < OSC THEN
HIOSC2 = OSC;
IF WAVE = 5 AND HIPRICE2 < PRICE THEN
HIPRICE2 = PRICE;
IF HIOSC2 > HIOSC AND WAVE = 5 AND ET = 1 THEN BEGIN
WAVE = 3;
HIOSC = HIOSC2;
HIPRICE = HIPRICE2;
HIOSC2 = -999;
HIPRICE2 = -999;
END;
IF ET = -1 AND WAVE = 5 THEN BEGIN
WAVE = -3;
HIOSC = -999;
HIPRICE = -999;
HIOSC2 = -999;
HIPRICE2 = -999;
END;
WAVE345ELLIOTT = WAVE;
Nos fonctions sont désormais créées, passons maintenant à notre stratégie.
Création de la stratégie
Les conditions de notre stratégie sont les suivantes :
- Stratégie uniquement acheteuse (pas d’ordres de vente)
- Achat si une vague 3 est détectée
- Achat si après une vague 4 une vague 5 est détectée
- Achat si après une vague 5 une vague 3 est détectée (les vagues 1 et 2 sont volontairement ignorées)
- Sortie d’une position si l’oscillateur de vagues d’Elliott passe baissier
Le code de cette stratégie « Elliott Wave System » est le suivant :
INPUTS: LEN(80), TRIG(.7);
VARS: WAVCOUNT(0), OSC(0);
OSC = ELLIOTTWAVEOSC;
WAVCOUNT = WAVE345ELLIOTT(LEN, TRIG);
IF WAVCOUNT = 3 AND WAVCOUNT[1] <= 0 THEN
BUY NEXT BAR AT OPEN;
IF WAVCOUNT = 5 AND WAVCOUNT[1] = 4 THEN
BUY NEXT BAR AT OPEN;
IF WAVCOUNT = 3 AND WAVCOUNT[1] = 5 THEN
BUY NEXT BAR AT OPEN;
IF OSC < 0 THEN
EXITLONG NEXT BAR AT OPEN;
Une fois compilée vous pourrez ajouter cette stratégie à n’importe quel graphique. De plus vous pourrez ajuster le code de la stratégie en y ajoutant des filtres ou des stops ou targets pour améliorer la stratégie.