Aiuto per la codifica - pagina 476

 

Salve,

Ho bisogno di un indicatore solo per mettere un'etichetta di testo fissa su un grafico.

Puoi mostrarmi un modello.

Grazie.

Jo

 
Jovager:
Ciao,

Ho bisogno di un indicatore solo per mettere un'etichetta di testo fissa su un grafico.

Potete mostrarmi un modello.

Grazie.

Jo

Jo

Hai controllato questo thread: https: //www.mql5.com/en/forum/179041

 
mladen:
Jo Hai controllato questo thread: https: //www.mql5.com/en/forum/179041

Mladen,

Nel thread, ho trovato un post che porta a "TRO_MyNotes" che è esattamente quello che mi serve.

Ancora una volta, Mladen, molte grazie per il tuo aiuto.

Jo

 

Mi chiedevo se qualcuno può aiutarmi con questo (post #4739)?

Grazie.

 
godrich:
Non so se quello che sto chiedendo è possibile ma, per quanto riguarda l'indicatore allegato, è possibile rendere "vera" la linea gialla che appare nel canale?

Con questo voglio dire che la linea gialla non si appiattisce/ricalcola.

Grazie.

godrich

Non può

È un filtro Hodrick/Prescott - la sua natura è quella di ricalcolare. Sono stati fatti dei tentativi per farlo (farlo finire a punta, per esempio), ma i risultati sono tutt'altro che simili all'originale

 

Ciao,

sto cercando di creare l'indicatore delle candele MTF arrotondate ma con la funzione icustom. Senza successo, nessun errore, ma l'indicatore allegato non mostra nulla. Per favore aiutatemi. Grazie.

Il codice sorgente dell'indicatore è questo:

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

//| 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:
Ciao,

Sto cercando di creare l'indicatore delle candele MTF arrotondate ma con la funzione icustom. Senza successo, nessun errore, ma l'indicatore allegato non mostra nulla. Per favore aiutatemi. Grazie.

Il codice dell'indicatore sorgente è questo:

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

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

}

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

Sostituire

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

con

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

 
mladen:
Questo è quello che ottengo quando metto zup 150 con l'indicatore gann sq9 mxi nmc sullo stesso grafico:

grande grazie, può essere il mio errore, ho anche ottenuto la versione da Poruchik,

sinceramente

 
zigflip:
grande grazie, può essere il mio errore, ho anche ottenuto la versione da Poruchik, sinceramente

Facci sapere cosa è successo

Forse solo un problema di una specifica build di metatrader (io uso la build 788 attualmente)

 
mladen:
Come sai, ZigZag può e vuole ricalcolare

Usare gli avvisi (popup) come segnale su un indicatore di ricalcolo è una cosa molto pericolosa da fare e questo è il motivo per cui molto tempo fa ho deciso di non farli - per quanto mi riguarda è meglio non fare avvisi su tale indicatore, poi dover spiegare in seguito, a persone che non hanno familiarità con le ragioni per cui alcuni avvisi vengono aggiunti, perché vengono dati segnali su un indicatore di ricalcolo

saluti

Grazie signore. Apprezzo la sua risposta