encontrar a data mais próxima - página 3

 
dr.house7:

Desculpe, mas o que você quis dizer com "estas condições"?

Falta de tempo.

A propósito, decido levar tempo e testá-lo, aqui está 1 solução.

   for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp)
        {
         highest=i;
         temp=touchedline[i];
        }
     }
   temp=0;
   for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp && i!=highest)
        {
         previoushighest=i;
         temp=touchedline[i];
        }
     }
   Print("act_highest :",highest);
   Print("prv_highest :",previoushighest);
 
angevoyageur:

Falta de tempo.

A propósito, eu decido levar tempo e testá-lo, aqui está 1 solução.


Eu a testei por um tempo e parece estar funcionando corretamente.

Você economiza meu tempo, estou definitivamente em débito com você...muito obrigado!

Tenha um bom dia.

correção

desculpe, mas não funciona corretamente, muitas vezes o valor real está totalmente errado como o congelamento e algumas vezes o anterior se torna o valor real :(

 
dr.house7:


Eu o testei por um tempo e parece estar funcionando corretamente.

Você economiza meu tempo, estou definitivamente em débito com você...muito obrigado!

Tenha um bom dia.

correção

desculpe, mas não funciona corretamente, muitas vezes o valor real está totalmente errado como o congelamento e algumas vezes o anterior se torna o valor real :(


O último código que eu forneço deve funcionar. Você pode por favor postar seu código.

 
angevoyageur:


O último código que eu forneço deve funcionar. Por favor, poste seu código.

Os problemas surgem quando na mesma barra de minutos há uma linha de toque diferente

 
é evidente, por exemplo, quando você faz o backktest EURUSD 10 jan 2014 às 16:30 em cada tick mode M1
 

isso é difícil?

OMG

 

Existe alguma solução simples?

Devo usar arraymaximum em vez disso?

Obrigado ;)

 

Prezado Alain,

Decidi optar por uma nova maneira, apago o laço e tento obter algo antes de corrigir.

agora touchx(é o toque real) está correto, cada tick muda corretamente...em vez disso, previoustouchx(é o toque anterior) depois que o segundo tick se torna errado (porque ele toma o mesmo valor da corrente)...

como eu poderia proceder?

obrigado, tenha uma boa noite

doc

int highest,touchx,previoustouchx;

if(ema1[1] > ema2[1] && ema1[0]< ema2[0]) 
          {
           if(TouchTime1 != emacross1_TouchTime) 
           {
           drawArrow1(TouchTime1,ema1[0],"Wingdings 3",ArrowSize,"p",ArrowColor); 
           emacross1_TouchTime= TouchTime1;
           highest=emacross1_TouchTime;
           previoustouchx=touchx;
           touchx=1;
           }        
          }
Arquivos anexados:
mecca.mq5  14 kb
 
dr.house7:

Prezado Alain,

Decidi optar por uma nova maneira, apago o laço e tento obter algo antes de corrigir.

agora touchx(é o toque real) está correto, cada tick muda corretamente...em vez disso, previoustouchx(é o toque anterior) depois que o segundo tick se torna errado (porque ele toma o mesmo valor da corrente)...

como eu poderia proceder?

obrigado, tenha uma boa noite

doc

Oi Doc,

Depende do seu objetivo, desculpe, mas não está claro para mim. Você está detectando uma cruz de 2 emas, mas quando você quer detectar esta cruz, em cada barra?

É claro que com o código como ele está, ele detecta isso em cada tique.

 
angevoyageur:

Oi Doc,

Depende do seu objetivo, desculpe, mas não está claro para mim. Você está detectando uma cruz de 2 emas, mas quando você quer detectar esta cruz, em cada barra?

Claro que com o código como ele está, ele detecta isso em cada carrapato.

Boa noite, Alain,

ea deve verificar cada tick (como faz) mas mudar 2 inteiros (touchx e previoustouchx) somente quando o sinal muda...assim:

exemplo:

1º tick

touchx =3; previoustouchx=-1 (-1 porque não há dados anteriores)

2o. tique

touchx =5; previoustouchx=3

3o. tique

touchx =5; previoustouchx=3

etc.