Ajuda na codificação - página 476

 

Olá,

Preciso apenas de um indicador para colocar uma etiqueta de texto fixo em um gráfico.

Você pode me mostrar um modelo.

Obrigado.

Jo

 
Jovager:
Olá,

Preciso apenas de um indicador para colocar uma etiqueta de texto fixo em um gráfico.

Você pode me mostrar um modelo.

Obrigado.

Jo

Jo

Você verificou esta linha : https://www.mql5.com/en/forum/179041

 
mladen:
JoDid you check this thread : https://www.mql5.com/en/forum/179041

Mladen,

Na linha, encontrei um post que traz para "TRO_MyNotes" que é exatamente o que eu preciso.

Mais uma vez, Mladen, muito obrigado por sua ajuda.

Jo

 

Só me pergunto se alguém pode ajudar com este (post #4739) ?

Obrigado.

 
godrich:
Não tenho certeza se o que estou perguntando é possível, mas, em relação ao indicador anexo, é possível tornar "verdadeira" a linha amarela que aparece no canal ?

Com isto quero dizer que a linha amarela não vai suavizar/recalcular.

Obrigado.

godrich

Não pode

É um filtro Hodrick/Prescott - sua natureza é recalcular. Foram feitas tentativas para fazer isso (fazer com que termine apontado, por exemplo), mas os resultados são tudo menos parecidos com o original

 

Hi,

Estou tentando criar o indicador de velas arredondadas ma MTF com função icustom. Sem sucesso, sem nenhum erro, mas o indicador anexado não mostra nada. Por favor, ajude. Obrigado.

O código indicador de fonte é este:

//+------------------------------------------------------------------+

//| 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);

}

//+------------------------------------------------------------------+

 
thefxpros:
Hi,

Estou tentando criar o indicador de velas arredondadas ma MTF com função icustom. Sem sucesso, sem nenhum erro, mas o indicador anexado não mostra nada. Por favor, ajude. Obrigado.

O código indicador de fonte é este:

//+------------------------------------------------------------------+

//| 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);

}

//+------------------------------------------------------------------+

Substitua

slope=iCustom(Symbol(),timeFrame, "Rounded ma MTF",Length,Method,Round,Price,BarsToCalculate,5,y);

com

slope=iCustom(Symbol(),timeFrame, "Rounded ma MTF",0,Length,Method,Round,Price,BarsToCalculate,5,y);

 
mladen:
Isto é o que eu recebo quando coloco zup 150 com o indicador gann sq9 mxi nmc no mesmo gráfico :

muito obrigado, pode ser meu erro, também recebi uma versão da Poruchik,

sinceramente

 
zigflip:
muito obrigado, pode ser meu erro, também recebi uma versão da Poruchik, sinceramente

Conte-nos o que aconteceu

Talvez apenas um problema de uma construção metatrader específica (eu uso atualmente o build 788)

 
mladen:
Como você sabe, o ZigZag pode e irá pintar de novo

Usar alertas (popups) como sinal em um indicador de repintura é uma coisa muito perigosa de se fazer e essa é a razão pela qual há muito tempo eu decidi não fazê-los - para mim é melhor não fazer alertas em tal indicador, então ter que explicar mais tarde, às pessoas que não estão familiarizadas com as razões pelas quais alguns alertas são acrescentados, por que eles são dados sinais em um indicador recalculando

cumprimentos

Obrigado, senhor. Agradeço sua resposta.