Ayuda a la codificación - página 329

 

Intente adjuntar esto al gráfico diario, por favor dígame si es capaz de hacer un EA basado en ese indicador

 
mj023:
Intente adjuntar esto al gráfico diario, por favor dígame si es capaz de hacer un EA basado en ese indicador

Veo

Es un indicador basado en etiquetas sin posibilidad de tener una señal (para conocer el valor anterior y el actual). Significado : no se puede utilizar ninguna señal y el EA no puede identificar las señales de forma única. Lo siento, no hay posibilidad de EA sin redundancia

 

Hola,

¿qué hay de malo en este código? Estoy tratando de obtener un indicador mtf utilizando funciones icustom del indicador de origen. No puedo ver cuando me equivoco. Por favor, ¿puede decirme dónde están los errores?

Sé que este indicador ya ha sido codificado para las nuevas construcciones, pero esa versión mtf no es adecuada para los marcos de tiempo no estándar y los necesito.

indicador de origen:

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

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

¿Qué hay de malo en este código? Estoy tratando de obtener un indicador mtf utilizando funciones icustom del indicador de origen. No puedo ver cuando me equivoco. Por favor, ¿puede decirme dónde están los errores?

Sé que este indicador ya ha sido codificado para las nuevas construcciones, pero esa versión mtf no es adecuada para los marcos de tiempo no estándar y los necesito.

indicador de origen:

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

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

}

}

Por el código debería funcionar

Dado que se trata de un código parcial, ¿puedes explicar qué es lo que ocurre exactamente que es diferente a lo que esperas?

 
thefxpros:
Hola,

¿Qué hay de malo en este código? Estoy tratando de obtener un indicador mtf utilizando funciones icustom del indicador de origen. No puedo ver cuando me equivoco. Por favor, ¿puede decirme dónde están los errores?

Sé que este indicador ya ha sido codificado para las nuevas construcciones, pero esa versión mtf no es adecuada para los marcos de tiempo no estándar y los necesito.

indicador de origen:

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

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

}

}

Acabo de resolver.

 

ehm

por favor necesito otra ayuda.

indicador de origen: gráfico de pasos edad 2 MTF

mi indicador : step chart age 2 MTF candles

Creo que estoy haciendo todo bien pero mi indicador no muestra nada cuando se traza en el gráfico. Supongo que depende del búfer de tendencia del indicador de origen, pero no sé cómo continuar.

step_chart_age_2_mtf_candles.mq4

step_chart_age_2_mtf.mq4

 
thefxpros:
ehm

por favor necesito otra ayuda.

indicador de origen: gráfico de pasos edad 2 MTF

mi indicador : step chart age 2 MTF candles

Creo que estoy haciendo todo bien pero mi indicador no muestra nada cuando se traza en el gráfico. Supongo que depende del búfer de tendencia del indicador de origen, pero no sé cómo continuar.

paso_gráfico_edad_2_mtf_velas.mq4

tabla_de_pasos_edad_2_mtf.mq4

thefxpros

Aquí tienes : step_chart_age_2_mtf_candles_1.mq4

Archivos adjuntos:
 
mladen:
thefxpros Aquí tienes : step_chart_age_2_mtf_candles_1.mq4

gracias,

pero todavía hay algo mal

Archivos adjuntos:
cattura_1.jpg  90 kb
 
thefxpros:
Gracias,

pero todavía hay algo que no funciona

Tienes una comprobación errónea de la condición de tendencia

Debería ser tendencia > 0 y tendencia < 0 y no tendencia == 1 y tendencia == -1

Archivos adjuntos:
 

Puedes probar con esto.... Espero que te ayude

Razón de la queja: