¿Cómo codificar? - página 337

 
at120:
¡Hola Mladen!

Creo que la llamada de mi iCustom es correcta, porque en prueba y normal (exportando datos o usando como indi)

funciona bien hasta ahora. Creo que el problema es como mencionas el valor double/array.

Cuando ahora uso un

double mom1[];

mom1 = iCustom(NULL,0, "miIndi",0,i);

y que a -> mom(mom1,Bars,20,i);

-> "mom" - parámetro conversación no permitido

¿Cómo escribo esto correctamente?

Muchas gracias y adiós, AT

Prueba así :

mom(mom1,Bars,20,i);[/PHP]

Also, change the mom function to be like this :

[PHP]double Mom(double& series[], int period, int totcount, int index) { if (totcount<1 || period<1) return (EMPTY_VALUE); if (indextotcount-1) return (EMPTY_VALUE); return (series-series); }
 

¡Hola Mladen!

¡Gracias por tu ayuda!

Mi problema es que necesito la "const" porque otras partes del programa la necesitan...

Escribir "todo" nuevo es demasiado trabajo, así que la pregunta es, ¿puedo hacerlo al revés,

para que el mom1 funcione con la subfunción?

Muchas gracias y adiós, AT

 
at120:
¡Hola Mladen!

¡Gracias por tu ayuda!

Mi problema es que necesito la "const" porque otras partes del programa la necesitan...

Escribir "todo" nuevo es demasiado trabajo, así que la pregunta es, ¿puedo hacerlo al revés

para que la mom1 funcione con la subfunción?

Muchas gracias y adiós, AT

Puedes usar la función mom como está (y el resto)

Sólo tienes que cambiar el mom (mom1,Bar s,20,i); por mom(mom1,Bars,20,i);

 

entonces me sale el error:

-> "mom1" - parámetro conversación no permitido

hombre esto es complicado... ¿alguna otra idea?

Gracias y adiós, AT

 
at120:
luego me sale el error

-> "mom1" - parámetro conversación no permitido

hombre esto es complicado... ¿alguna otra idea?

Gracias y adiós, AT

No me sale ese error

Ver el ejemplo :

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); return(0); }

int deinit() { return(0); }

int start()

{

double mom = Mom(buffer,10,50,0);

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

Compila sin ningún error

 

¡Hola Mladen!

¿Tal vez sea por una función for {}? (¿para obtener las Barras?) o por...

el otro punto es: mom1 es un indi personalizado... mom1 = iCustom(NULL,0, "myIndi",0,i);

que llamo aquí: mom(mom1,Bars,20,i);

¡¡Gracias por tu ayuda!!

Adiós, AT

 
at120:
¡Hola Mladen!

¿Tal vez sea por una función for {}? (¿para obtener las Barras?) o por...

el otro punto es: mom1 es un indi personalizado... mom1 = iCustom(NULL,0, "myIndi",0,i);

que llamo aquí: mom(mom1,Bars,20,i);

¡¡Gracias por tu ayuda!!

Adiós, AT

No, esa no puede ser la causa

Vea este ejemplo :

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); 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);

for(int i = limit; i>=0; i--)

{

buffer = iCustom(NULL,0,"custom name",0,i);

double mom = Mom(buffer,10,50,i);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

Además, no hay errores de compilación en absoluto

 

¡Hola Mladen!

Quizás porque mi código se parece más a esto, y hay un "error"... :-/

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); 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);

for(int i = limit; i>=0; i--)

{

double mom1;

mom1 = iCustom(NULL,0,"custom name",0,i);

buffer = (

Mom(mom1,10,Bars,i);

);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);

Gracias y adiós, AT

 
at120:
¡Hola Mladen!

Quizás porque mi código se parece más a esto, y hay un "error"... :-/

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); 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);

for(int i = limit; i>=0; i--)

{

double mom1;

mom1 = iCustom(NULL,0,"custom name",0,i);

buffer = (

Mom(mom1,10,Bars,i);

);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);
Gracias y adiós, AT

at120

En tu código mom1 está definida como double (simple variable doble) no como array o buffer.

Defínelo de la misma manera que se define el "buffer", añádelo en la sección init a buffers y estará bien (asegúrate de ajustar el número de buffers adecuadamente)

 

¡Hola Malden!

Gracias por tu apoyo ;-)

Incluso, cuando escriba el código como me dijiste:

(creo que sí...)

#property indicator_chart_window

double buffer[];

double mom1[];

int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);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);

for(int i = limit; i>=0; i--)

{

mom1 = iCustom(NULL,0,"custom name",0,i);

buffer = (

Mom(mom1,10,Bars,i);

//doesn't work - no value in indi

// Mom(mom1,10,Bars,i); //error: parameter conversation not allowed

// mom1 // this works

);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);

Entonces, cuando uso la "Primera" versión, no obtengo ningún valor..

Cuando uso la segunda versión, obtengo el error... hmmm.

Solo funciona la llamada al mom1... pero este no es el valor correcto...

¡Gracias por su ayuda!

Adiós, AT