doubleiCustom( string symbol, int timeframe, string name, ..., int mode, int shift)
Mirando la definición de la parte ...
...
-
Parámetros pasados (si es necesario). Los parámetros pasados y su orden deben corresponder con el orden de desclasificación y el tipo de variables externas del indicador personalizado.
Tienes 9 variables externas y por lo tanto necesitas 9 parámetros en el orden correcto y con el tipo correcto
string PairName = "";
int StdDev.MA.Period = 12;
int StdDev.MA.Shift = 0;
int StdDev.MA.Method = MODE_SMA;
int StdDev.MA.Price = PRICE_CLOSE;
int MA.Fast.Period = 3;
int MA.Fast.Method = MODE_SMMA;
int MA.Fast.Shift = 0;
#define CheckOncePerBar true;
Los valores que NO afectan a los buffers, se pueden hacer constantes.
iCustom le permite acceder a los buffers de sus Indicadores... es así de simple.
Por ejemplo, usted está escribiendo un EA que tiene una estrategia basada en 2 Indicadores, usted podría construir el código del Indicador en el EA, eso es posible pero es un poco complicado ya que los buffers de los Indicadores no funcionan en los EAs, usted tendría que usar arrays y manejarlos de una manera "como serie" . . la alternativa es tener los Indicadores corriendo y acceder a sus buffers desde el EA . . esto es lo que iCustom facilita. No es necesario hacer cambios en los Indicadores . . . el EA simplemente accede a los buffers que necesita en los valores de desplazamiento que necesita. En la llamada de iCustom también puede pasar cualquier variable externa que se necesite para configurar el Indicador según corresponda
Estimado RaptorUK (y otros que puedan ayudar),
en el post citado describes dos formas de utilizar valores de indicadores personalizados en un EA. La primera es con iCustom que ya conozco. La segunda es una que realmente me gustaría aprender más porque he intentado internalizar el código de los indicadores personalizados en el cuerpo del indicador principal antes, pero sin éxito. Verás, cuando convertí un indicador en una función y dejé que devolviera su valor más actual (el valor en el elemento 0) siempre obtengo el EMPTY_VALUE para una variable doble en lugar del propio valor calculado. He probado a utilizar la función iCustom, poniendo el desplazamiento a 0, el valor más reciente. Cuando hago esto el terminal comienza devolviendo 0 junto con el error STACK OVERFLOW en la pestaña de expertos. En el segundo tick devuelve un valor pero después de cada par de valores [0] impresos da otro error STACK OVERFLOW, esto se repite una y otra vez. Debido a que iCustom devuelve el valor 0 y STACK OVERFLOW en la primera inicialización (y sólo después comienza a dar valores correctos) no puedo usar icustom en mi EA porque llama al icustom para un símbolo diferente cada vez que Start() se activa y llama a múltiples indicadores personalizados para eso. Esto hace que el EA se bloquee. No entiendo por qué recibo un error de STACK OVERFLOW cada vez que quiero que el icustom devuelva el valor más reciente [0] pero me gustaría saberlo. Sin embargo, prefiero internalizar el código de todos los indicadores que están siendo llamados transformándolos en funciones dentro del indicador principal. Dijiste algo acerca de usar arrays y manejarlos de manera "como series". ¿Podría explicar esto?
He añadido un archivo mq4 del indicador clásico ADX.mq4. Dentro el valor de ADX se imprime dos veces. Una vez por Icustom, y la segunda por el código del ADX que se ha convertido en una función dentro del ADX. Icustom(ADX) devuelve un valor pero ADX(symbol,timeframe) no lo hace. Sigue devolviendo el mismo EMPTY_VALUE de 247456457457 o algo así una y otra vez. Por favor, explique por qué sucede esto y cómo puedo remediarlo tanto en una plantilla de EA como en un archivo de indicador personalizado mq4.
Un saludo y gracias de antemano
PD: el archivo adjunto no parece funcionar. Pero puede descargar tanto el indicador de ejemplo CallicustomvsFunction como el indicador personalizado ADX de http://www.forexfactory.com/showthre...37#post8569537(mi nombre allí es Codix)
Gracias Dabbler. He adjuntado el EA completo y el indicador. He leído los enunciados de iCustom, y entiendo todo excepto la parte de los parámetros,
Lo que va en los parámetros son los valores que quieres usar para las variables externas en el Indicador... en este caso estas...
Veamos de nuevo el archivo de ayuda.
Mirando la definición de la parte ...
Tienes 9 variables externas y por lo tanto necesitas 9 parámetros en el orden correcto y con el tipo correcto
Muy fácil.
Entonces preguntas "Además, ¿hay alguna forma de ver físicamente qué valores se están enviando al EA?"
Claro.
Sí, excepto que Null es un error tipográfico.
Empieza con el indicador y genera el código.
#define SFX "SFX"#define ya que es constante. Definirlo una vez para que no haya errores tipográficos.Gracias por su respuesta.
ExtMapBuffer1[i+3] = lower_fractal_7b; could be used as calculated value when reversal fractal is called?Sí. Todo el tiempo. Estoy hablando de Extern Values. Y supongo que estás hablando de Buffers.
Sí UBZEN,
También probé lo que me sugeriste y me devolvió el valor que se indica en mi indicador....
es simplemente, fácil de añadir o utilizar con todos los parámetros de largo .... especialmente el que con arrays.......
Yo podría perderse en la compilación de los parámetros no ustedes............ los PRO aquí
muchas gracias.... Estuve buscando esta respuesta durante unos días
iCustom le permite acceder a los buffers de sus Indicadores... es así de simple.
Por ejemplo, usted está escribiendo un EA que tiene una estrategia basada en 2 Indicadores, usted podría construir el código del Indicador en el EA, eso es posible pero es un poco complicado ya que los buffers de los Indicadores no funcionan en los EAs, usted tendría que usar arrays y manejarlos de una manera "como serie" . . la alternativa es tener los Indicadores corriendo y acceder a sus buffers desde el EA . . esto es lo que iCustom facilita. No es necesario hacer cambios en los Indicadores . . . el EA simplemente accede a los buffers que necesita en los valores de desplazamiento que necesita. En la llamada de iCustom también puede pasar cualquier variable externa que se necesite para configurar el Indicador según corresponda
Estimado RaptorUK (y otros que puedan ayudar),
en el post citado describes dos formas de utilizar valores de indicadores personalizados en un EA. La primera es con iCustom que ya conozco. La segunda es una que realmente me gustaría aprender más porque he intentado internalizar el código de los indicadores personalizados en el cuerpo del indicador principal antes, pero sin éxito. Verás, cuando convertí un indicador en una función y dejé que devolviera su valor más actual (el valor en el elemento 0) siempre obtengo el EMPTY_VALUE para una variable doble en lugar del propio valor calculado. He probado a utilizar la función iCustom, poniendo el desplazamiento a 0, el valor más reciente. Cuando hago esto el terminal comienza devolviendo 0 junto con el error STACK OVERFLOW en la pestaña de expertos. En el segundo tick devuelve un valor pero después de cada par de valores [0] impresos da otro error STACK OVERFLOW, esto se repite una y otra vez. Debido a que iCustom devuelve el valor 0 y STACK OVERFLOW en la primera inicialización (y sólo después comienza a dar valores correctos) no puedo usar icustom en mi EA porque llama al icustom para un símbolo diferente cada vez que Start() se activa y llama a múltiples indicadores personalizados para eso. Esto hace que el EA se bloquee. No entiendo por qué recibo un error de STACK OVERFLOW cada vez que quiero que el icustom devuelva el valor más reciente [0] pero me gustaría saberlo. Sin embargo, prefiero internalizar el código de todos los indicadores que están siendo llamados transformándolos en funciones dentro del indicador principal. Dijiste algo acerca de usar arrays y manejarlos de manera "como series". ¿Podría explicar esto?
He añadido un archivo mq4 del indicador clásico ADX.mq4. Dentro el valor de ADX se imprime dos veces. Una vez por Icustom, y la segunda por el código del ADX que se ha convertido en una función dentro del ADX. Icustom(ADX) devuelve un valor pero ADX(symbol,timeframe) no lo hace. Sigue devolviendo el mismo EMPTY_VALUE de 247456457457 o algo así una y otra vez. Por favor, explique por qué sucede esto y cómo puedo remediarlo tanto en una plantilla de EA como en un archivo de indicador personalizado mq4.
Un saludo y gracias de antemano
PD: el archivo adjunto no parece funcionar. Pero puede descargar tanto el indicador de ejemplo CallicustomvsFunction como el indicador personalizado ADX de http://www.forexfactory.com/showthre...37#post8569537(mi nombre allí es Codix)
En los mensajes anteriores(https://www.mql5.com/en/forum/138577/page3#627521 y https://www.mql5.com/en/forum/138577/page3#797401) he utilizado puntos y separadores de palabras.
Eso no está permitido desde el 3 de febrerode 2014 (Build 600) Utilice un guión bajo o camel case.
Utilice un guión bajo o una mayúscula.