salut a tous
j'ai bricolé un petit indicateur à partir du canal donchian.
concept:
suivre la tendance grâce à une moyenne qui ne repeint pas, et identifier les pics d'intensité et donc possiblement les breakouts, sur un même indicateur, c'est un travail qui peut être fait sur un graphe nu à l’œil ou en traçant des lignes, mais je trouve personnellement plus pratique de le faire d'un seul coup d’œil avec un indicateur.
principe:
on utilise la difference entre le prix (cloture) et la moyenne des plus hauts plus hauts et des plus bas plus bas sur x periodes et decalée de z pour la tendance.
et la difference entre le prix (cloture) et les plus hauts plus hauts ainsi que les plus bas plus bas sur x periodes et decalée de z pour pics.
parametres:
-periods et shift concernent les breakouts rouge et bleu.
-period long et shift long la tendance jaune.
-amp sert à modifier la taille de l'histogramme jaune (purement visuel)
-set up de base M5.
utilisation:
voir image
comme outil de décision fonctionne bien en tendance , pas mal à peu risqué en bidirectionnel, et pas tété en range, comme un peu tout les indics ;).
n'hésitez pas à tester et à dire si vous trouvez de meilleur réglages, et aussi si vous connaissez d'autres indicateurs qui font le même boulot en mieux.
//+------------------------------------------------------------------+
//| décalage donchian.mq4 |
//| fog |
//+------------------------------------------------------------------+
#property copyright "none"
#property link ""
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_width1 3
#property indicator_color2 Blue
#property indicator_width2 3
#property indicator_color3 Red
#property indicator_width3 3
extern int periods=12;
extern int periodlong=24;
extern int Shift=3;
extern int Shiftlong=12;
extern double amp=0.6;
//---- buffers
double BufferGreen[];
double BufferYellow[];
double BufferRed[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init() {
int i;
for (i=0;i<3;i++) {
SetIndexStyle(i,DRAW_HISTOGRAM);
SetIndexDrawBegin(i,periods);
SetIndexShift(i,Shift);
}
IndicatorShortName("décalage histo("+periods+","+Shift+","+amp+")");
SetIndexBuffer(0,BufferYellow);
SetIndexBuffer(1,BufferGreen);
SetIndexBuffer(2,BufferRed);
SetIndexShift(0,0);
SetIndexShift(1,0);
SetIndexShift(2,0);
return(0); }//int init()
//+------------------------------------------------------------------+
int start() {
int limit;
double tmp1,tmp2,tmp3;
int tmpBar, tmpTime;
int counted_bars=IndicatorCounted();
int i, j,k;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
int cmd;
for (i = limit;i>=0;i--){
tmp3=Close[i]-iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_HIGH,periods,i+Shift));
tmp2=Close[i]-(iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_HIGH,periodlong,i+Shiftlong))+iHigh(Symbol(),Period(),iHighest(Symbol(),Period(),MODE_HIGH,periodlong,i+Shiftlong)))/2;
tmp1=Close[i]-iHigh(Symbol(),Period(),iHighest(Symbol(),Period(),MODE_HIGH,periods,i+Shift));
BufferGreen[i] =tmp1;
BufferYellow[i]=tmp2*amp;
BufferRed[i] =tmp3;
if (BufferGreen[i]>0){
BufferRed[i]=EMPTY_VALUE;
} else if (BufferRed[i] <0){
BufferGreen[i] =EMPTY_VALUE;
} else {
BufferRed[i]=EMPTY_VALUE;
BufferGreen[i] =EMPTY_VALUE;
}
}
return(0);
}
j'ai bricolé un petit indicateur à partir du canal donchian.
concept:
suivre la tendance grâce à une moyenne qui ne repeint pas, et identifier les pics d'intensité et donc possiblement les breakouts, sur un même indicateur, c'est un travail qui peut être fait sur un graphe nu à l’œil ou en traçant des lignes, mais je trouve personnellement plus pratique de le faire d'un seul coup d’œil avec un indicateur.
principe:
on utilise la difference entre le prix (cloture) et la moyenne des plus hauts plus hauts et des plus bas plus bas sur x periodes et decalée de z pour la tendance.
et la difference entre le prix (cloture) et les plus hauts plus hauts ainsi que les plus bas plus bas sur x periodes et decalée de z pour pics.
parametres:
-periods et shift concernent les breakouts rouge et bleu.
-period long et shift long la tendance jaune.
-amp sert à modifier la taille de l'histogramme jaune (purement visuel)
-set up de base M5.
utilisation:
voir image
comme outil de décision fonctionne bien en tendance , pas mal à peu risqué en bidirectionnel, et pas tété en range, comme un peu tout les indics ;).
n'hésitez pas à tester et à dire si vous trouvez de meilleur réglages, et aussi si vous connaissez d'autres indicateurs qui font le même boulot en mieux.
//+------------------------------------------------------------------+
//| décalage donchian.mq4 |
//| fog |
//+------------------------------------------------------------------+
#property copyright "none"
#property link ""
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_width1 3
#property indicator_color2 Blue
#property indicator_width2 3
#property indicator_color3 Red
#property indicator_width3 3
extern int periods=12;
extern int periodlong=24;
extern int Shift=3;
extern int Shiftlong=12;
extern double amp=0.6;
//---- buffers
double BufferGreen[];
double BufferYellow[];
double BufferRed[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init() {
int i;
for (i=0;i<3;i++) {
SetIndexStyle(i,DRAW_HISTOGRAM);
SetIndexDrawBegin(i,periods);
SetIndexShift(i,Shift);
}
IndicatorShortName("décalage histo("+periods+","+Shift+","+amp+")");
SetIndexBuffer(0,BufferYellow);
SetIndexBuffer(1,BufferGreen);
SetIndexBuffer(2,BufferRed);
SetIndexShift(0,0);
SetIndexShift(1,0);
SetIndexShift(2,0);
return(0); }//int init()
//+------------------------------------------------------------------+
int start() {
int limit;
double tmp1,tmp2,tmp3;
int tmpBar, tmpTime;
int counted_bars=IndicatorCounted();
int i, j,k;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
int cmd;
for (i = limit;i>=0;i--){
tmp3=Close[i]-iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_HIGH,periods,i+Shift));
tmp2=Close[i]-(iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_HIGH,periodlong,i+Shiftlong))+iHigh(Symbol(),Period(),iHighest(Symbol(),Period(),MODE_HIGH,periodlong,i+Shiftlong)))/2;
tmp1=Close[i]-iHigh(Symbol(),Period(),iHighest(Symbol(),Period(),MODE_HIGH,periods,i+Shift));
BufferGreen[i] =tmp1;
BufferYellow[i]=tmp2*amp;
BufferRed[i] =tmp3;
if (BufferGreen[i]>0){
BufferRed[i]=EMPTY_VALUE;
} else if (BufferRed[i] <0){
BufferGreen[i] =EMPTY_VALUE;
} else {
BufferRed[i]=EMPTY_VALUE;
BufferGreen[i] =EMPTY_VALUE;
}
}
return(0);
}