Forum

Indicateur MACD ave...
 
Notifications
Clear all

Indicateur MACD avec changement de couleur


Gilles Santacreu
(@ikiu91)
Admin Admin
Inscription: Il y a 10 ans
Posts: 485
Topic starter  

Tout le monde reconnaitra le MACD avec changement de couleur créé par notre amis Steph que j'utilise dans mes videos.

J'ai réussi à faire adapter cet indicateur pour MT4, voici le fichier a placer dans le répertoire indicators de votre MT4

[attachment=0:1yu0vhdv]MACD_Chgt_couleur.mq4[/attachment:1yu0vhdv]


Quote
gaddral
(@gaddral)
Petit BoursiKoteur
Inscription: Il y a 11 ans
Posts: 10
 

La meme chose pour FXCM

[attachment=1:25w0v3z9]MACDR.lua[/attachment:25w0v3z9]
[attachment=0:25w0v3z9]MACDR.lua.zip[/attachment:25w0v3z9]

Note :
1) télécharger les deux fichiers dans un même dossier.
2) renommer le fichier MACDR.lua.zip en MACDR.lua.rc
3) charger dans Fxcm

N hésitez pas à me laisser votre commentaire sur mon tous premier développement.
Ceci et la revision 3


RépondreQuote
bazookaa
(@bazookaa)
Trader Expérimenté
Inscription: Il y a 11 ans
Posts: 142
 

Cher Gaddral,

Sais-tu qu'il y a une différence entre traduire et programmer...

Etant moi-même programmeur et connaissant le langage LUA, j'ai été surpris de voir cet indicateur réalisé par TonyMod en Janvier 2010, un programmeur américain de chez FXCM.

On peut bien entendu modifier ou traduire un indicateur open source (je le fais couramment) mais au moins on ne met pas son "copyright" à la première ligne en disant qu'on l'a programmé, on peut mettre modification, amélioration, traduction par...

Respectons le travail des vrais programmeurs qui mettent leur travail en Open Source gratuitement.

Cordialement et en toutes amitiés,

extrait de l'original (au numéro de page prés ça colle LOL):
-- MACD
-- Moving Average Convergence/Divergence
-- The formula is described in the Kaufman "Trading Systems and Methods" chapter 6 "Momentum and Oscillators" (page 128-130)

...


RépondreQuote
gaddral
(@gaddral)
Petit BoursiKoteur
Inscription: Il y a 11 ans
Posts: 10
 

Suite a la remarque de Bazoo .

Je n'ai pas fait que de la traduction.
N'étant pas programmeur et totalement ignorant du Lua.
J'ai pris le code du macd fourni dans la plateforme Fxcm.
j'ai décrypté le fonctionnement du code.
j'ai télécharger un débogueur lua et un guide de programmation en lua.
et d'autres codes en lua.

j'ai passé 3 jours à chercher et différents codes ont vu le jours.
Les premiers que j'avais poste ici avaient des bugs de coloration.
Tous ça pour ajouter le code qui permettait le changement de couleur.

Le code est libre bien entendu.
L'ajout d'un copyright sur pseudo n'étant que de la fierté surement mal placé! Pendez moi!


RépondreQuote
Steph
(@steph)
Maitre Trader
Inscription: Il y a 11 ans
Posts: 299
 

Salut à tous,

Afin de vérifier mes toutes nouvelles connaissances en MQL4, j'ai voulu réaliser ma version MT4 du S_MACD... Puis, une fois celle-ci réalisée, jai comparé avec celle de Gilles, qui ouvre ce dossier. Immédiatement, une anomalie m'a sauté aux yeux, les histogrammes correspondent à la ligne macd et non aux histogrammes de l'indicateur original. Étant donné le nombre de fois que ce fichier a été télé-chargé sans que personne ne s'avise de le remarquer, il me semble utile, voire indispensable, de revenir sur les formules de cet indicateur.

Qu'est-ce que le MACD ?
C'est un oscillateur centré dont on peut aisément deviner les intentions de son auteur. Il a cherché à corriger le retard sur les cours d'une moyenne mobile ou du croisement de deux moyennes mobiles. Pour cela, il a eu l'idée de mesure l'écart entre 2 moyennes afin d'anticiper leur croisement. C'est la série de ces écarts, convergents lorsque les moyennes se rapprochent et divergents lorsqu'elle s'éloignent que l'on appelle MACD (Morning Average Convergence Divergence). On voit que les valeurs habituelles (12 et 26) encadrent une période de 19.

Puis, comme il restant beaucoup de faux signaux, il à eu l'idée de les atténuer en créant une ligne de signal. Pour ça, il a réaliser une moyenne des écarts. Donc une moyenne de la série des écarts entre les 2 moyennes. Bon, à ce stade, on se retrouve avec deux lignes : la ligne macd (série des écarts entre EMA12 et EMA26 et la ligne de signal qui est une EMA9 de la ligne macd... Mais voilà, patatras, tout les gains d'anticipation est perdu à causse de cette nouvelle moyenne qui génère un nouveau retard....

Alors que faire ?
Et là, l'auteur a eu une idée astucieuse, afin de retrouver l'objectif d'anticipation, il a imaginé de représenter les écarts entre la ligne macd et la ligne de signal sous la forme d'histogramme... C'est précisément cette représentation en histogrammes qui, dans l'indicateur original, change de couleur au franchissement de la ligne zéro, que Gilles utilise dans ses AT en privilégiant les retournements. C'est cette méthode d'analyse qui m'avait donné l'idée de faire basculer les couleurs sur renversement.

Voici le lien avec un dossier qui me semble particulièrement bien fait :
http://www.trading-school.eu/glossaire-bourse/fiche-MACD-44

Pour éviter toute confusion, j'ai coder l'indicateur selon les critères originaux avec les 2 lignes, dont une ligne bleue continue pour la macd et une autre ligne rouge en pointillés pour la ligne de signal et enfin l'écart entre ces deux lignes en histogrammes verts et rouge de part et d'autre de la ligne zéro. Puis, sur une option du menu des paramètres : "Histogramme_seul", on pourra afficher l'indicateur comme dans les AT de Gilles, avec seulement l'histogramme avec le changement de couleur aux retournements.

Les deux options en images 2yr6xywk]CE S_MACD 0807 0907.jpg[/attachment:2yr6xywk]

Le code source S_MACD.mq4 :


//+
+
//| S_MACD.mq4 |
//| Copyright © 2012, Stéphane Meyer |
//| STEPHANE.MEYER0139@ORANGE.FR |
//+
+
#property copyright "Copyright © 2012, Stéphane Meyer"
#property link "STEPHANE.MEYER0139@ORANGE.FR"

#property indicator_separate_window
#property indicator_buffers 4
double macd[],signal[],Vert[],Rouge[];
extern int pR=12, pL=26, pS=9;
extern bool Histo_seul=False;

int init()
{
SetIndexBuffer(0,Rouge);
SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,3,FireBrick);
SetIndexLabel(0,"(macd-sigal)nHistogramme");
SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexBuffer(1,Vert);
SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,3,Green);
SetIndexLabel(1,"(macd-sigal)nHistogramme");
SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexBuffer(2,signal);
SetIndexStyle(2,DRAW_LINE,STYLE_DOT,1,Red);
SetIndexLabel(2,"EMA"+pS+"(macd)nLigne de signal");
SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexBuffer(3,macd);
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1,Blue);
SetIndexLabel(3,"EMA"+pR+"(C) - EMA"+pL+"(C)nLigne MACD");
SetIndexEmptyValue(0,EMPTY_VALUE);
IndicatorShortName(WindowExpertName()+" ("+pR+", "+pL+", "+pS+")");
return(0);
}

int start()
{
int c=IndicatorCounted();
for(int i=0; i<Bars-c; i++)
{
double _macd=iMACD(NULL,0,pR,pL,pS,PRICE_CLOSE,MODE_MAIN,i);
double _signal=iMACD(NULL,0,pR,pL,pS,PRICE_CLOSE,MODE_SIGNAL,i);
double histo=iOsMA(NULL,0,pR,pL,pS,PRICE_CLOSE, i);
if(Histo_seul==False)
{
macd=_macd; signal=_signal;
if(histo<0)
{
Rouge=histo; Vert=0.0;
}
else {Vert=histo; Rouge=0.0;}
}
else
if(histo<iOsMA(NULL,0,pR,pL,pS,PRICE_CLOSE,i+1))
{
Rouge=histo; Vert=0.0;
}
else {Vert=histo; Rouge=0.0;}
}
return(0);
}

Lien avec le dossier initial du codage en probuider (PRT) :
viewtopic.php?f=14&t=77


RépondreQuote
Steph
(@steph)
Maitre Trader
Inscription: Il y a 11 ans
Posts: 299
 

J'ai amélioré tout ce que je pouvais en l'état actuel de mes connaissances.


//+
+
//| S_MACD.mq4 |
//| Copyright © 2012, Stéphane Meyer |
//| STEPHANE.MEYER0139@ORANGE.FR |
//+
+
#property copyright "Copyright © 2012, Stéphane Meyer"
#property link "STEPHANE.MEYER0139@ORANGE.FR"

#property indicator_separate_window
#property indicator_buffers 4
double macd[],signal[],Vert[],Rouge[];
extern int EMA_courte=12, EMA_longue=26, EMA_signal=9;
extern bool Voir_les_histogrammes_seuls=False;

int init()
{
SetIndexBuffer(0,Rouge);
SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,3,FireBrick);
SetIndexLabel(0,"(macd-sigal)nHistogramme");
SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexBuffer(1,Vert);
SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,3,Green);
SetIndexLabel(1,"(macd-sigal)nHistogramme");
SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexBuffer(2,signal);
SetIndexStyle(2,DRAW_LINE,STYLE_DOT,1,Red);
SetIndexLabel(2,"EMA"+EMA_signal+"(macd)nLigne de signal");
SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexBuffer(3,macd);
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1,Blue);
SetIndexLabel(3,"EMA"+EMA_courte+"(C) - EMA"+EMA_longue+"(C)nLigne MACD");
SetIndexEmptyValue(0,EMPTY_VALUE);
IndicatorShortName(WindowExpertName()+" ("+EMA_courte+", "+EMA_longue+", "+EMA_signal+")");
return(0);
}

int start()
{
int c=IndicatorCounted();
for(int i=0; i<Bars-c; i++)
{
double histogramme=iOsMA(NULL,0,EMA_courte,EMA_longue,EMA_signal,PRICE_CLOSE, i);
if(!Voir_les_histogrammes_seuls)
{
macd=iMACD(NULL,0,EMA_courte,EMA_longue,EMA_signal,PRICE_CLOSE,MODE_MAIN,i);
signal=iMACD(NULL,0,EMA_courte,EMA_longue,EMA_signal,PRICE_CLOSE,MODE_SIGNAL,i);
if(histogramme<0)
{
Rouge=histogramme;
Vert=EMPTY_VALUE;
}
else
{
Vert=histogramme;
Rouge=EMPTY_VALUE;
}
}
else if(histogramme<iOsMA(NULL,0,EMA_courte,EMA_longue,EMA_signal,PRICE_CLOSE,i+1))
{
Rouge=histogramme;
Vert=EMPTY_VALUE;
}
else
{
Vert=histogramme;
Rouge=EMPTY_VALUE;
}
}
return(0);
}


RépondreQuote
Gilles Santacreu
(@ikiu91)
Admin Admin
Inscription: Il y a 10 ans
Posts: 485
Topic starter  

Le fichier mq4 prêt à l'emploi, à glisser dans le repertoire /Expert/indicator de votre installation metatrader

[attachment=0:d3zgnxan]S_MACD.mq4[/attachment:d3zgnxan]


RépondreQuote
Share:

activtrades

Courtiers Partenaires

money management

Restez informés</span></h4><p>Abonnez vous à la newsletter</p>
captcha
</div>

activtrades

Posts Récents du Forum