Print

Entra uma mensagem no log do Expert Advisor. Parâmetros podem ser de qualquer tipo.

void  Print(
   argument,     // primeiro valor
   ...           // próximos valores
   );

Parâmetros

...

[in]  Quaisquer valores separados por virgulas. O número de parâmetros não pode exceder 64.

Observação

Arrays não podem ser passados para a função Print(). Arrays devem ser passados elemento a elemento.

Dados do tipo double são mostrados com precisão de até 16 dígitos após o ponto decimal, e podem ser exibidos tanto na formato tradicional como em notação científica, dependendo de qual saída será mais compacta. Dados do tipo float são exibidos com 5 dígitos após o ponto decimal. Para imprimir números reais com uma outra precisão ou em um formato predefinido, use a função PrintFormat() .

Dados do tipo bool são exibidos como strings "true" ou "false". Datas são mostradas como YYYY.MM.DD HH:MM:SS. Para mostrar datas em um outro formato, use TimeToString(). Dados do tipo cor são retornados como string R,G,B ou como nome de cor, se esta cor estiver presente no conjunto de cores

A função Print() não funciona no durante a otimização no Testador de Estratégias.

Exemplo:

void OnStart()
  {
//--- Imprime o DBL_MAX usando Print(), isso é equivalente a PrintFormat(%%.16G,DBL_MAX)
   Print("---- como DBL_MAX aparece -----");
   Print("Print(DBL_MAX)=",DBL_MAX);
//--- Agora imprime o número DBL_MAX usando PrintFormat()
   PrintFormat("PrintFormat(%%.16G,DBL_MAX)=%.16G",DBL_MAX);
//--- Imprime no diário Experts
// Print(DBL_MAX)=1.797693134862316e+308
// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308
 
//--- Veja como um float é impresso
   float c=(float)M_PI// Nós devemos explicitamente converter para o tipo desejado
   Print("c=",c, "    Pi=",M_PI"    (float)M_PI=",(float)M_PI);
// c=3.14159    Pi=3.141592653589793    (float)M_PI=3.14159
   
//--- Mostra o que pode acontecer com operações aritméticas com tipos reais
   double a=7,b=200;
   Print("---- Antes de operações aritméticas");
   Print("a=",a,"   b=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Dividir a por b (7/200)
   a=a/b;
//--- Agora emula a restauração de um valor na variável b
   b=7.0/a; // É esperado que b=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 - mas ele difere
//--- Imprimi o novo valor calculado de b
   Print("----- Após as operações aritméticas");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Imprime no diário Experts
// Print(b)=200.0
// Print(DoubleToString(b,16))=199.9999999999999716 (veja que b não é mais igual a 200.0)   
 
//--- Cria um valor muito pequeno epsilon=1E-013
   double epsilon=1e-13;
   Print("---- Criando um valor muito pequeno");
   Print("epsilon=",epsilon); // Obter epsilon=1E-013
//--- Agora subtrai epsilon de b e novamente imprime o valor no diário Experts
   b=b-epsilon;
//--- Duas formas de uso
   Print("---- Depois de subtrair epsilon da variável b");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Imprime no diário Experts
// Print(b)=199.9999999999999  (agora o valor de b após subtrair epsilon não pode ser arredondado para 200)
// Print(DoubleToString(b,16))=199.9999999999998578
//    (agora o valor de b após subtrair epsilon não podem ser arredondado para 200)
  }

Também Veja

DoubleToString, StringFormat