Print

Inserisce un messaggio nel registro Expert Advisor. I parametri possono essere di qualsiasi tipo.

void  Print(
   argument,     // primo valore
   ...           // prossimo valore
   );

Parametri

...

[in] Tutti i valori separati da virgole. Il numero di parametri non può superare 64.

Nota

Gli array non possono essere passati alla funzione Print(). Gli array devono essere inseriti elemento per elemento.

I dati di tipo double vengono indicati con la precisione di un massimo di 16 cifre dopo la virgola decimale, e possono essere emessi in output sia in formato scientifico che tradizionale, a seconda di quale entry sarà piu compatta. I dati di tipo float sono output con 5 cifre dopo la virgola decimale. Per emettere in output i numeri reali con un altra precisione o in un formato predefinito, utilizzare la funzione PrintFormat().

I dati di tipo bool vengono emessi come righe "true" o "false". Le date vengono visualizzati come AAAA.MM.GG. HH:MI:SS. Per visualizzare i dati in un altro formato, utilizzare TimeToString(). Dati del tipo di colore vengono restituiti sia come righe R,G,B o come nome di colore, se questo colore è presente nel set di colori.

La funzione Print() non funziona durante l'ottimizzazione nel Tester di strategia.

Esempio:

voidOnStart()
  {
//--- Da in output DBL_MAX usando Print(), questo è equivalenta a PrintFormat(%%.16G,DBL_MAX)
   Print("---- come appaere DBL_MAX -----");
   Print("Print(DBL_MAX)=",DBL_MAX);
//--- Ora da in output un numero DBL_MAX usando PrintFormat()
   PrintFormat("PrintFormat(%%.16G,DBL_MAX)=%.16G",DBL_MAX);
//--- Output all' Experts journal
// Print(DBL_MAX)=1.797693134862316e+308
// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308
 
//--- Vedi come il float è dato in output
   float c=(float)M_PI// Dobbiamo esplicitamente castarlo al tipo target
   Print("c=",c, "    Pi=",M_PI"    (float)M_PI=",(float)M_PI);
// c=3.14159    Pi=3.141592653589793    (float)M_PI=3.14159
   
//--- Mostra cosa può accadere con le operazioni aritmetiche con tipi reali
   double a=7,b=200;
   Print("---- Prima delle operazioni aritmetiche");
   Print("a=",a,"   b=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Divide a per b (7/200)
   a=a/b;
//--- Ora emula il ripristino di un valore della variabile b
   b=7.0/a; // It is expected that b=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 - but it differs
//--- Da in output il nuovo valore calcolato di b
   Print("----- Dopo le operazioni aritmetiche");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Output all' Experts journal
// Print(b)=200.0
// Print(DoubleToString(b,16))=199.9999999999999716 (vedi che b non è più uguale a 200.0)   
 
//--- Crea valore espilon molto piccolo=1E-013
   double epsilon=1e-13;
   Print("---- Crea un valore molto piccolo");
   Print("epsilon=",epsilon); // Ottiene epsilon=1E-013
//--- Ora sottrae epsilon da B e di nuovo da in output il valore al journal Experts
   b=b-epsilon;
//--- Usa due modi
   Print("---- Dopo aver sottratto epsilon dalla variabile b");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Output all' Experts journal
// Print(b)=199.9999999999999  (ora il valore di b sopo aver sottratto epsilon non può essere arrotondato a 200)
// Print(DoubleToString(b,16))=199.9999999999998578
//    (ora il valore di b dopo aver sottratto epsilon non può essere arrotondato a 200)
  }

Vedi anche

DoubleToString, StringFormat