trouver la date la plus proche - page 3

 
dr.house7:

Désolé mais que vouliez-vous dire par "ces conditions" ?

Le manque de temps.

D'ailleurs, j'ai décidé de prendre le temps de le tester, voici une solution.

   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:

Le manque de temps.

Au fait, j'ai décidé de prendre du temps et de le tester, voici 1 solution.


Je l'ai testé pendant un certain temps et semble fonctionner correctement.

Vous m'avez fait gagner du temps, j'ai une dette envers vous... merci beaucoup !

Bonne journée.

correction

désolé mais ça ne fonctionne pas correctement, beaucoup de fois la valeur réelle est totalement fausse comme le gel et parfois la valeur précédente devient la valeur réelle :(

 
dr.house7:


Je l'ai testé pendant un moment et il semble fonctionner correctement.

Vous m'avez fait gagner du temps, j'ai une dette envers vous... merci beaucoup !

Je vous souhaite une bonne journée.

correction

Désolé mais cela ne fonctionne pas correctement, beaucoup de fois la valeur réelle est totalement fausse comme le gel et parfois la valeur précédente devient la valeur réelle :(


Le dernier code que je fournis devrait fonctionner. Pouvez-vous s'il vous plaît poster votre code.

 
angevoyageur:


Le dernier code que je fournis devrait fonctionner. Pouvez-vous s'il vous plaît poster votre code.

Les problèmes surviennent lorsque dans la même barre de minutes, différentes lignes de touche sont impliquées.

 
est évident par exemple lorsque vous backtest EURUSD 10 jan 2014 à 16:30 sur chaque tick mode M1
 

Est-ce que c'est difficile ?

OMG

 

Existe-t-il une solution simple ?

Devrais-je utiliser arraymaximum à la place ?

Merci ;)

 

Cher Alain,

Je décide d'opter pour une nouvelle voie, je supprime la boucle et j'essaie d'obtenir quelque chose d'avant correct.

maintenant touchx(c'est le toucher actuel) est correct, chaque tick change correctement...par contre previoustouchx(c'est le toucher précédent) après le deuxième tick devient faux (car il prend la même valeur que le courant)...

Comment puis-je procéder ?

merci, bonne soirée

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;
           }        
          }
Dossiers :
mecca.mq5  14 kb
 
dr.house7:

Cher Alain,

Je décide d'opter pour une nouvelle voie, je supprime la boucle et j'essaie d'obtenir quelque chose d'avant correct.

maintenant touchx(c'est le toucher actuel) est correct, chaque tick change correctement...par contre previoustouchx(c'est le toucher précédent) après le deuxième tick devient faux (car il prend la même valeur que le courant)...

Comment puis-je procéder ?

merci, bonne soirée

doc

Salut Doc,

Cela dépend de votre objectif, désolé mais ce n'est pas clair pour moi. Vous détectez le croisement de 2 emas, mais quand voulez-vous détecter ce croisement, sur chaque barre ?

Bien sûr avec le code tel qu'il est, il le détecte à chaque tick.

 
angevoyageur:

Bonjour Doc,

Cela dépend de votre objectif, désolé mais ce n'est pas clair pour moi. Vous détectez le croisement de 2 emas, mais quand voulez-vous détecter ce croisement, sur chaque barre ?

Bien sûr avec le code tel qu'il est, il le détecte à chaque tick.

Bonsoir Alain,

L'ea devrait vérifier chaque tick (comme il le fait) mais changer 2 entiers (touchx et previoustouchx) seulement quand le signal change...comme ceci :

exemple :

1er tick

touchx =3 ; previoustouchx=-1 (-1 car il n'y a pas de données précédentes)

2ème tick

touchx =5 ; previoustouchx=3

3ème tic-tac

touchx =5 ; previoustouchx=3

etc.