Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Bonjour,
J'ai besoin d'un indicateur uniquement pour placer une étiquette de texte fixe sur un graphique.
Pouvez-vous me montrer un modèle.
Merci.
Jo
Bonjour,
J'ai besoin d'un indicateur pour placer uniquement une étiquette de texte fixe sur un graphique.
Pouvez-vous me montrer un modèle.
Merci.
JoJo
Avez-vous consulté ce fil de discussion : https://www.mql5.com/en/forum/179041
Jo Avez-vous consulté ce fil de discussion : https://www.mql5.com/en/forum/179041
Mladen,
Dans le fil de discussion, j'ai trouvé un post qui amène à "TRO_MyNotes" qui est exactement ce dont j'ai besoin.
Encore une fois, Mladen, merci beaucoup pour votre aide.
Jo
Je me demande si quelqu'un peut m'aider sur ce sujet (post #4739) ?
Merci.
Je ne sais pas si ce que je demande est possible mais, en ce qui concerne l'indicateur ci-joint, est-il possible de rendre la ligne jaune qui apparaît dans le canal "vraie" ?
Je veux dire par là que la ligne jaune ne s'aplanit pas/ne se recalcule pas.
Merci.godrich
C'est impossible.
Il s'agit d'un filtre Hodrick/Prescott - sa nature est de recalculer. Il y a eu des tentatives pour le faire (le rendre pointu, par exemple), mais les résultats sont tout sauf similaires à l'original.
Bonjour,
J'essaie de créer l'indicateur de bougies MTF ma arrondi avec la fonction icustom. Sans succès, pas d'erreur du tout mais l'indicateur joint ne montre rien. Merci de m'aider. Merci.
Le code source de l'indicateur est le suivant :
//| MAR.mq4 |
//| Copyright © 2014, Gehtsoft USA LLC |
//| http://fxcodebase.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Gehtsoft USA LLC"
#property link "http://fxcodebase.com"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
extern int timeFrame = 0; // Time frame to use
extern int Length=8;
extern int Method=0; // 0 - SMA
// 1 - EMA
// 2 - SMMA
// 3 - LWMA
extern double Round=2;
extern int Price=0; // Applied price
// 0 - Close
// 1 - Open
// 2 - High
// 3 - Low
// 4 - Median
// 5 - Typical
// 6 - Weighted
extern int BarsToCalculate = 0;
double MAR[],MARda[],MARdb[],slope[] ;
double MA[], MovAle[];
double MaRo;
string indicatorFileName;
bool returnBars;
int init()
{
IndicatorShortName("Rounded ma MTF");
IndicatorBuffers(6);
SetIndexBuffer(0,MAR);
SetIndexBuffer(1,MARda);
SetIndexBuffer(2,MARdb);
SetIndexBuffer(3,MA);
SetIndexBuffer(4,MovAle);
SetIndexBuffer(5,slope);
indicatorFileName = WindowExpertName();
returnBars = timeFrame==-999; if (returnBars) return(0);
if (timeFrame==0) timeFrame= Period();
MaRo=Round*Point;
return(0);
}
int deinit()
{
return(0);
}
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { MAR[0] = MathMin(limit+1,Bars-1); return(0); }
if (timeFrame!=Period())
{
limit = (int)MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,-999,0,0)*timeFrame/Period()));
if (BarsToCalculate>0) limit = MathMin(limit,BarsToCalculate);
if (slope[limit]==-1) ClearPoint(limit,MARda,MARdb);
for (int i=limit; i>=0; i--)
{
int y = iBarShift(NULL,timeFrame,Time);
MAR = iCustom(NULL,timeFrame,indicatorFileName,0,Length,Method,Round,Price,BarsToCalculate,0,y);
slope = iCustom(NULL,timeFrame,indicatorFileName,0,Length,Method,Round,Price,BarsToCalculate,5,y);
MARda = EMPTY_VALUE;
MARdb = EMPTY_VALUE;
if (slope == -1) PlotPoint(i,MARda,MARdb,MAR);
}
return(0);
}
//
//
//
//
//
if (BarsToCalculate>0) limit = MathMin(limit,BarsToCalculate);
if (slope[limit]==-1) ClearPoint(limit,MARda,MARdb);
for(int pos=limit; pos>=0; pos--)
{
MA[pos]=iMA(NULL, 0, Length, 0, Method, Price, pos);
if (MA[pos]>MA[pos+1]+MaRo || MA[pos]MAR[pos+1]+MaRo || MA[pos]MAR[pos+1] && MovAle[pos+1]==1.) || (MA[pos]<MAR[pos+1] && MovAle[pos+1]==-1.))
MAR[pos]=MA[pos];
else MAR[pos]=MAR[pos+1];
if (MAR[pos]<MAR[pos+1])
MovAle[pos]=-1.;
else
if (MAR[pos]>MAR[pos+1])
MovAle[pos]=1.;
else MovAle[pos]=MovAle[pos+1];
MARda[pos] = EMPTY_VALUE;
MARdb[pos] = EMPTY_VALUE;
slope[pos] = slope[pos+1];
if (MAR[pos]>MAR[pos+1]) slope[pos] = 1;
if (MAR[pos]<MAR[pos+1]) slope[pos] = -1;
if (slope[pos]==-1) PlotPoint(pos,MARda,MARdb,MAR);
}
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//
//
//
//
//
void ClearPoint(int i,double& first[],double& second[])
{
if ((second != EMPTY_VALUE) && (second != EMPTY_VALUE))
second = EMPTY_VALUE;
else
if ((first != EMPTY_VALUE) && (first != EMPTY_VALUE) && (first == EMPTY_VALUE))
first = EMPTY_VALUE;
}
//
//
//
//
//
void PlotPoint(int i,double& first[],double& second[],double& from[])
{
if (first == EMPTY_VALUE)
{
if (first == EMPTY_VALUE) {
first = from;
first = from;
second = EMPTY_VALUE;
}
else {
second = from;
second = from;
first = EMPTY_VALUE;
}
}
else
{
first = from;
second = EMPTY_VALUE;
}
}[/CODE]
and this is my indicator code:
[CODE]//+------------------------------------------------------------------+
//| MAR.mq4 |
//| Copyright © 2014, Gehtsoft USA LLC |
//| http://fxcodebase.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Gehtsoft USA LLC"
#property link "http://fxcodebase.com"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
extern int timeFrame = 0;
extern int Length = 8;
extern int Method = 0;
extern double Round = 2;
extern int Price = 0;
extern int BarsToCalculate = 0;
extern color WickUpColor = DarkGreen;
extern color WickDnColor = FireBrick;
extern color BodyUpColor = LimeGreen;
extern color BodyDnColor = Orange;
extern int WickWidth = 1;
extern int BodyWidth = 2;
double UpBuffer[];
double DnBuffer[];
double UpbBuffer[];
double DnbBuffer[];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickUpColor);
SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickDnColor);
SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyUpColor);
SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyDnColor);
IndicatorShortName("Rounded ma MTF candles ("+timeFrame+","+Length+","+Round+")");
Length = MathMax(Length,1);
switch(timeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("Rounded ma MTF candles ("+TimeFrameStr+")");
return(0);
}
//----
//+------------------------------------------------------------------+
//| MTF function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(MathMax(Bars-counted_bars,3*timeFrame/Period()),Bars-1);
for(int i=limit;i>=0;i--)
{
int y = iBarShift(NULL,timeFrame,Time);
int slope=iCustom(Symbol(),timeFrame,"Rounded ma MTF",Length,Method,Round,Price,BarsToCalculate,5,y);
if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }
if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }
}
return(0);
}
//+------------------------------------------------------------------+
Salut,
J'essaie de créer l'indicateur de bougies MTF ma arrondi avec la fonction icustom. Sans succès, pas d'erreur du tout mais l'indicateur joint ne montre rien. Merci de m'aider. Merci.
Le code source de l'indicateur est le suivant :
//| MAR.mq4 |
//| Copyright © 2014, Gehtsoft USA LLC |
//| http://fxcodebase.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Gehtsoft USA LLC"
#property link "http://fxcodebase.com"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
extern int timeFrame = 0; // Time frame to use
extern int Length=8;
extern int Method=0; // 0 - SMA
// 1 - EMA
// 2 - SMMA
// 3 - LWMA
extern double Round=2;
extern int Price=0; // Applied price
// 0 - Close
// 1 - Open
// 2 - High
// 3 - Low
// 4 - Median
// 5 - Typical
// 6 - Weighted
extern int BarsToCalculate = 0;
double MAR[],MARda[],MARdb[],slope[] ;
double MA[], MovAle[];
double MaRo;
string indicatorFileName;
bool returnBars;
int init()
{
IndicatorShortName("Rounded ma MTF");
IndicatorBuffers(6);
SetIndexBuffer(0,MAR);
SetIndexBuffer(1,MARda);
SetIndexBuffer(2,MARdb);
SetIndexBuffer(3,MA);
SetIndexBuffer(4,MovAle);
SetIndexBuffer(5,slope);
indicatorFileName = WindowExpertName();
returnBars = timeFrame==-999; if (returnBars) return(0);
if (timeFrame==0) timeFrame= Period();
MaRo=Round*Point;
return(0);
}
int deinit()
{
return(0);
}
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { MAR[0] = MathMin(limit+1,Bars-1); return(0); }
if (timeFrame!=Period())
{
limit = (int)MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,-999,0,0)*timeFrame/Period()));
if (BarsToCalculate>0) limit = MathMin(limit,BarsToCalculate);
if (slope[limit]==-1) ClearPoint(limit,MARda,MARdb);
for (int i=limit; i>=0; i--)
{
int y = iBarShift(NULL,timeFrame,Time);
MAR = iCustom(NULL,timeFrame,indicatorFileName,0,Length,Method,Round,Price,BarsToCalculate,0,y);
slope = iCustom(NULL,timeFrame,indicatorFileName,0,Length,Method,Round,Price,BarsToCalculate,5,y);
MARda = EMPTY_VALUE;
MARdb = EMPTY_VALUE;
if (slope == -1) PlotPoint(i,MARda,MARdb,MAR);
}
return(0);
}
//
//
//
//
//
if (BarsToCalculate>0) limit = MathMin(limit,BarsToCalculate);
if (slope[limit]==-1) ClearPoint(limit,MARda,MARdb);
for(int pos=limit; pos>=0; pos--)
{
MA[pos]=iMA(NULL, 0, Length, 0, Method, Price, pos);
if (MA[pos]>MA[pos+1]+MaRo || MA[pos]MAR[pos+1]+MaRo || MA[pos]MAR[pos+1] && MovAle[pos+1]==1.) || (MA[pos]<MAR[pos+1] && MovAle[pos+1]==-1.))
MAR[pos]=MA[pos];
else MAR[pos]=MAR[pos+1];
if (MAR[pos]<MAR[pos+1])
MovAle[pos]=-1.;
else
if (MAR[pos]>MAR[pos+1])
MovAle[pos]=1.;
else MovAle[pos]=MovAle[pos+1];
MARda[pos] = EMPTY_VALUE;
MARdb[pos] = EMPTY_VALUE;
slope[pos] = slope[pos+1];
if (MAR[pos]>MAR[pos+1]) slope[pos] = 1;
if (MAR[pos]<MAR[pos+1]) slope[pos] = -1;
if (slope[pos]==-1) PlotPoint(pos,MARda,MARdb,MAR);
}
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//
//
//
//
//
void ClearPoint(int i,double& first[],double& second[])
{
if ((second != EMPTY_VALUE) && (second != EMPTY_VALUE))
second = EMPTY_VALUE;
else
if ((first != EMPTY_VALUE) && (first != EMPTY_VALUE) && (first == EMPTY_VALUE))
first = EMPTY_VALUE;
}
//
//
//
//
//
void PlotPoint(int i,double& first[],double& second[],double& from[])
{
if (first == EMPTY_VALUE)
{
if (first == EMPTY_VALUE) {
first = from;
first = from;
second = EMPTY_VALUE;
}
else {
second = from;
second = from;
first = EMPTY_VALUE;
}
}
else
{
first = from;
second = EMPTY_VALUE;
}
}[/CODE]
and this is my indicator code:
[CODE]//+------------------------------------------------------------------+
//| MAR.mq4 |
//| Copyright © 2014, Gehtsoft USA LLC |
//| http://fxcodebase.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Gehtsoft USA LLC"
#property link "http://fxcodebase.com"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
extern int timeFrame = 0;
extern int Length = 8;
extern int Method = 0;
extern double Round = 2;
extern int Price = 0;
extern int BarsToCalculate = 0;
extern color WickUpColor = DarkGreen;
extern color WickDnColor = FireBrick;
extern color BodyUpColor = LimeGreen;
extern color BodyDnColor = Orange;
extern int WickWidth = 1;
extern int BodyWidth = 2;
double UpBuffer[];
double DnBuffer[];
double UpbBuffer[];
double DnbBuffer[];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickUpColor);
SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickDnColor);
SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyUpColor);
SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyDnColor);
IndicatorShortName("Rounded ma MTF candles ("+timeFrame+","+Length+","+Round+")");
Length = MathMax(Length,1);
switch(timeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("Rounded ma MTF candles ("+TimeFrameStr+")");
return(0);
}
//----
//+------------------------------------------------------------------+
//| MTF function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(MathMax(Bars-counted_bars,3*timeFrame/Period()),Bars-1);
for(int i=limit;i>=0;i--)
{
int y = iBarShift(NULL,timeFrame,Time);
int slope=iCustom(Symbol(),timeFrame,"Rounded ma MTF",Length,Method,Round,Price,BarsToCalculate,5,y);
if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }
if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }
}
return(0);
}
//+------------------------------------------------------------------+
Remplacer
slope=iCustom(Symbol(),timeFrame, "Rounded ma MTF",Length,Method,Round,Price,BarsToCalculate,5,y) ;
avec
slope=iCustom(Symbol(),timeFrame, "Rounded ma MTF",0,Length,Method,Round,Price,BarsToCalculate,5,y) ;
Voici ce que j'obtiens lorsque je place zup 150 avec l'indicateur gann sq9 mxi nmc sur le même graphique :
grand merci, peut être mon erreur, j'ai aussi obtenu la version de Poruchik,
sincèrement
grand merci, peut être mon erreur, j'ai également obtenu la version de Poruchik, sincèrement
Faites-nous savoir ce qui s'est passé
Peut-être juste un problème d'une construction spécifique metatrader (J'utilise la construction 788 actuellement)
Comme vous le savez, ZigZag peut se recalculer et le fera.
L'utilisation d'alertes (popups) comme signal sur un indicateur de recalcul est une chose très dangereuse à faire et c'est la raison pour laquelle il y a longtemps que j'ai décidé de ne pas les faire - en ce qui me concerne, il est préférable de ne pas faire d'alertes sur un tel indicateur, puis d'avoir à expliquer plus tard, à des gens qui ne sont pas familiers avec les raisons pour lesquelles certaines alertes sont ajoutées, pourquoi ils sont donnés des signaux sur un indicateur de recalcul.
SalutationsMerci Monsieur. Nous apprécions votre réponse.