Fragen von einem "Dummy" - Seite 24

 
tol64:
Kann ich ein einfaches Beispiel haben?
Zeigen Sie den Code an, in welcher Zeile die Warnung ausgegeben wird und welche Typen er beschimpft.
 
sergeev:
den Code zeigen, in welcher Zeile die Warnung ausgegeben wird und welche Typen verpönt sind.

void OnStart()
  {
//--- выведем всю информацию, доступную из функции AccountInfoInteger()
   printf("ACCOUNT_LOGIN =  %d",AccountInfoInteger(ACCOUNT_LOGIN));
   printf("ACCOUNT_LEVERAGE =  %d",AccountInfoInteger(ACCOUNT_LEVERAGE));
   bool thisAccountTradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_ALLOWED);
   bool EATradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_EXPERT);

   ENUM_ACCOUNT_TRADE_MODE tradeMode=AccountInfoInteger(ACCOUNT_TRADE_MODE);           // На этой строке: Строка 25 Столбец 40 и Столбец 78
   ENUM_ACCOUNT_STOPOUT_MODE stopOutMode=AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);   // И на этой     : Строка 26 Столбец 44 и Столбец 86

...
Im Code hervorgehoben und kommentiert.
 
tol64:

Im Code hervorgehoben und kommentiert.

   ENUM_ACCOUNT_TRADE_MODE tradeMode=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
   ENUM_ACCOUNT_STOPOUT_MODE stopOutMode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);

 
uncleVic:

Ich danke Ihnen. Ich möchte auch eine Frage zur Einstellung des Stop-Out-Level-Modus stellen. Kann ich diesen Modus nur so erfahren, wie er vom Handelsserver eingestellt ist, oder kann ich ihn ändern?
 
tol64:
Ich danke Ihnen. Ich möchte auch eine Frage zur Einstellung des Stop-Out-Level-Modus stellen. Ich kann diesen Modus nur herausfinden, weil er vom Handelsserver eingestellt ist, oder kann ich ihn ändern?
Stop Out ist schreibgeschützt, Sie können es nicht einstellen. Und alles, womit die AccountInfo...()-Funktionen arbeiten, ist schreibgeschützt.
 
tol64:

Im Code hervorgehoben und kommentiert.

Vielen Dank, das Beispiel wurde korrigiert. Jetzt wird der Compiler bei diesem Beispiel keine Warnung mehr ausgeben.
 

Es stellt sich heraus, dass man überall dort, wo man bestimmte Daten/Eigenschaften lesen muss, die von uncleVic gezeigte Variante anwenden sollte:https://www.mql5.com/ru/forum/3775/page24#comment_84143

Wenn Sie dies zum Beispiel tun, was auf den ersten Blick logisch erscheint (und vom mql4-Übergang bekannt ist), wird der Compiler eine Warnung ausgeben:

   int val_x_dist;
   int val_y_dist;
   
   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   val_x_dist = ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   val_y_dist = ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

Um die Warnungen des Compilers loszuwerden, müssen Sie entweder dies tun:

   int val_x_dist;
   int val_y_dist;
   
   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   val_x_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   val_y_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

Oder wie Onkel Vic demonstriert hat, das heißt:

   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   ENUM_OBJECT_PROPERTY_INTEGER val_x_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   ENUM_OBJECT_PROPERTY_INTEGER val_y_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

Habe ich es richtig verstanden?

 
AUser:
Können Sie mir sagen, wie der Zufallszahlengenerator funktioniert und ob es eine Funktion gibt, um die Zahl auf gerade/ungerade Zahlen zu überprüfen? Über den Generator ist wünschenswert, Erklärung in der Sprache verständlich für Dummies))) Hilfe wird nicht verstanden))

Hier ist das einfachste Beispiel, wie man herausfinden kann, was eine bestimmte Funktion tut. Führen Sie das Skript aus und sehen Sie sich das Protokoll an.

void OnStart()
  {
   int x;
   
   x = MathRand();
   
   Print("x : ",x);
  }
 
#define Vrsn "0.01a"
#property version   Vrsn

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn);

die Vorlage wird als 0.tpl gespeichert

#define Vrsn "001a"

Die Vorlage wird unter dem Namen001a.tpl gespeichert, und das ist genau das, was Sie wollen.

Frage: Wie kann ich den Punkt vorher entfernen?

upgr wahrscheinlich genauer: Wie finde ich ein Zeichen in einer Zeichenkette?

upgr und eine weitere Verwirrung. Wenn es einen Punkt in

#define Vrsn "0.01a"

Wenn es einen Punkt gibt, ist es nicht nur das, was danach kommt, sondern auch das, was abgeflacht ist.

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn+Smbl_Crrnt);
Wenn StringToInteger bei der Kompilierung ausgelöst wird ...
 
Silent:

die Vorlage wird als 0.tpl gespeichert

Die Vorlage wird unter dem Namen001a.tpl gespeichert, und das ist genau das, was Sie wollen.

Frage: Wie kann ich den Punkt vorher entfernen?

upgr ist wahrscheinlich genauer: Wie findet man ein Zeichen in einer Zeichenkette?

Auch hier liegt ein Missverständnis vor. Wenn in

gibt es einen Punkt, so wird nicht nur das abgeschnitten, was nach ihm kommt, sondern auch das, was abgeflacht ist

warum? wenn vermutlich StringToInteger zur Kompilierzeit ausgelöst wird.

Alles, was auf die Festplatte geschrieben wird, wird zwangsläufig auf Unsinn und Bösartigkeit überprüft.

Wenn Sie eine Vorlage schreiben, sollte die Vorlage eine Datei mit der Erweiterung tpl sein, unabhängig davon, was der Benutzer wünscht. Aus diesem Grund wird der benutzerdefinierte Punkt im Namen herausgeschnitten.