Ajuda na codificação - página 329

 

Tente anexar isto ao gráfico diário , por favor me diga se você é capaz de fazer um EA baseado nesse indicador

 
mj023:
Tente anexar isto ao gráfico diário , por favor me diga se você é capaz de fazer um EA baseado nesse indicador

Eu vejo

Trata-se de um indicador baseado em etiqueta sem possibilidade de ter um sinal (para conhecer o valor anterior e o valor atual). Significado: nenhum sinal pode ser usado e a EA não pode identificar os sinais de forma única. Desculpe, nenhuma possibilidade de EA sem redundância.

 

Hi,

o que há de errado com este código? Estou tentando obter um indicador mtf usando funções icustom a partir do indicador de fonte. Eu não consigo ver quando estou errado. Por favor, pode me dizer onde estão os erros?

Eu sei que este indicador já foi codificado para novas construções, mas essa versão mtf não é adequada para períodos de tempo não padrão e eu preciso deles.

indicador de fonte:

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

//| Macd_with_EMA_BDv09_12_22.mq4 |

//| Jeff |

//| wolfboy@att.net |

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

#property copyright "Jeff"

#property link "wolfboy@att.net"

#property indicator_separate_window

#property indicator_buffers 7

#property indicator_color1 LimeGreen

#property indicator_color2 LimeGreen

#property indicator_color3 Plum

#property indicator_color4 Plum

#property indicator_color5 CLR_NONE

#property indicator_color6 Black

#property indicator_color7 CLR_NONE

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

#property indicator_width4 2

#property indicator_width5 1

#property indicator_width6 1

#property indicator_width7 2

#property indicator_level1 0.0

#property indicator_levelcolor DimGray

#property indicator_levelstyle 0

//---- indicator parameters

extern int Nbars = 500;

extern int FastEMA = 10;

extern int SlowEMA = 20;

extern int SignalEMA = 1;

extern int MAofSignalPer = 7;

//---- indicator buffers

double green_buffer[];

double DarkGreen_buffer[];

double red_buffer[];

double Maroon_buffer[];

double MacdBuffer[];

double SignalBuffer[];

double MAofSignalBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

IndicatorBuffers(7);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(4,DRAW_NONE);

SetIndexStyle(5,DRAW_LINE,STYLE_SOLID);

SetIndexStyle(6,DRAW_LINE,STYLE_DOT);

SetIndexDrawBegin(1,SignalEMA);

IndicatorDigits(Digits+1);

//---- indicator buffers mapping

SetIndexBuffer(0,green_buffer);

SetIndexBuffer(1,DarkGreen_buffer);

SetIndexBuffer(2,red_buffer);

SetIndexBuffer(3,Maroon_buffer);

SetIndexBuffer(4,MacdBuffer);

SetIndexBuffer(5,SignalBuffer);

SetIndexBuffer(6,MAofSignalBuffer);

//---- name for DataWindow and indicator subwindow label

IndicatorShortName("MACD in color ("+FastEMA+", "+SlowEMA+", "+SignalEMA+", "+MAofSignalPer+")");

SetIndexLabel(4,"MACD in color");

SetIndexLabel(5,"Signal");

SetIndexLabel(6,"MAofSignal");

//---- initialization done

return(0);

}

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

//| Moving Averages Convergence/Divergence |

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

int start()

{

int limit, i;

double MACD;

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limit=Nbars-counted_bars;

//---- macd

for(i=0; i<limit; i++)

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-

iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- signal line

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalEMA,0,MODE_EMA,i);

//---- MA of signal

for(i=0; i<limit; i++)

MAofSignalBuffer=iMAOnArray(SignalBuffer,Bars,MAofSignalPer,0,MODE_EMA,i);

for (i = Bars - Max (counted_bars-1, 1); i>=0; i--)

{

MACD=MacdBuffer;

if(MACD>0)

{

if (MACD>MacdBuffer)

{

green_buffer = MACD;

DarkGreen_buffer = 0;

}

else

{

green_buffer = 0;

DarkGreen_buffer = MACD;

}

}

else

{

if (MACD<MacdBuffer)

{

red_buffer = 0;

Maroon_buffer = MACD;

}

else

{

red_buffer = MACD;

Maroon_buffer = 0;

}

}

}

//---- done

return(0);

}

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

int Max (int val1, int val2) {

if (val1 > val2) return(val1);

return(val2);

}

[/CODE]

and this is mine:

[CODE]//+------------------------------------------------------------------+

//| Macd_with_EMA_BDv09_12_22.mq4 |

//| Jeff |

//| wolfboy@att.net |

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

#property copyright "Jeff"

#property link "wolfboy@att.net"

#property indicator_separate_window

#property indicator_buffers 7

#property indicator_color1 LimeGreen

#property indicator_color2 LimeGreen

#property indicator_color3 Plum

#property indicator_color4 Plum

#property indicator_color5 CLR_NONE

#property indicator_color6 Black

#property indicator_color7 CLR_NONE

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

#property indicator_width4 2

#property indicator_width5 1

#property indicator_width6 1

#property indicator_width7 2

#property indicator_level1 0.0

#property indicator_levelcolor DimGray

#property indicator_levelstyle 0

//---- indicator parameters

extern int TimeFrame = 0;

extern int Nbars = 500;

extern int FastEMA = 10;

extern int SlowEMA = 20;

extern int SignalEMA = 1;

extern int MAofSignalPer = 7;

//---- indicator buffers

double green_buffer[];

double DarkGreen_buffer[];

double red_buffer[];

double Maroon_buffer[];

double MacdBuffer[];

double SignalBuffer[];

double MAofSignalBuffer[];

string IndicatorFileName;

string short_name;

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

//| |

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

//

//

//

//

//

int init()

{

//---- indicator buffers mapping

SetIndexBuffer(0,green_buffer);

SetIndexBuffer(1,DarkGreen_buffer);

SetIndexBuffer(2,red_buffer);

SetIndexBuffer(3,Maroon_buffer);

SetIndexBuffer(4,MacdBuffer);

SetIndexBuffer(5,SignalBuffer);

SetIndexBuffer(6,MAofSignalBuffer);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(4,DRAW_NONE);

SetIndexStyle(5,DRAW_LINE,STYLE_SOLID);

SetIndexStyle(6,DRAW_LINE,STYLE_DOT);

SetIndexDrawBegin(1,SignalEMA);

IndicatorDigits(Digits+1);

switch(TimeFrame)

{

case 1: string TimeFrameStr = "M1" ; break;

case 5 : TimeFrameStr = "M5" ; break;

case 15 : TimeFrameStr = "M15"; break;

case 30 : TimeFrameStr = "M30"; break;

case 60 : TimeFrameStr = "H1" ; break;

case 240 : TimeFrameStr = "H4" ; break;

case 1440 : TimeFrameStr = "D1" ; break;

case 10080 : TimeFrameStr = "W1" ; break;

case 43200 : TimeFrameStr = "MN1"; break;

default : TimeFrameStr = "TF0";

}

TimeFrame = MathMax(TimeFrame,Period());

IndicatorFileName = WindowExpertName();

short_name = ("MACD in color MTF ("+TimeFrameStr+")") ;

IndicatorShortName(short_name);

return(0);

}

int deinit()

{

return(0);

}

int start()

{

int counted_bars = IndicatorCounted();

int limit, i;

if(counted_bars < 0) return(-1);

if(counted_bars > 0) counted_bars--;

limit = Nbars - counted_bars;

if (TimeFrame != Period())

{

limit = MathMax(limit,TimeFrame/Period());

for(i = 0; i < limit; i++)

{

int y = iBarShift(NULL,TimeFrame,Time);

green_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,0,y);

DarkGreen_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,1,y);

red_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,2,y);

Maroon_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,3,y);

MacdBuffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,4,y);

SignalBuffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,5,y);

MAofSignalBuffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,6,y);

}

return(0);

}

}
 
thefxpros:
Hi,

o que há de errado com este código? Estou tentando obter um indicador mtf usando funções icustom a partir do indicador de fonte. Eu não consigo ver quando estou errado. Por favor, pode me dizer onde estão os erros?

Eu sei que este indicador já foi codificado para novas construções, mas essa versão mtf não é adequada para períodos de tempo não padrão e eu preciso deles.

indicador de fonte:

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

//| Macd_with_EMA_BDv09_12_22.mq4 |

//| Jeff |

//| wolfboy@att.net |

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

#property copyright "Jeff"

#property link "wolfboy@att.net"

#property indicator_separate_window

#property indicator_buffers 7

#property indicator_color1 LimeGreen

#property indicator_color2 LimeGreen

#property indicator_color3 Plum

#property indicator_color4 Plum

#property indicator_color5 CLR_NONE

#property indicator_color6 Black

#property indicator_color7 CLR_NONE

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

#property indicator_width4 2

#property indicator_width5 1

#property indicator_width6 1

#property indicator_width7 2

#property indicator_level1 0.0

#property indicator_levelcolor DimGray

#property indicator_levelstyle 0

//---- indicator parameters

extern int Nbars = 500;

extern int FastEMA = 10;

extern int SlowEMA = 20;

extern int SignalEMA = 1;

extern int MAofSignalPer = 7;

//---- indicator buffers

double green_buffer[];

double DarkGreen_buffer[];

double red_buffer[];

double Maroon_buffer[];

double MacdBuffer[];

double SignalBuffer[];

double MAofSignalBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

IndicatorBuffers(7);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(4,DRAW_NONE);

SetIndexStyle(5,DRAW_LINE,STYLE_SOLID);

SetIndexStyle(6,DRAW_LINE,STYLE_DOT);

SetIndexDrawBegin(1,SignalEMA);

IndicatorDigits(Digits+1);

//---- indicator buffers mapping

SetIndexBuffer(0,green_buffer);

SetIndexBuffer(1,DarkGreen_buffer);

SetIndexBuffer(2,red_buffer);

SetIndexBuffer(3,Maroon_buffer);

SetIndexBuffer(4,MacdBuffer);

SetIndexBuffer(5,SignalBuffer);

SetIndexBuffer(6,MAofSignalBuffer);

//---- name for DataWindow and indicator subwindow label

IndicatorShortName("MACD in color ("+FastEMA+", "+SlowEMA+", "+SignalEMA+", "+MAofSignalPer+")");

SetIndexLabel(4,"MACD in color");

SetIndexLabel(5,"Signal");

SetIndexLabel(6,"MAofSignal");

//---- initialization done

return(0);

}

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

//| Moving Averages Convergence/Divergence |

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

int start()

{

int limit, i;

double MACD;

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limit=Nbars-counted_bars;

//---- macd

for(i=0; i<limit; i++)

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-

iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- signal line

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalEMA,0,MODE_EMA,i);

//---- MA of signal

for(i=0; i<limit; i++)

MAofSignalBuffer=iMAOnArray(SignalBuffer,Bars,MAofSignalPer,0,MODE_EMA,i);

for (i = Bars - Max (counted_bars-1, 1); i>=0; i--)

{

MACD=MacdBuffer;

if(MACD>0)

{

if (MACD>MacdBuffer)

{

green_buffer = MACD;

DarkGreen_buffer = 0;

}

else

{

green_buffer = 0;

DarkGreen_buffer = MACD;

}

}

else

{

if (MACD<MacdBuffer)

{

red_buffer = 0;

Maroon_buffer = MACD;

}

else

{

red_buffer = MACD;

Maroon_buffer = 0;

}

}

}

//---- done

return(0);

}

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

int Max (int val1, int val2) {

if (val1 > val2) return(val1);

return(val2);

}

[/CODE]

and this is mine:

[CODE]//+------------------------------------------------------------------+

//| Macd_with_EMA_BDv09_12_22.mq4 |

//| Jeff |

//| wolfboy@att.net |

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

#property copyright "Jeff"

#property link "wolfboy@att.net"

#property indicator_separate_window

#property indicator_buffers 7

#property indicator_color1 LimeGreen

#property indicator_color2 LimeGreen

#property indicator_color3 Plum

#property indicator_color4 Plum

#property indicator_color5 CLR_NONE

#property indicator_color6 Black

#property indicator_color7 CLR_NONE

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

#property indicator_width4 2

#property indicator_width5 1

#property indicator_width6 1

#property indicator_width7 2

#property indicator_level1 0.0

#property indicator_levelcolor DimGray

#property indicator_levelstyle 0

//---- indicator parameters

extern int TimeFrame = 0;

extern int Nbars = 500;

extern int FastEMA = 10;

extern int SlowEMA = 20;

extern int SignalEMA = 1;

extern int MAofSignalPer = 7;

//---- indicator buffers

double green_buffer[];

double DarkGreen_buffer[];

double red_buffer[];

double Maroon_buffer[];

double MacdBuffer[];

double SignalBuffer[];

double MAofSignalBuffer[];

string IndicatorFileName;

string short_name;

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

//| |

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

//

//

//

//

//

int init()

{

//---- indicator buffers mapping

SetIndexBuffer(0,green_buffer);

SetIndexBuffer(1,DarkGreen_buffer);

SetIndexBuffer(2,red_buffer);

SetIndexBuffer(3,Maroon_buffer);

SetIndexBuffer(4,MacdBuffer);

SetIndexBuffer(5,SignalBuffer);

SetIndexBuffer(6,MAofSignalBuffer);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(4,DRAW_NONE);

SetIndexStyle(5,DRAW_LINE,STYLE_SOLID);

SetIndexStyle(6,DRAW_LINE,STYLE_DOT);

SetIndexDrawBegin(1,SignalEMA);

IndicatorDigits(Digits+1);

switch(TimeFrame)

{

case 1: string TimeFrameStr = "M1" ; break;

case 5 : TimeFrameStr = "M5" ; break;

case 15 : TimeFrameStr = "M15"; break;

case 30 : TimeFrameStr = "M30"; break;

case 60 : TimeFrameStr = "H1" ; break;

case 240 : TimeFrameStr = "H4" ; break;

case 1440 : TimeFrameStr = "D1" ; break;

case 10080 : TimeFrameStr = "W1" ; break;

case 43200 : TimeFrameStr = "MN1"; break;

default : TimeFrameStr = "TF0";

}

TimeFrame = MathMax(TimeFrame,Period());

IndicatorFileName = WindowExpertName();

short_name = ("MACD in color MTF ("+TimeFrameStr+")") ;

IndicatorShortName(short_name);

return(0);

}

int deinit()

{

return(0);

}

int start()

{

int counted_bars = IndicatorCounted();

int limit, i;

if(counted_bars < 0) return(-1);

if(counted_bars > 0) counted_bars--;

limit = Nbars - counted_bars;

if (TimeFrame != Period())

{

limit = MathMax(limit,TimeFrame/Period());

for(i = 0; i < limit; i++)

{

int y = iBarShift(NULL,TimeFrame,Time);

green_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,0,y);

DarkGreen_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,1,y);

red_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,2,y);

Maroon_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,3,y);

MacdBuffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,4,y);

SignalBuffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,5,y);

MAofSignalBuffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,6,y);

}

return(0);

}

}

A partir do código ele deve funcionar

Como esse é um código parcial, você pode explicar o que exatamente está acontecendo que é diferente do que você espera?

 
thefxpros:
Hi,

o que há de errado com este código? Estou tentando obter um indicador mtf usando funções icustom a partir do indicador de fonte. Eu não consigo ver quando estou errado. Por favor, pode me dizer onde estão os erros?

Eu sei que este indicador já foi codificado para novas construções, mas essa versão mtf não é adequada para períodos de tempo não padrão e eu preciso deles.

indicador de fonte:

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

//| Macd_with_EMA_BDv09_12_22.mq4 |

//| Jeff |

//| wolfboy@att.net |

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

#property copyright "Jeff"

#property link "wolfboy@att.net"

#property indicator_separate_window

#property indicator_buffers 7

#property indicator_color1 LimeGreen

#property indicator_color2 LimeGreen

#property indicator_color3 Plum

#property indicator_color4 Plum

#property indicator_color5 CLR_NONE

#property indicator_color6 Black

#property indicator_color7 CLR_NONE

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

#property indicator_width4 2

#property indicator_width5 1

#property indicator_width6 1

#property indicator_width7 2

#property indicator_level1 0.0

#property indicator_levelcolor DimGray

#property indicator_levelstyle 0

//---- indicator parameters

extern int Nbars = 500;

extern int FastEMA = 10;

extern int SlowEMA = 20;

extern int SignalEMA = 1;

extern int MAofSignalPer = 7;

//---- indicator buffers

double green_buffer[];

double DarkGreen_buffer[];

double red_buffer[];

double Maroon_buffer[];

double MacdBuffer[];

double SignalBuffer[];

double MAofSignalBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

IndicatorBuffers(7);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(4,DRAW_NONE);

SetIndexStyle(5,DRAW_LINE,STYLE_SOLID);

SetIndexStyle(6,DRAW_LINE,STYLE_DOT);

SetIndexDrawBegin(1,SignalEMA);

IndicatorDigits(Digits+1);

//---- indicator buffers mapping

SetIndexBuffer(0,green_buffer);

SetIndexBuffer(1,DarkGreen_buffer);

SetIndexBuffer(2,red_buffer);

SetIndexBuffer(3,Maroon_buffer);

SetIndexBuffer(4,MacdBuffer);

SetIndexBuffer(5,SignalBuffer);

SetIndexBuffer(6,MAofSignalBuffer);

//---- name for DataWindow and indicator subwindow label

IndicatorShortName("MACD in color ("+FastEMA+", "+SlowEMA+", "+SignalEMA+", "+MAofSignalPer+")");

SetIndexLabel(4,"MACD in color");

SetIndexLabel(5,"Signal");

SetIndexLabel(6,"MAofSignal");

//---- initialization done

return(0);

}

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

//| Moving Averages Convergence/Divergence |

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

int start()

{

int limit, i;

double MACD;

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limit=Nbars-counted_bars;

//---- macd

for(i=0; i<limit; i++)

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-

iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- signal line

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalEMA,0,MODE_EMA,i);

//---- MA of signal

for(i=0; i<limit; i++)

MAofSignalBuffer=iMAOnArray(SignalBuffer,Bars,MAofSignalPer,0,MODE_EMA,i);

for (i = Bars - Max (counted_bars-1, 1); i>=0; i--)

{

MACD=MacdBuffer;

if(MACD>0)

{

if (MACD>MacdBuffer)

{

green_buffer = MACD;

DarkGreen_buffer = 0;

}

else

{

green_buffer = 0;

DarkGreen_buffer = MACD;

}

}

else

{

if (MACD<MacdBuffer)

{

red_buffer = 0;

Maroon_buffer = MACD;

}

else

{

red_buffer = MACD;

Maroon_buffer = 0;

}

}

}

//---- done

return(0);

}

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

int Max (int val1, int val2) {

if (val1 > val2) return(val1);

return(val2);

}

[/CODE]

and this is mine:

[CODE]//+------------------------------------------------------------------+

//| Macd_with_EMA_BDv09_12_22.mq4 |

//| Jeff |

//| wolfboy@att.net |

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

#property copyright "Jeff"

#property link "wolfboy@att.net"

#property indicator_separate_window

#property indicator_buffers 7

#property indicator_color1 LimeGreen

#property indicator_color2 LimeGreen

#property indicator_color3 Plum

#property indicator_color4 Plum

#property indicator_color5 CLR_NONE

#property indicator_color6 Black

#property indicator_color7 CLR_NONE

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

#property indicator_width4 2

#property indicator_width5 1

#property indicator_width6 1

#property indicator_width7 2

#property indicator_level1 0.0

#property indicator_levelcolor DimGray

#property indicator_levelstyle 0

//---- indicator parameters

extern int TimeFrame = 0;

extern int Nbars = 500;

extern int FastEMA = 10;

extern int SlowEMA = 20;

extern int SignalEMA = 1;

extern int MAofSignalPer = 7;

//---- indicator buffers

double green_buffer[];

double DarkGreen_buffer[];

double red_buffer[];

double Maroon_buffer[];

double MacdBuffer[];

double SignalBuffer[];

double MAofSignalBuffer[];

string IndicatorFileName;

string short_name;

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

//| |

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

//

//

//

//

//

int init()

{

//---- indicator buffers mapping

SetIndexBuffer(0,green_buffer);

SetIndexBuffer(1,DarkGreen_buffer);

SetIndexBuffer(2,red_buffer);

SetIndexBuffer(3,Maroon_buffer);

SetIndexBuffer(4,MacdBuffer);

SetIndexBuffer(5,SignalBuffer);

SetIndexBuffer(6,MAofSignalBuffer);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID);

SetIndexStyle(4,DRAW_NONE);

SetIndexStyle(5,DRAW_LINE,STYLE_SOLID);

SetIndexStyle(6,DRAW_LINE,STYLE_DOT);

SetIndexDrawBegin(1,SignalEMA);

IndicatorDigits(Digits+1);

switch(TimeFrame)

{

case 1: string TimeFrameStr = "M1" ; break;

case 5 : TimeFrameStr = "M5" ; break;

case 15 : TimeFrameStr = "M15"; break;

case 30 : TimeFrameStr = "M30"; break;

case 60 : TimeFrameStr = "H1" ; break;

case 240 : TimeFrameStr = "H4" ; break;

case 1440 : TimeFrameStr = "D1" ; break;

case 10080 : TimeFrameStr = "W1" ; break;

case 43200 : TimeFrameStr = "MN1"; break;

default : TimeFrameStr = "TF0";

}

TimeFrame = MathMax(TimeFrame,Period());

IndicatorFileName = WindowExpertName();

short_name = ("MACD in color MTF ("+TimeFrameStr+")") ;

IndicatorShortName(short_name);

return(0);

}

int deinit()

{

return(0);

}

int start()

{

int counted_bars = IndicatorCounted();

int limit, i;

if(counted_bars < 0) return(-1);

if(counted_bars > 0) counted_bars--;

limit = Nbars - counted_bars;

if (TimeFrame != Period())

{

limit = MathMax(limit,TimeFrame/Period());

for(i = 0; i < limit; i++)

{

int y = iBarShift(NULL,TimeFrame,Time);

green_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,0,y);

DarkGreen_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,1,y);

red_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,2,y);

Maroon_buffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,3,y);

MacdBuffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,4,y);

SignalBuffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,5,y);

MAofSignalBuffer = iCustom(NULL,TimeFrame,"MACD in color",Nbars,FastEMA,SlowEMA,SignalEMA,MAofSignalPer,6,y);

}

return(0);

}

}

acabei de resolver.

 

ehm

por favor, eu preciso de outra ajuda.

indicador de fonte: gráfico de passos idade 2 MTF

meu indicador: step chart age 2 MTF candles

Acho que estou fazendo tudo bem, mas meu indicador não mostra nada quando plotado na tabela. Acho que depende do buffer de tendência do indicador de origem, mas não sei como continuar.

step_chart_age_2_mtf_candles.mq4

step_chart_age_2_mtf.mq4

 
thefxpros:
ehm

por favor, eu preciso de outra ajuda.

indicador de fonte: gráfico de passos idade 2 MTF

meu indicador: step chart age 2 MTF candles

Acho que estou fazendo tudo bem, mas meu indicador não mostra nada quando plotado na tabela. Acho que depende do buffer de tendência do indicador de origem, mas não sei como continuar.

step_chart_age_2_mtf_candles.mq4

step_chart_age_2_mtf.mq4

thefxpros

Aqui está : step_chart_age_2_mtf_candles_1.mq4

Arquivos anexados:
 
mladen:
thefxprosHaqui você vai : step_chart_age_2_mtf_candles_1.mq4

obrigado,

mas ainda há algo errado

Arquivos anexados:
cattura_1.jpg  90 kb
 
thefxpros:
obrigado,

mas ainda há algo errado

Você está tendo uma verificação errada para a condição de tendência

Deve ser tendência > 0 e tendência < 0 e não tendência == 1 e tendência == -1

Arquivos anexados:
 

Você poderia tentar esta.... Espero que ajude

Razão: