Como extrair somente os pontos de rotação do fundo extraídos pelo indicador ziguezague? - página 3

 
jackprobe:
Obrigado deVries. vai tentar ...


e se você colocar algo como

isto dentro de seu código ....

 
ubzen:

Eis o que eu inventei. Eu não verifiquei os resultados do deVries acima [estava fazendo isto quando ele postou].


Olá, ubzen, eu vejo seu código como abaixo:

Não sei o que significa estes dois códigos de linha: if(Bottoms[shift]>0,1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0,1) Toppers[shift]=Toppers[shift];

Eu acho que quase não muda nada quando eu apago os códigos destas duas linhas, então eu não sei porque você adiciona estas duas linhas.

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_width1 1
#property indicator_color2 Yellow
#property indicator_width2 1

double Bottoms[];
double Toppers[];

int init()
{

   IndicatorBuffers(2);

   SetIndexStyle(0,DRAW_SECTION);
   SetIndexBuffer(0,Bottoms);
   SetIndexEmptyValue(0,0.0);

   SetIndexStyle(1,DRAW_SECTION);
   SetIndexBuffer(1,Toppers);
   SetIndexEmptyValue(1,0.0);

  IndicatorShortName("zz show top & bottom");
  return(0);
}

int deinit()
{
  return(0);
}

int start()
{
  int counted_bars=IndicatorCounted();
  int limit=0;
  limit = Bars-counted_bars;
  
  for(int shift=limit-1;shift>=0;shift--)
  {
    int ExtDepth=12; int ExtDeviation=5; int ExtBackstep=3;
    int ZigzagBuffer=0; int HighMapBuffer=1; int LowMapBuffer=2;
    
    Bottoms[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        LowMapBuffer, shift
    );
    
    Toppers[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        HighMapBuffer, shift
    );
    
    if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift];
    if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];
  }
  
  return(0);
}
 
vx0532:


Olá, ubzen, eu só vejo seu código como abaixo:

Não sei o que significa estes dois códigos de linha: if(Bottoms[shift]>0,1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0,1) Toppers[shift]=Toppers[shift];

Eu acho que quase não muda nada quando eu apago os códigos destas duas linhas, então eu não sei porque você adiciona estas duas linhas.


Ziguezague com linha em baixo e linha em alto
 


Escrevo estes códigos abaixo como abaixo na EA

mas quando eu testo nos dados do histórico, "imprimir" mostra todos os 0, por quê?

for(int shift=99;shift>=0;shift--)
  {
    int ExtDepth=12; int ExtDeviation=5; int ExtBackstep=3;
    int ZigzagBuffer=0; int HighMapBuffer=1; int LowMapBuffer=2;
    
    Bottoms[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        LowMapBuffer, shift
    );
    
    Toppers[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        HighMapBuffer, shift
    );
    if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift];
    if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];
 }
 
 shift=0;
 while(shift<100)
 {
 Print("Bottoms,Toppers:",Bottoms[shift]," , ",Toppers[shift]);
 shift++;
 }
 

ler meu post 1 página atrás

deVries 2013.10.19 12:13 #

https://www.mql5.com/en/forum/144092/page2#854926


//+------------------------------------------------------------------+
//|                                              ZigZag practise.mq4 |
//|                                Copyright © 2012, Tjipke de Vries |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Tjipke de Vries"
#property link      ""

//---- input parameters  ZigZag
extern int ExtDepth=12;
extern int ExtDeviation=5;
 
deVries:

obrigado deVries, tenho conhecimento deste assunto após revisar seu posto .

Portanto, chego à conclusão de que podemos usar dupla matriz e variável para receber o valor de retorno iCustom() nos códigos do Indicator; mas só podemos usar variável para receber o valor de retorno iCustom() nos códigos da EA.

sua explicação é que:"esses são os buffers errados e você tem que encontrar o valor de i em qual barra o topo ou o fundo será ".

meu entendimento é que na EA, quando usamos a matriz x[i] para receber iCustom(), a tarefa está ok, mas a barra da tarefa é incerta.

Então iCustom() não apenas retorna um valor simplesmente, mas outras coisas, sim?

mas ainda não entendo o significado do código: " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift]; "(Toppers[shift]=Toppers[shift]; "(Toppers[shift]=Toppers[shift])

 
vx0532:

obrigado deVries, eu conheço este assunto após revisar seu posto .

Portanto, chego à conclusão de que podemos usar dupla matriz e variável para receber o valor de retorno iCustom() nos códigos do Indicator; mas só podemos usar variável para receber o valor de retorno iCustom() nos códigos da EA.

sua explicação é que:"esses são os buffers errados e você tem que encontrar o valor de i em qual barra o topo ou o fundo será ".

meu entendimento é que na EA, quando usamos a matriz x[i] para receber iCustom(), a tarefa está ok, mas a barra da tarefa é incerta.

Então iCustom() não apenas retorna um valor simplesmente, mas outras coisas, sim?

mas ainda não entendo o significado do código: " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift]; "(Toppers[shift]=Toppers[shift]; "(Toppers[shift]=Toppers[shift])


você ainda está lutando para obter dados do indicador ZigZag

por que você quer que eu explique o que não está dentro do meu código ??

por que você não pesquisa o código de

//+------------------------------------------------------------------+
//|                                              ZigZag practise.mq4 |
//|                                Copyright © 2012, Tjipke de Vries |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Tjipke de Vries"
#property link      ""

//---- input parameters  ZigZag
extern int ExtDepth=12;
extern int ExtDeviation=5;

o código inteiro você pode encontrar uma página de volta.... https://www.mql5.com/en/forum/144092/page2#854926

se você entende o funcionamento desse código, então ele está simplesmente usando o mesmo método nas EA's

 
  1. deVries: o código inteiro você pode encontrar uma página de volta....
    Não diga uma página para trás, poste o link para o post exato. É o # sinal à direita de seu nome (clique com o botão direito, copiar link) uma página para trás
  2. vx0532: mas ainda não entendo o significado do código: " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];"
    O que você acha que significa "se(x> 0,1) x=x;" significa? Nada! O código corrigido mais tarde diz:
        if(ZigZag[shift]>0.1 && Low[shift]==ZigZag[shift]) Bottoms[shift]=ZigZag[shift];
        if(ZigZag[shift]>0.1 && High[shift]==ZigZag[shift]) Toppers[shift]=ZigZag[shift];
    
 
WHRoeder:
  1. deVries: o código completo você pode encontrar uma página de volta....
    Não diga uma página para trás, poste o link para o post exato. É o # sinal à direita de seu nome (clique com o botão direito, copiar link) uma página para trás
  2. vx0532: mas ainda não entendo o significado do código: " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift]; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];"
    O que você acha que significa "se(x> 0,1) x=x;" significa? Nada! O código corrigido mais tarde diz:

feito https://www.mql5.com/en/forum/144092/page2#854926
 

Prezados todos,

obrigado por esta maravilhosa discussão sobre o ZigZag e os códigos. Eu acrescentaria um novo giro à discussão
Para mim seria de grande valor se eu pudesse extrair os valores altos/baixos calculados pelo indicador ZigZag
(com um dado conjunto específico de parâmetros) junto com seus tempos de ocorrência para um texto ou arquivo csv,
algo como isto:

- Dia, hora, alto valor, alto (booleano)
- Dia, hora, baixo valor, baixo (booleano)

Gostaria de extrair estes valores para análise posterior em MS Excel a fim de identificar probabilidades de
ocorrência de períodos de tempo e amplitudes em um gráfico. No final, os histogramas serão criados a partir de
estes dados, indicando a "assinatura" do valor no gráfico através da identificação de períodos de tempo intrínsecos e
e amplitudes de oscilação intrínsecas.

Talvez eu esteja tentando reinventar a roda aqui e há código lá fora que eu quero que
faça. Caso contrário, valeria a pena desenvolver tal código. Estou fazendo este tipo de análise manualmente
com toneladas de gráficos todos os dias, e posso afirmar claramente que conhecer a assinatura intrínseca de um valor
melhora imensamente a chance de prever uma mudança de direção. Na minha opinião, este processo poderia ser
facilmente automatizado ... mas eu precisaria de alguma ajuda de pessoas com experiência em programação. O resultado
seria ou um indicador prático, ou mesmo um MT4 EA (Expert Adviser) automático
que opera em pontos de inflexão significativos.

Seria bom encontrar aqui alguém que esteja interessado em um esforço de colaboração. Mas algumas dicas
sobre como extrair os dados do indicador ZigZag também ajudariam. Muito obrigado!

- spjuliman