Ayuda a la codificación - página 110

 

Hola,

necesito dos indicadores, uno es wpr(Williams' Percent Range) y su ma (wpr con ma), el otro es cmo (chande momentum osc.)

y su ma (cmo con ma),

¿alguien me ayuda?

Gracias

 
anonimm:
Hola,

necesito dos indicadores, uno es wpr(Williams' Percent Range) y su ma (wpr con ma), el otro es cmo (chande momentum osc.)

y su ma (cmo con ma),

¿alguien me ayuda?

Gracias

anonimm

Aquí hay un WPR con un promedio (ma)

Archivos adjuntos:
wpr_ma.mq4  2 kb
 
mladen:
anonimm Aquí hay un WPR con un promedio (ma)

Gracias Mladen,

Estoy tratando de cmo's ma pero tengo error (iCMO función no definida) ... ¿puede ayudar ...? cmo se adjunta

//---- configuración del indicador

#propiedad indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Red

#propiedad indicator_width1 2

#property indicator_width2 2

//---- parámetros del indicador

extern int CMO_Period=21;

extern int MA_Period=14;

extern string m = "--Tipos de media móvil--";

extern string m0 = " 0 = SMA";

extern string m1 = " 1 = EMA";

extern string m2 = " 2 = SMMA";

extern string m3 = " 3 = LWMA";

extern int MA_Type=1;

//---- buffers de indicadores

double CMO_Buffer[];

double MA_Buffer[];

double iCMO[];

int MA_Mode;

string strMAType;

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

//| Función de inicialización de los indicadores personalizados ||.

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

int init()

{

//---- ajustes de dibujo

SetIndexStyle(0,DRAW_LINE);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,CMO_Period);

IndicatorDigits(Dígitos+1);

//---- mapeo de buffers de indicadores

SetIndexBuffer(0,CMO_Buffer);

SetIndexBuffer(1,MA_Buffer);

//---- nombre para la etiqueta de la DataWindow y la subventana del indicador

switch (MA_Type)

{

case 1: strMAType="EMA"; MA_Mode=MODE_EMA; break;

case 2: strMAType="SMMA"; MA_Mode=MODE_SMMA; break

caso 3: strMAType="LWMA"; MA_Mode=MODE_LWMA; break

por defecto: strMAType="SMA"; MA_Mode=MODE_SMA; break;

}

IndicatorShortName( "CMO" + " (" + CMO_Period + ") " + " : " + strMAType+ " (" +MA_Period + ") ");

SetIndexLabel(0, "CMO" + " (" +CMO_Period + ") ";)

SetIndexLabel(1,strMAType+ " (" + MA_Period + ") ";)

//---- inicialización realizada

return(0);

}

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

//| Convergencia/Divergencia de Medias Móviles ||

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

int inicio()

{

int límite;

int barras_contadas=IndicadorContado();

//---- la última barra contada se volverá a contar

if(counted_bars>0) counted_bars--;

limit=Barras contadas_barras;

//---- OCM contada en el 1er búfer

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

CMO_Buffer=iCMO(NULL,0,CMO_Period,i);

//---- Línea MA contada en el 2º búfer

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

MA_Buffer=iMAOnArray(CMO_Buffer,Bars,MA_Period,0,MA_Mode,i);

//---- hecho

return(0);

}

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

Archivos adjuntos:
cmo.mq4  6 kb
 

Mladen, ¿puedes ayudarme a encontrar los errores?

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color2 Red

//----

double UpperBuf[];

double UpperBuf1[];

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

//| |

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

void init()

{

SetIndexStyle(0, DRAW_NONE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(0, N);

//----

SetIndexBuffer(0, UpperBuf);

SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(1, N);

//----

SetIndexBuffer(1, UpperBuf1);

}

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

//| |

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

void deinit()

{

//----

}

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

//| |

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

void start()

{

int counted = IndicatorCounted();

//----

if(counted < 0)

return (-1);

//----

if(counted > 0)

counted--;

int limit = Bars - counted;

//----

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

{

UpperBuf= ((High/Close)-34)*Volume;

UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}

}

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

 
anonimm:
Gracias Mladen,

Estoy tratando de cmo's ma pero tengo error (iCMO función no definida)..puede ayudar..? cmo se adjunta

//---- configuración del indicador

#propiedad indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Red

#propiedad indicator_width1 2

#property indicator_width2 2

//---- parámetros del indicador

extern int CMO_Period=21;

extern int MA_Period=14;

extern string m = "--Tipos de media móvil--";

extern string m0 = " 0 = SMA";

extern string m1 = " 1 = EMA";

extern string m2 = " 2 = SMMA";

extern string m3 = " 3 = LWMA";

extern int MA_Type=1;

//---- buffers de indicadores

double CMO_Buffer[];

double MA_Buffer[];

double iCMO[];

int MA_Mode;

string strMAType;

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

//| Función de inicialización de los indicadores personalizados ||.

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

int init()

{

//---- ajustes de dibujo

SetIndexStyle(0,DRAW_LINE);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,CMO_Period);

IndicatorDigits(Dígitos+1);

//---- mapeo de buffers de indicadores

SetIndexBuffer(0,CMO_Buffer);

SetIndexBuffer(1,MA_Buffer);

//---- nombre para la etiqueta de la DataWindow y la subventana del indicador

switch (MA_Type)

{

case 1: strMAType="EMA"; MA_Mode=MODE_EMA; break;

case 2: strMAType="SMMA"; MA_Mode=MODE_SMMA; break

caso 3: strMAType="LWMA"; MA_Mode=MODE_LWMA; break

por defecto: strMAType="SMA"; MA_Mode=MODE_SMA; break;

}

IndicatorShortName( "CMO" + " (" + CMO_Period + ") " + " : " + strMAType+ " (" +MA_Period + ") ");

SetIndexLabel(0, "CMO" + " (" +CMO_Period + ") ";)

SetIndexLabel(1,strMAType+ " (" + MA_Period + ") ";)

//---- inicialización realizada

return(0);

}

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

//| Convergencia/Divergencia de Medias Móviles ||

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

int inicio()

{

int límite;

int barras_contadas=IndicadorContado();

//---- la última barra contada se volverá a contar

if(counted_bars>0) counted_bars--;

limit=Barras contadas_barras;

//---- OCM contada en el 1er búfer

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

CMO_Buffer=iCMO(NULL,0,CMO_Period,i);

//---- Línea MA contada en el 2º búfer

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

MA_Buffer=iMAOnArray(CMO_Buffer,Bars,MA_Period,0,MA_Mode,i);

//---- hecho

return(0);

}

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

Aquí tienes PS : es una versión independiente, no es necesario el cmo

Archivos adjuntos:
cmo_ma.mq4  2 kb
 
k3rn3l:
Mladen, ¿puedes ayudarme a encontrar los errores?

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color2 Red

//----

double UpperBuf[];

double UpperBuf1[];

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

//| |

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

void init()

{

SetIndexStyle(0, DRAW_NONE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(0, N);

//----

SetIndexBuffer(0, UpperBuf);

SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(1, N);

//----

SetIndexBuffer(1, UpperBuf1);

}

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

//| |

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

void deinit()

{

//----

}

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

//| |

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

void start()

{

int counted = IndicatorCounted();

//----

if(counted < 0)

return (-1);

//----

if(counted > 0)

counted--;

int limit = Bars - counted;

//----

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

{

UpperBuf= ((High/Close)-34)*Volume;

UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}

}

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

k3rn3l

Inténtalo así :

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Red

double UpperBuf[];

double UpperBuf1[];

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

//| |

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

void init()

{

IndicatorBuffers(2);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

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

if(counted > 0) counted--;

int limit = Bars - counted;

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

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}
 

Estimado Mladen;

Gracias de nuevo por wpr ma y cmo ma indics. Supongamos que para el primer indicador establezco el wpr per en a, el ma per en b, y para el segundo indicador el rango cmo en c y el ma per en d. Me gustaría comprar cuando el wpr cruza su ma (mientras el wpr>nivel x) y el cmo cruza su ma (mientras el cmo>nivel y) en EL MISMO MINUTO/BARRA. (aquí es importante, dos condiciones tienen que ocurrir al mismo tiempo), y vender condiciones inversas.

¿es posible?

 
anonimm:
Estimado Mladen;

Gracias de nuevo por los indicadores wpr ma y cmo ma. Supongamos que para el primer indicador establezco el wpr per en a, ma per en b, y para el segundo indicador cmo range en c y ma per en d. Me gustaría comprar cuando el wpr cruza su ma (mientras wpr>nivel x) y cmo cruza su ma (mientras cmo>nivel y) en EL MISMO MINUTO/BARRA. (aquí es importante, dos condiciones tienen que ocurrir al mismo tiempo), y vender las condiciones inversas.

¿es posible?

es posible

Utilice iCustom() para comprobar las condiciones que está buscando y puede combinar las condiciones de cualquier número de indicadores personalizados que utilice en una señal.

 

¿Alguien puede ayudarme a arreglar este indicador para más de 950 countbars?

Archivos adjuntos:
 
YSCWL:
¿Alguien puede ayudarme a arreglar este indicador para más de 950 countbars?

Probarlo

Archivos adjuntos: