Coding help - page 329

 

Try attach this to daily chart , please tell me if you are able to do an EA based on that indicator

 
mj023:
Try attach this to daily chart , please tell me if you are able to do an EA based on that indicator

I see

That is a label based indicator without a possibility to have a signal (to know the previous and the current value). Meaning : no signal can be used and EA can not identify the signals uniquely. Sorry, no EA possibility without redundancy

 

Hi,

what's wrong with this code? I'm trying to get a mtf indicator using icustom functions from the source indicator. I can't see when i'm wrong. Please can tell me where the errors are?

I know this indicator it has already been coded for new builds but that mtf version is not suitable for non standard timeframes and i need them.

source indicator:

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

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

what's wrong with this code? I'm trying to get a mtf indicator using icustom functions from the source indicator. I can't see when i'm wrong. Please can tell me where the errors are?

I know this indicator it has already been coded for new builds but that mtf version is not suitable for non standard timeframes and i need them.

source indicator:

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

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

}

}

From the code it should work

Since that is a partial code, can you explain what exactly is happening that is different than you expect it?

 
thefxpros:
Hi,

what's wrong with this code? I'm trying to get a mtf indicator using icustom functions from the source indicator. I can't see when i'm wrong. Please can tell me where the errors are?

I know this indicator it has already been coded for new builds but that mtf version is not suitable for non standard timeframes and i need them.

source indicator:

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

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

}

}

i just solved.

 

ehm

please i need another help.

source indicator: step chart age 2 MTF

my indicator : step chart age 2 MTF candles

I think i'm doing all fine but my indicator doesn't displays anything when plotted on chart. I guess it depends from source indicator trend buffer but i don't know how to continue.

step_chart_age_2_mtf_candles.mq4

step_chart_age_2_mtf.mq4

 
thefxpros:
ehm

please i need another help.

source indicator: step chart age 2 MTF

my indicator : step chart age 2 MTF candles

I think i'm doing all fine but my indicator doesn't displays anything when plotted on chart. I guess it depends from source indicator trend buffer but i don't know how to continue.

step_chart_age_2_mtf_candles.mq4

step_chart_age_2_mtf.mq4

thefxpros

Here you go : step_chart_age_2_mtf_candles_1.mq4

 
mladen:
thefxpros Here you go : step_chart_age_2_mtf_candles_1.mq4

thanks,

but there's still something wrong

Files:
cattura_1.jpg  90 kb
 
thefxpros:
thanks,

but there's still something wrong

You are having a wrong check for the trend condition

It should be trend > 0 and trend < 0 and not trend == 1 and trend == -1

Files:
 

You could try this.... Hope it HELPS