Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 967

 

Wie bekomme ich den Eröffnungskurs eines Balkens richtig und wenn ich den Eröffnungskurs nicht bekomme, zu beenden?

Ich habe ein paar Optionen skizziert. Aber vielleicht gibt es einen besseren und korrekteren Code?

   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:

Wie bekomme ich den Eröffnungskurs eines Balkens richtig und wenn ich den Eröffnungskurs nicht bekomme, zu beenden?

Ich habe ein paar Optionen skizziert. Aber vielleicht gibt es einen besseren und korrekteren Code?

Die iXXXX-Funktionen sind nur dann sinnvoll, wenn Sie eine einmalige Abfrage durchführen, ohne Schleifen und ohne weitere iXXXX-Funktionen aufzurufen.

Wenn Sie den Eröffnungskurs nur einmal benötigen, lesen Sie die Hilfevon iOpen:

Rückgabewert

*** 0 im Falle eines Fehlers.

Sie müssen also den Preis abfragen und prüfen, ob er Null ist: Wenn er nicht Null ist, wird der Preis empfangen, wenn er Null ist, ist es ein Fehler.

double open=iOpen(Symbol(),Period(),0);
if(open==0.0)
   retutn;
 
Können Sie mir bitte sagen, wie ich den Parameter 9 mit einem Gitter (#CL) einfügen kann, damit der Compiler keinen Fehler erzeugt?
enum Symboll_
  {
   AUDUSD=0,
   NZDUSD=1,
   USDCAD=2,
   USDCHF=3,
   USDJPY=4,
   EURJPY=5,
   EURUSD=6,
   GBPUSD=7,
   #CL   =8
  };
 
Vladimir Karputov:

Die iXXXX-Funktionen sind nur dann sinnvoll, wenn Sie eine einmalige Abfrage durchführen, ohne Zyklen und ohne weitere iXXXX-Funktionen aufzurufen.

Wenn Sie den Eröffnungskurs nur einmal benötigen, lesen Sie dieiOpen-Hilfe:

Rückgabewert

*** 0 im Falle eines Fehlers.

Sie müssen also den Preis abfragen und prüfen, ob er gleich Null ist: Wenn er nicht gleich Null ist, ist der Preis eingegangen, wenn er gleich Null ist, ist es ein Fehler.

Ich danke Ihnen. Eine weitere Frage. Sollten wir in diesem Code Klammern verwenden oder macht das keinen Unterschied?

   double   open=iOpen(Symbol(),Period(),0);
   if(open==0.0)
     {
      return;
     }
 
xxz:
Können Sie mir bitte sagen, wie ich den Parameter 9 mit einem Gitter (#CL) einfügen kann, damit der Compiler keinen Fehler erzeugt?

Zum Beispiel so:

   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:

Ich danke Ihnen. Eine weitere Frage. Sollten in diesem Code Klammern verwendet werden oder macht es keinen Unterschied?

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

Das reicht aus. Im Allgemeinen sind Klammern für eine Gruppe von Aktionen vorgesehen. Wenn es nur eine Aktion gibt, sind sie nutzlos.

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

Das war's:

Herzlichen Dank!

Ich habe es nämlich so versucht, und es hat nicht funktioniert:

  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:

Herzlichen Dank!

Ich habe es nämlich so versucht, und es hat nicht funktioniert:

Oder so:

   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:

oder dies:

Das ist sie!

Bei diesen Varianten kam entweder nur eine Seriennummer oderSIM_1,...usw. heraus.

 
Beim Testen eines EA mit mehreren Währungen gibt es ein Problem mit der Losgröße. Ich habe eine feste 0,03, aber während des Tests erscheinen die Aufträge mit einem Volumen von 0,1. Sofort erscheint ein Fehler auf der Karte. Geht es nur mir so?
Grund der Beschwerde: