icustom ZigZag

 
Estoy tratando de determinar la dirección del indicador de zigzag con el comando icustom.

Esto es lo que tengo hasta ahora

ZigZagHigh=iCustom(NULL,0, "ZigZag",MODE_HIGH,0);
ZigZagLow=iCustom(NULL,0, "ZigZag",MODE_LOW,0);

Las líneas se dibujan en el gráfico, pero tanto ZigZagHigh como ZigZagLow son iguales a cero cuando ejecuto el programa.




¿Cómo puedo determinar la tendencia del indicador ZigZag con la función icustom?


Gracias
 
sea lo que sea que estés tratando de hacer, probablemente esta no sea la manera de conseguirlo.
mira en 'Indicadores Custiom, expertos y pruebas de estrategia' -- expliqué la manera de usar iCustom...

Creo que deberías cambiar el indicador y hacer dos buffers extra para obtener esos datos.
el valor bajo es por ejemplo LOWbuff[]
el valor alto es HIGHbuff[]

ahora si tienes un nuevo high (dentro del indicador) entonces compruebas si es diferente del valor almacenado ahora mismo... si lo es, tienes un nuevo valor...
1.2815 ZigZag max por ejemplo
bar1
bar2
bar3
...
barx nuevo valor viene como 1.2755

su será algo como HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755... . ]

entonces usas Icustom(NULL,0, "ZigZag",3,0); --> y ¡voilá! tienes tu número

Espero que puedas entender de qué estoy hablando...

zolero
 
zolero:
sea lo que sea que estés tratando de hacer, probablemente esta no sea la manera de conseguirlo.
mira en 'Indicadores Custiom, expertos y pruebas de estrategia' -- expliqué la manera de usar iCustom...

Creo que deberías cambiar el indicador y hacer dos buffers extra para obtener esos datos.
el valor bajo es por ejemplo LOWbuff[]
el valor alto es HIGHbuff[]

ahora si tienes un nuevo high (dentro del indicador) entonces compruebas si es diferente del valor almacenado ahora mismo... si lo es, tienes un nuevo valor...
1.2815 ZigZag max por ejemplo
bar1
bar2
bar3
...
barx nuevo valor viene como 1.2755

su será algo como HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755... . ]

entonces usas Icustom(NULL,0, "ZigZag",3,0); --> y ¡voilá! tienes tu número

Espero que puedas entender de qué estoy hablando...

zolero


No, la verdad es que no lo entiendo,


Todo lo que quiero es hacer que mi EA sepa hacia dónde apunta el indicador de zigzag (hacia arriba o hacia abajo). ¿CÓMO PUEDO HACER ESO?
 
Todo lo que quiero es hacer que mi EA sepa hacia dónde apunta el indicador de zigzag (hacia arriba o hacia abajo). ¿CÓMO PUEDO HACERLO?
Probablemente quieras saber los dos últimos valores (ya que el zigzag no tiene siempre un valor). Así que tienes que leer los dos últimos valores de un indicador:

  int n, i;
  double zag, zig;
i=0;
while(n<2)
{
   if(zig>0) zag=zig;
   zig=iCustom(NULL, 0, "ZigZag", 0, i);
   if(zig>0) n+=1;
   i++;
}
ahora tienes dos números zig -- último valor y zag -- valor anterior a ese
si(zag>zig) el indicador muestra hacia abajo
si(zig>zag) el indicador muestra hacia arriba

zolero
 
zolero:
Todo lo que quiero es hacer que mi EA sepa hacia dónde apunta el indicador de zigzag (hacia arriba o hacia abajo).
Probablemente quieras saber los dos últimos valores (ya que el zigzag no tiene siempre un valor), por lo que tienes que leer los dos últimos valores de un indicador:

  int n, i;
  double zag, zig;
i=0;
while(n<2)
{
   if(zig>0) zag=zig;
   zig=iCustom(NULL, 0, "ZigZag", 0, i);
   if(zig>0) n+=1;
   i++;
}
ahora tienes dos números zig -- último valor y zag -- valor anterior a ese
si(zag>zig) el indicador se muestra hacia abajo
if(zig>zag) el indicador se muestra hacia arriba

zolero

GRACIAS, lo tengo, funciona de maravilla
 
c0d3:
zolero:
Todo lo que quiero es hacer que mi EA sepa hacia dónde apunta el indicador de zigzag (hacia arriba o hacia abajo).
Probablemente lo que quieres saber son los dos últimos valores (ya que el zigzag no tiene siempre un valor), así que tienes que leer los dos últimos valores de un indicador:

  int n, i;
  double zag, zig;
i=0;
while(n<2)
{
   if(zig>0) zag=zig;
   zig=iCustom(NULL, 0, "ZigZag", 0, i);
   if(zig>0) n+=1;
   i++;
}
ahora tienes dos números zig -- último valor y zag -- valor anterior a ese
si(zag>zig) el indicador se muestra hacia abajo
if(zig>zag) el indicador se muestra hacia arriba

zolero

GRACIAS, lo tengo, funciona de maravilla





DESPUÉS DE PROBARLO,



si(zag<zig) el indicador muestra hacia abajo
si(zig<zag) el indicador muestra hacia arriba


CREO QUE ES CORRECTO, ESTABA DANDO DIRECCIÓN OPUESTA CON (zag>zig), (zig>zag)

 
c0d3:
CREO QUE ES CORRECTO, ESTABA DANDO LA DIRECCIÓN OPUESTA CON (zag>zig), (zig>zag)

Estaba mirando la última línea ya en el gráfico. esto significa que la última línea estaba mirando hacia abajo [o hacia arriba]. Debería significar que ahora mismo se espera un movimiento al alza [o a la baja]. Pero hay un pequeño problema con tomarlo como una señal al alza o a la baja: el zigzag puede [y a menudo lo hace] redibujarse a sí mismo. esto significa que si la línea entre dos puntos está mostrando el sur (de 1,2900 a 1,2850) entonces no significa que el precio suba. Probablemente subirá, pero hay una gran posibilidad de que después de algún movimiento hacia abajo tenga una nueva línea hacia abajo (de 1,2900 a 1,2820) y así sucesivamente. Mi punto es que tener una línea en el gráfico no significa que el movimiento en esta dirección haya terminado.
 
  
int n, i; double zag, zig;
i=0;
while(n<2)
{
if(zig>0) zag=zig;
zig=iCustom(NULL, 0, "ZigZag", 0, i);
if(zig>0) n+=1;
i++;
}
 

&nbint n, i; double zag, zig; i=0; while(n<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, i); if(zig>0) n+=1; i++; }sp;int n, i; double zag, zig; i=0; while(n<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, i); if(zig>0) n+=1; i++; }

 
He modificado un poco el código del zigzag para mostrar lo que quiero decir con la señal falsa. como dicen: una imagen puede decir más que 1000 palabras....


La línea roja es el zigzag original y va de abajo a arriba y de vuelta en los mejores momentos... al menos parece así. Pero si usted está codificando un ea entonces ea obtiene señales que están cerca de la línea amarilla. puede ser aún peor como hice realmente rápido hack ...
el codigo esta redibujando la linea hacia arriba o hacia abajo hasta que la proxima linea ha sido dibujada y asi paso a paso cambiando la linea amarilla (borrando los valores max y min) hasta que se obtiene una linea roja...
 
Razón de la queja: