icustom ZigZag

 
Estou tentando determinar a direção do indicador de ziguezague com o comando icustom.

Isto é o que eu tenho até agora:

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

As linhas são desenhadas no gráfico, mas tanto ZigZagHigh quanto ZigZagLow são iguais tozero quando eu executo o programa.




Como eu determinaria a tendência do indicador ZigZag com a função icustom?


Obrigado
 
o que quer que você esteja tentando fazer, esta provavelmente não é a maneira de obtê-lo.
olhar para "Indicadores de justiça, especialistas e testes estratégicos" -- expliquei a maneira de usar o iCustom...

Acho que você deveria ter mudado o indicador e feito dois buffers extras para obter esses dados.
O baixo valor é, por exemplo, LOWbuff[]
alto valor é HIGHbuff[]

agora se você tem um novo alto (indicador interno) então você verifica se isso difere do valor armazenado agora mesmo... se for, você tem um novo valor...
1.2815 ZigZag máximo, por exemplo
bar1
bar2
bar3
...
barx novo valor vem como 1,2755

sua vontade será algo como HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755.... ]

então você usa Icustom(NULL,0, "ZigZag",3,0); --> e voilá! você tem seu número

Espero que você possa entender do que estou falando...

zolero
 
zolero:
o que quer que você esteja tentando fazer, esta provavelmente não é a maneira de obtê-lo.
olhar para "Indicadores de justiça, especialistas e testes estratégicos" -- expliquei a maneira de usar o iCustom...

Acho que você deveria ter mudado o indicador e feito dois buffers extras para obter esses dados.
O baixo valor é, por exemplo, LOWbuff[]
alto valor é HIGHbuff[]

agora se você tem um novo alto (indicador interno) então você verifica se isso difere do valor armazenado agora mesmo... se for, você tem um novo valor...
1.2815 ZigZag máximo, por exemplo
bar1
bar2
bar3
...
barx novo valor vem como 1,2755

sua vontade será algo como HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755.... ]

então você usa Icustom(NULL,0, "ZigZag",3,0); --> e voilá! você tem seu número

Espero que você possa entender do que estou falando...

zolero


Não, na verdade eu não entendo,


Tudo o que eu quero é que minha EA saiba para que lado o indicador ziguezague está apontando (UP ORDOWN). COMO EU FARIA ISSO?
 
Tudo o que eu quero é que minha EA saiba para que lado o indicador ziguezague está apontando (PARA CIMA OU PARA BAIXO). COMO COMO EU VAI FAZER ISSO?
Provavelmente você quer saber quais foram os dois últimos valores (já que o ziguezague nem sempre tem um valor). Portanto, você tem que ler os dois últimos valores de um 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++;
}
agora você tem dois números zig -- último valor e zag -- valor anterior a esse
if(zag>zig) indicador mostra para baixo
if(zig>zag) indicador mostra para cima

zolero
 
zolero:
Tudo o que eu quero é que minha EA saiba para que lado o indicador ziguezague está apontando (PARA CIMA OU PARA BAIXO).
Provavelmente você quer saber se foram os dois últimos valores (já que o ziguezague nem sempre tem um valor), portanto você tem que ler os dois últimos valores de um 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++;
}
agora você tem dois números em zig -- último valor e zag -- valor anterior a esse
if(zag>zig) indicador mostra para baixo
if(zig>zag) indicador aparece

zolero

OBRIGADO, entendi, funciona como um encanto
 
c0d3:
zolero:
Tudo o que eu quero é que minha EA saiba para que lado o indicador ziguezague está apontando (PARA CIMA OU PARA BAIXO).
Provavelmente você quer saber se foram os dois últimos valores (já que o ziguezague nem sempre tem um valor), portanto você tem que ler os dois últimos valores de um 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++;
}
agora você tem dois números em zig -- último valor e zag -- valor anterior a esse
if(zag>zig) indicador mostra para baixo
if(zig>zag) indicador aparece

zolero

OBRIGADO, entendi, funciona como um encanto





DEPOIS DE TESTÁ-LO,



indicador if(zag<zig) mostra para baixo
se(zig<zag) indicador aparecer


i PENSANDO QUE É CORRETO, Deu DIREÇÃO OPOSITIVA COM (zag>zig), (zig>zag)

 
c0d3:
i PENSANDO QUE É CORRETO, Deu DIREÇÃO OPOSITIVA COM (zag>zig), (zig>zag)

Eu já estava olhando a última linha no gráfico. isto significa que a última linha estava olhando para baixo [ou para cima]. Mas há um pequeno problema em tomá-lo como sinal para cima ou para baixo: o ziguezague pode [e muitas vezes faz] se redesenhar. isto significa que se a linha entre dois pontos estiver mostrando boca a boca (de 1.2900 a 1.2850) então não significa que o preço suba. É provável que ele suba, mas há uma grande chance de que, após algum movimento para baixo, você tenha uma linha nova para baixo (de 1.2900 a 1.2820) e assim por diante. Meu ponto é que ter uma linha sobre o gráfico não significa que o movimento para esta direção tenha terminado.
 
  
int n, i; duplo 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; duplo 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++; }

 
Modifiquei um pouco o código em ziguezague para mostrar o que quero dizer com falso sinal. como theysay: uma imagem pode dizer mais de 1000 palavras....


A linha vermelha é o ziguezague original e vai de baixo para cima e de volta aos melhores momentos... pelo menos parece assim. Mas se você está codificando uma ea, então ea get'ssignals que estão perto da linha amarela. pode ser ainda pior, pois eu fiz um quickhack muito rápido...
o código está sendo redesenhado para cima ou para baixo até que a próxima linha tenha sido desenhada e assim, passo a passo, mudando a linha amarela (apagando valores máximos e mínimos) até que você receba uma linha vermelha...