MetaTrader 5 herunterladen

Print

Druckt eine Nachricht im Expertenjournal. Parameter können verschiedener Typs sein.

void  Print(
   argument,     // der erste Wert 
   ...           // folgende Werte
   );

Parameter

...

[in]  Jede Werte, getrennt durch Kommas. Parameterzahl kann nicht mehr als  64 sein.

Hinweis

Parameter können nicht in die Funktion Print() übertragen werden. Felder müssen elementenweise gedruckt werden.

Daten des Typs double werden mit 16 Dezimalzeichen ausgegeben., dabei können Daten im traditionellen oder im wissenschaftlichen Format ausgegeben werden - abhängig davon, welches Ausgabeformat am kompaktesten ist. Daten des Typs float werden mit 5 Dezimalzeichen ausgegeben. Für Ausgabe der reellen Zahlen mit anderer Genauigkeit oder im vorbestimmten Format muss die Funktion PrintFormat() verwendet werden.

Daten des Typs bool werden als Zeilen des Typs "true" oder "false" ausgegeben. Daten werden als YYYY.MM.DD HH:MI:SS ausgegeben . Für Ausgabe des Datums im anderen Format muss die Funktion TimeToString() verwendet werden. Daten des Typs color werden entweder als die Zeile R,G,B oder als Farbenname ausgegeben, wenn diese Farbe im Farbenbestand gibt.

Im Strategie-Tester im Optimierungsmodus wird die Print()-Funktion nicht ausgeführt.

Beispiel:

void OnStart()
  {
//--- Ausgeben DBL_MAX mit Print(), ist dies gleichbedeutend PrintFormat(%%.16G,DBL_MAX)
   Print("---- Wie DBL_MAX sieht aus -----");
   Print("Print(DBL_MAX)=",DBL_MAX);
//--- Jetzt geben wird DBL_MAX mit PrintFormat() aus
   PrintFormat("PrintFormat(%%.16G,DBL_MAX)=%.16G",DBL_MAX);
//--- Ausgabe in Expertenjournal
// Print(DBL_MAX)=1.797693134862316e+308
// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308
 
//--- Sehen wir wie Typ float ausgegeben wird
   float c=(float)M_PI// Wir müssen explizit auf das Zieltype umwandeln
   Print("c=",c, "    Pi=",M_PI"    (float)M_PI=",(float)M_PI);
// c=3.14159    Pi=3.141592653589793    (float)M_PI=3.14159
   
//--- Wir zeigen, was während den arithmetischen Operationen mit echten passieren kann
   double a=7,b=200;
   Print("---- vor den arithmetischen Operationen");
   Print("a=",a,"   b=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Wir dividieren a durch b (7/200)
   a=a/b;
//--- Wiederherstellung des Werts von b
   b=7.0/a; // Es wird erwartet, dass b=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 - aber es ist nicht so
//--- Wir geben den neu berechneten Wert von b
   Print("----- nach den arithmetischen Operationen");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Ausgabe in Expertenjournal
// Print(b)=200.0
// Print(DoubleToString(b,16))=199.9999999999999716 (Wir sehen dass b nicht gleich 200.0 ist)
 
//--- Erstellen wir einen sehr kleinen Wert epsilon=1E-013
   double epsilon=1e-13;
   Print("---- Erstellen wir einen sehr kleinen Wert");
   Print("epsilon=",epsilon); // Erhalten epsilon=1E-013
//--- Nun b weniger Epsilon - geben den Wert in Expertenjournal aus
   b=b-epsilon;
//--- Ausgeben durch zwei Methoden
   Print("---- Nach Subtraktion von epsilon aus b");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Ausgabe in Expertenjournal
// Print(b)=199.9999999999999  (Nun kann der Wert von b nach Subtraktion von epsilon nicht bis zu 200 gerundet werden)
// Print(DoubleToString(b,16))=199.9999999999998578
//    (Nun kann der Wert von b nach Subtraktion von epsilon nicht bis zu 200 gerundet werden)
  }

Sehen Sie auch

DoubleToString, StringFormat