Questions des débutants MQL5 MT5 MetaTrader 5 - page 967

 

Comment obtenir le prix d'ouverture d'une barre et si je n'arrive pas à obtenir le prix d'ouverture à sortir ?

J'ai esquissé quelques options. Mais peut-être existe-t-il un code meilleur et plus correct ?

   if(iOpen(Symbol(),Period(),0)==0)
     {
      return;
     }
     {
      if(iOpen(Symbol(),Period(),0)!=0)
        {
         double   open=iOpen(Symbol(),Period(),0);
        }
     }
  if(iOpen(Symbol(),Period(),0)==0.0)
     {
      return;
     }
     {
      if(iOpen(Symbol(),Period(),0)!=0.0)
        {
         double   open=iOpen(Symbol(),Period(),0);
        }
     } 
  if(iOpen(Symbol(),Period(),0)==0 && iOpen(Symbol(),Period(),0)==0.0)
     {
      return;
     }
     {
      if(iOpen(Symbol(),Period(),0)!=0 && iOpen(Symbol(),Period(),0)!=0.0)
        {
         double   open=iOpen(Symbol(),Period(),0);
        }
     }     
 
ilvic:

Comment obtenir le prix d'ouverture d'une barre et si je n'arrive pas à obtenir le prix d'ouverture à sortir ?

J'ai esquissé quelques options. Mais peut-être existe-t-il un code meilleur et plus correct ?

Les fonctions iXXXX n'ont de sens que si vous exécutez une requête unique, sans boucle et sans appeler d'autres fonctions iXXXX.

Si vous n'avez besoin d'obtenir le prix d'ouverture qu'une seule fois, consultez l'aided'iOpen:

Valeur de retour

*** 0 en cas d'erreur.

Vous devez donc demander le prix et vérifier s'il est égal à zéro : s'il n'est pas égal à zéro, le prix est reçu, s'il est égal à zéro, c'est une erreur.

double open=iOpen(Symbol(),Period(),0);
if(open==0.0)
   retutn;
 
Pouvez-vous me dire comment insérer le paramètre 9 avec une grille (#CL) pour que le compilateur ne génère pas d'erreur ?
enum Symboll_
  {
   AUDUSD=0,
   NZDUSD=1,
   USDCAD=2,
   USDCHF=3,
   USDJPY=4,
   EURJPY=5,
   EURUSD=6,
   GBPUSD=7,
   #CL   =8
  };
 
Vladimir Karputov:

Les fonctions iXXXX n'ont de sens que si vous exécutez une demande unique, sans cycles et sans appeler d'autres fonctions iXXXX.

Si vous n'avez besoin d'obtenir le prix d'ouverture qu'une seule fois, consultez l'aideiOpen:

Valeur de retour

*** 0 en cas d'erreur.

Vous devez donc interroger le prix et vérifier qu'il est égal à zéro : s'il n'est pas égal à zéro, le prix est reçu, s'il est égal à zéro, c'est une erreur.

Merci. Une dernière question. Devons-nous utiliser des parenthèses dans ce code ou cela ne fait-il aucune différence ?

   double   open=iOpen(Symbol(),Period(),0);
   if(open==0.0)
     {
      return;
     }
 
xxz:
Pouvez-vous me dire comment insérer le paramètre 9 avec une grille (#CL) pour que le compilateur ne génère pas d'erreur ?

Comme ça :

   enum MySymbol
     {
      symbol_0=0,// AUDUSD
      symbol_1=1,// NZDUSD
      symbol_2=2,// USDCAD
      symbol_3=3,// USDCHF
      symbol_4=4,// USDJPY
      symbol_5=5,// EURJPY
      symbol_6=6,// EURUSD
      symbol_7=7,// GBPUSD
      symbol_8=8,// #CL
     };
 
ilvic:

Merci. Une dernière question. Faut-il utiliser des parenthèses dans ce code ou cela ne fait-il aucune différence ?

   double   open=iOpen(Symbol(),Period(),0);
   if(open==0.0)
      return;

Il fera l'affaire. En général, les parenthèses sont destinées à un groupe d'actions. S'il n'y a qu'une seule action, ils ne sont d'aucune utilité.

int n;
double y;
if(бла-бла-бла)
         n = бла-бла;
else
  {
         n = бла-бла;
         y = бла;
  )
 
Vladimir Karputov:

Et voilà :

Merci beaucoup !

Parce que j'ai essayé comme ça et ça n'a pas marché :

  enum  Symboll_
  {
   SIM_0,  //AUDUSD
   SIM_1,  //NZDUSD
   SIM_2,  //USDCAD
   SIM_3,  //USDCHF
   SIM_4,  //USDJPY
   SIM_5,  //EURJPY
   SIM_6,  //EURUSD
   SIM_7   //#CL
  };  
 
xxz:

Merci beaucoup !

Parce que j'ai essayé comme ça et ça n'a pas marché :

Ou comme ça :

   enum MySymbol
     {
      symbol_0=0,// AUDUSD
      symbol_1=1,// NZDUSD
      symbol_2=2,// USDCAD
      symbol_3=3,// USDCHF
      symbol_4=4,// USDJPY
      symbol_5=5,// EURJPY
      symbol_6=6,// EURUSD
      symbol_7=7,// GBPUSD
      symbol_8=8,// #CL
     };
   string my_symbol[9]=
     {
      "AUDUSD",
      "NZDUSD",
      "USDCAD",
      "USDCHF",
      "USDJPY",
      "EURJPY",
      "EURUSD",
      "GBPUSD",
      "#CL"
     };
 
Vladimir Karputov:

ou ceci :

C'est celui-là !

Dans ces variantes, il s'agissait soit d'un simple numéro de série, soit deSIM_1,...etc.

 
Lors du test d'un EA multi-devises, il y a un problème avec la taille du lot. J'ai un volume fixe de 0.03, mais pendant le test les ordres apparaissent avec un volume de 0.1. Immédiatement, un échec apparaît sur le graphique. C'est juste moi ?
Raison: