Problèmes de vérification des échanges ouverts - page 3

 
extern int     iOpenHour                = 6;

int start()
  {
                                                            
int b, scannedhour;
datetime bartime;
double dibsclose, dibsopen, prevdayrange[4];       //  prevdayrange Array Categorys ( 1  EURUSD, 2 GBPUSD, 3 USDCHF, 4 USDJPY )

//----------------------------------------------------------------------------------------------
//        EURUSD PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("EURUSD", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("EURUSD", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen     = iOpen("EURUSD", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[1] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement
    

//----------------------------------------------------------------------------------------------
//        GBPUSD PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("GBPUSD", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("GBPUSD", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen    = iOpen("GBPUSD", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[2] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement



//----------------------------------------------------------------------------------------------
//        USDCHF PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("EURUSD", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("USDCHF", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen     = iOpen("USDCHF", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[3] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement



//----------------------------------------------------------------------------------------------
//        USDJPY PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("USDJPY", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("USDJPY", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen     = iOpen("USDJPY", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[4] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement


//----------------------------------------------------------------------------------------------



Comment("EURUSD RANGE=", prevdayrange[1],        //Display Ranges of each pair
        "GBPUSD RANGE=", prevdayrange[2],
        "USDCHF RANGE=", prevdayrange[3],
        "USDJPY RANGE=", prevdayrange[4]);      


   return(0);
  }

Ok, je l'ai corrigé pour que le tableau prevdayrange soit le seul tableau. Maintenant, pour une raison quelconque, la section USDJPY du code ne fonctionne pas. C'est la même chose que les 4 autres instructions avec la paire modifiée dans les iopen's et la valeur correcte du tableau...

Voici ce qu'il fait ---> http://clip2net.com/s/13WDY

Comment mettre des espaces dans la fonction de commentaire et comment faire pour qu'elle s'imprime sur la ligne suivante ?

 
dazamate:

Ok, je l'ai corrigé pour que le tableau prevdayrange soit le seul tableau. Maintenant, pour une raison quelconque, la section USDJPY du code ne fonctionne pas. C'est la même chose que les 4 autres instructions avec la paire changée dans les iopen's et la valeur correcte du tableau...

Voici ce qu'il fait ---> http://clip2net.com/s/13WDY

Comment mettre des espaces dans la fonction Comment et comment faire en sorte qu'elle s'imprime sur la ligne suivante ?


Le premier élément d'un tableau est 0, si un tableau a 4 éléments, le dernier sera 3 et non 4 ;-) https://docs.mql4.com/basis/variables

Commentaire()

Comment("This adds some spaces ", "   ", "this adds a carriage return", "\n");
 

Bon, ce code fait à peu près ce qu'il est censé faire, sauf que lorsqu'une nouvelle bougie de 6:00 s'ouvre, il ne met pas à jour les informations. Si la bougie actuelle est une bougie de 6:00, je veux qu'il scanne cette barre ouverte et retourne 24 barres en arrière et scanne cette barre ouverte et fasse tous les calculs et si la barre actuelle n'est pas une barre de 6:00, alors il continue à reculer d'une barre jusqu'à ce qu'il trouve la dernière bougie de 6:00. Il semble que le retour en arrière soit correct mais il ne semble pas aimer que la bougie actuelle soit la 6:00. Je n'arrive pas à comprendre. Les légendes peuvent-elles repérer le problème ?


Le code devient trop important pour être publié ici, j'ai donc dû télécharger le code source.

Dossiers :
hothand.mq4  11 kb
 
dazamate:

Il semble que le retour en arrière soit correct mais il ne semble pas aimer que la bougie actuelle soit la 6:00. Je n'arrive pas à comprendre. Les légendes peuvent-elles identifier le problème ?


Est-ce que vous utilisez le testeur de stratégie ? si c'est le cas....

WHRoeder 2011.07.18 18:30

Limitation du testeur: Vous ne pouvez pas obtenir les données de la barre zéro dans le testeur pour d'autres horizons temporels ou paires. Essayez :

 

Non, Raptor, c'était sur une carte en direct. Je dois changer ?


for(b=0; b<=24; b++) to for(b=-1; b<=24; b++)
Je pense juste à voix haute, je ne suis pas sûr que cela règle quoi que ce soit.
 
dazamate:

Non, Raptor, c'était sur une carte en direct. Je dois changer ?


Je pense juste à voix haute, je ne suis pas sûr que cela règle quoi que ce soit.
Ah, OK, je vais regarder à nouveau votre code. . .
 
Je vais tester votre code au prochain changement d'heure car je ne vois rien d'évident... Êtes-vous sûr d'avoir vérifié à 6 heures du matin, heure du serveur ? L'heure locale du PC n'est pas nécessairement la même que l'heure du serveur, c'est l'heure du serveur qui est utilisée dans votre code et sur vos graphiques.
 

Tout semble fonctionner correctement, mais la barre de 6 heures ne sera pas détectée si elle ne se trouve pas derrière la barre actuelle, si cela a un sens.


Merci pour votre temps Raptor

 
dazamate:

Tout semble fonctionner correctement, mais la barre de 6 heures ne sera pas détectée si elle ne se trouve pas derrière la barre actuelle, si cela a un sens.


Merci pour votre temps Raptor

Oui, je pense que je comprends ce que vous dites, il ne se met pas à jour lorsque l'heure passe de 05:59 à 06:00 ....

J'utilise MBT pour les tests et l'heure du serveur pour la barre H1 actuelle est 04:00, j'ai donc réglé iOpenHour sur 5, voyons ce qui se passe dans 20 minutes.

 

OK, j'ai le même problème, aucune mise à jour lorsque la bougie actuelle s'est ouverte à 05:00 . . . intéressant.

Raison: