Función ICustom - página 4

 
TheRumpledOne:
Si es "basura", ¿por qué publicarlo?

Tuve un pensamiento similar....

 

Una pregunta sobre iCustom.

¿Puedes explicar y dar algunos ejemplos sobre las variables Line y Shift con los comandos de iCustom?

Gracias

 
matrixebiz:
Una pregunta sobre iCustom.

¿Pueden explicar y dar algunos ejemplos con respecto a las variables Line y Shift con los comandos iCustom?

Gracias

iCustom - Documentación MQL4

mode - Índice de línea. Puede ser de 0 a 7 y debe corresponder con el índice utilizado por una de las funciones SetIndexBuffer. shift - Índice del valor tomado del buffer del indicador (desplazamiento relativo a la barra actual la cantidad dada de períodos atrás).

Use MODE para decirle a su indicador qué búfer quiere. Los indicadores de resistencia de soporte pueden usar el buffer 0 ( MODE=0 ) para la resistencia y el buffer 1 ( MODE=1 ) para el soporte.

SHIFT dice que use el valor de Bar(SHIFT) del indicador llamado por iCustom.

¿Ayuda esto?

 
TheRumpledOne:
iCustom- Documentación MQL4

mode - Índice de la línea. Puede ser de 0 a 7 y debe corresponder con el índice utilizado por una de las funciones SetIndexBuffer. shift - Índice del valor tomado del buffer del indicador (desplazamiento relativo a la barra actual la cantidad dada de períodos atrás).

Use MODE para decirle a su indicador qué búfer quiere. Los indicadores de resistencia de soporte pueden usar el buffer 0 ( MODE=0 ) para la resistencia y el buffer 1 ( MODE=1 ) para el soporte.

SHIFT dice que use el valor de Bar(SHIFT) del indicador llamado por iCustom.

¿Esto ayuda?

Ok, entiendo a Shift, tendré que leer más sobre Mode.

¿Codifica usted? Tengo este indicador que llamo desde mi EA pero no estoy seguro de cómo configurarlo correctamente. Ver imagen.

Sólo tiene dos líneas y cuando el azul cambia y se alinea con la otra línea, se genera una señal larga (la misma idea con el rojo)

Probé algunos códigos diferentes como el que usé con el indicador VQ;

double Entry1 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 1);

double Entrada2 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", 24, 30....., 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", 24, 30....., 2, 2);

Simplemente no opera bien.

Gracias

Archivos adjuntos:
ci.jpg  66 kb
 
matrixebiz:
Ok, entiendo a Shift, tendré que leer más sobre el Modo.

¿Codifica usted? Tengo este indicador que llamo desde mi EA pero no estoy seguro de cómo configurarlo correctamente. Ver imagen.

Sólo tiene dos líneas y cuando el azul cambia y se alinea con la otra línea, se genera una señal larga (la misma idea con el rojo)

Probé algunos códigos diferentes como el que usé con el indicador VQ;

double Entry1 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 1);

double Entrada2 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", 24, 30....., 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", 24, 30....., 2, 2);

No está operando bien.

Gracias

Si te refieres al indicador inferior, que parece llamarse "#MTF CI", entonces creo que posiblemente ese indicador tenga 4 buffers: uno para cada uno de los dos colores de cada línea. Puedes abrir la ventana de datos (ctrl-D) para ver qué buffers tienen los indicadores, así como sus índices (el argumento MODE de la llamada iCustom).

 
matrixebiz:
Ok, tengo Shift, tendrá que hacer más lectura sobre el modo.

¿Codifica usted?

Gracias

¡Se sabe que he codificado un indicador o 2 ( Cientos ) en mi tiempo....LOL!

 
ralph.ronnquist:
Si te refieres al indicador inferior, que parece llamarse "#MTF CI", entonces creo que posiblemente ese indicador tenga 4 buffers: uno para cada uno de los dos colores de cada línea. Puedes abrir la ventana de datos (ctrl-D) para ver qué buffers tienen los indicadores, así como sus índices (el argumento MODE de la llamada iCustom).

Sí, su derecho, ¿cómo puedo iCustom estos y crear el Comercio?

Para los otros dos (QQEA 4 buffers y VQ 2 buffers) que están trabajando yo uso esto;

double Entry1 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 1);

double Entry2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 2, 2);

double qqe0_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,1);

double qqe0_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,2);

double qqe1_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,1);

double qqe1_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,2);

//Compra

qqe0_0>qqe1_0 && qqe0_1Entry2 && ....

Gracias Ralph

Archivos adjuntos:
data.jpg  24 kb
 
matrixebiz:
Sí, su derecho, ¿cómo puedo iCustom estos y crear el comercio?

Para los otros dos (QQEA 4 buffers y VQ 2 buffers) que están funcionando uso esto;

double Entry1 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 1);

double Entry2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 2, 2);

double qqe0_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,1);

double qqe0_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,2);

double qqe1_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,1);

double qqe1_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,2);

//Comprar

qqe0_0>qqe1_0 && qqe0_1Entry2 && ....

Gracias Ralph

Generalmente, cuando ves una línea indicadora con múltiples colores, entonces eso es usualmente implementado por múltiples buffers; uno para cada color. Entonces puede calcular los índices de los búferes desde la ventana de datos, donde el búfer superior tiene el índice 0, y va aumentando hacia abajo. El buffer se traza cuando tiene un valor (o si es un estilo de dibujo LINE, necesita dos o más valores consecutivos para ser trazado)

Si tienes el código fuente del indicador, a veces es más fácil echar un vistazo, y aprender los índices del buffer de las llamadas a la función SetIndexBuffer.

Como punto aparte: un indicador también puede trazar "objetos" en la pantalla, y estos no son accesibles a través de la llamada iCustom. En su lugar, tendrá que conocer el "nombre del objeto" y podrá leer sus propiedades.

Por lo tanto, siempre hay que tener claro qué búfer del indicador se va a leer, y utilizar ese índice como el segundo último argumento de iCustom.

Por ejemplo, el uso del indicador VQ no parece del todo correcto, porque (según la fuente que he visto), sus buffers [1] y [2] se usan para las líneas verdes y rojas respectivamente, y nunca hay un caso en el que ambos estén vacíos. Es decir, "Arriba2==Abajo2" es siempre falso, excepto cuando ambos están "vacíos", y eso es cuando la línea VQ no es ni verde ni roja, sino amarilla.

Aparte de eso, creo que estás haciendo las cosas de forma correcta. Se puede discutir la elección de los nombres de las variables, por supuesto, pero eso es académico. El camino a seguir es escoger los valores de interés usando la llamada iCustom, y luego expresar las relaciones de valores particulares requeridas en las condiciones de negociación.

 
ralph.ronnquist:
Generalmente, cuando usted ve una línea de indicador con múltiples colores, entonces eso es usualmente implementado por múltiples búferes; uno para cada color. Puedes calcular los índices de los búferes desde la ventana de datos, donde el búfer superior tiene el índice 0, y va aumentando hacia abajo. El buffer se traza cuando tiene un valor (o si es un estilo de dibujo LINE, necesita dos o más valores consecutivos para ser trazado)

Si tiene el código fuente del indicador, a veces es más fácil echar un vistazo en él, y aprender los índices del buffer de las llamadas a la función SetIndexBuffer.

Como punto aparte: un indicador también puede trazar "objetos" en la pantalla, y estos no son accesibles a través de la llamada iCustom. En su lugar, tendrá que conocer el "nombre del objeto" y podrá leer sus propiedades.

Por lo tanto, siempre hay que tener claro qué búfer del indicador se va a leer, y utilizar ese índice como el segundo último argumento de iCustom.

Por ejemplo, el uso del indicador VQ no parece del todo correcto, porque (según la fuente que he visto), sus buffers [1] y [2] se usan para las líneas verdes y rojas respectivamente, y nunca hay un caso en el que ambos estén vacíos. Es decir, "Up2==Down2" es siempre falso, excepto cuando ambos están "vacíos", y eso es cuando la línea VQ no es ni verde ni roja, sino amarilla.

Aparte de eso, creo que estás haciendo las cosas de forma correcta. Se puede discutir la elección de los nombres de las variables, por supuesto, pero eso es académico. El camino a seguir es escoger los valores de interés usando la llamada iCustom, y luego expresar las relaciones de valores particulares requeridas en las condiciones de negociación.

Lamentablemente no tengo la fuente de los tres indicadores que mencioné anteriormente. ¿Cómo escribiría el código para estos si quiero que comprueben una condición de compra o venta SÓLO en el momento preciso en que cambian de color al mismo tiempo para cada indicador, por supuesto?

Gracias

 

La falta de fuente no es un problema. Centrémonos en la ventana del indicador 2 de su imagen, que muestra un indicador con 4 buffers. Si mueves el ratón a la izquierda y a la derecha sobre el indicador, puedes averiguar qué búfer se utiliza para cada color.

Supongamos que el primer búfer ([0]) es para la indicación azul de la línea superior, el segundo búfer ([1]) es para la indicación roja de la línea superior, y del mismo modo [2] y [3] son azul y rojo de la línea inferior. A continuación, podría leer el indicador de la siguiente manera:

double top_is_blue = iCustom( ..., 0, 1 );

double top_was_blue = iCustom( ..., 0, 2 );

double top_is_red = iCustom( ..., 1, 1 );

double top_was_red = iCustom( ..., 1, 2 );

double bot_is_blue = iCustom( ..., 2, 1 );

double bot_was_blue = iCustom( ..., 2, 2 );

double bot_is_red = iCustom( ..., 3, 1 );

double bot_was_red = iCustom( ..., 3, 2 );

[/PHP]

Then you can summarise them as follows:

[PHP]bool top_goes_blue = ( top_is_blue == top_was_red );

bool top_goes_red = ( top_is_red == top_was_blue );

bool bot_goes_blue = ( top_is_blue == top_was_red );

bool bot_goes_red = ( top_is_red == top_was_blue );

bool both_go_blue = ( top_goes_blue && bot_goes_blue );

bool both_go_red = ( top_goes_red && bot_goes_red );

La forma de hacerlo depende de lo que se busque. Especialmente

si quieres combinar las lecturas no concurrentes de las dos líneas, podría convertirse en una codificación más complicada. Por ejemplo, la variable booleana "both_go_blue" se refiere a lecturas concurrentes de las dos líneas, y no captura que "una línea se pone azul, y la otra se pone azul un poco más tarde".

Razón de la queja: