Print

エキスパートアドバイザーログにメッセージを入力します。パラメータは任意の型です。

void  Print(
  argument,     // 初めの値
  ...          // 次の値
  );

パラメータ

...

[in]  コンマで区切られた任意の値。パラメータの数は 64 を超えることは出来ません。

注意事項

配列は Print() 関数には渡せません。配列は要素ごとに渡される必要があります。

double 型のデータは小数点以下最大 16 桁の精度で出力され、どちらの表記がよりコンパクトになるかに応じて、伝統的または科学形式で出力することが出来ます。float 型のデータは小数点以下 5 桁で出力されます。実数を異なる精度または事前定義された形式で出力するには PrintFormat()関数が使用されます。

bool 型のデータは「 true 」または 「 false 」のラインとして出力されます。日付は YYYY.MM.DD HH:MI:SS として出力されます。日付を別の形式で表示するには TimeToString() 関数が使用されます。カラー型のデータはR、G、Bの文字列、または、色がカラーセットに存在する場合は色名として出力されます。

Print() 関数はストラテジーテスターでの最適化中には使用できません。

例:

void OnStart()
 {
//--- DBL_MAX を Print() を使用して出力する。これは PrintFormat(%%.16G,DBL_MAX) と同等
  Print("---- how DBL_MAX looks like -----");
  Print("Print(DBL_MAX)=",DBL_MAX);
//--- DBL_MAX 数を PrintFormat() を使用して出力する
  PrintFormat("PrintFormat(%%.16G,DBL_MAX)=%.16G",DBL_MAX);
//--- エキスパート操作ログへ出力する
// Print(DBL_MAX)=1.797693134862316e+308
// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308
 
//--- float の出力され方を参照する
  float c=(float)M_PI; // 明示的にターゲット型にキャストする必要がある
  Print("c=",c, "    Pi=",M_PI, "    (float)M_PI=",(float)M_PI);
// c=3.14159    Pi=3.141592653589793    (float)M_PI=3.14159
 
//--- 実数型の算術演算で何が起こるかを表示する
  double a=7,b=200;
  Print("---- Before arithmetic operations");
  Print("a=",a,"   b=",b);
  Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- a を b で割る( 7 / 200 )
  a=a/b;
//--- B変数にて値を復元するエミュレートをする
  b=7.0/a; // b=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 が期待されるが、異なる
//--- b の新たに計算された値を出力する
  Print("----- After arithmetic operations");
  Print("Print(b)=",b);
  Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- エキスパート操作ログへ出力する
// Print(b)=200.0
// Print(DoubleToString(b,16))=199.9999999999999716 (b はすでに 200.0 と等しくない)  
 
//--- 常に小さな値を作成 epsilon=1E-013
  double epsilon=1e-13;
  Print("---- Create a very small value");
  Print("epsilon=",epsilon); // epsilon=1E-013 を取得
//--- b から epsilon を引き、値を再びエキスパート操作ログへ出力する
  b=b-epsilon;
//--- 2 つの方法を使用する
  Print("---- After subtracting epsilon from the b variable");
  Print("Print(b)=",b);
  Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- エキスパート操作ログへ出力する
// Print(b)=199.9999999999999  ( epsilon を差し引いた後の b の値は 200 に丸めることが出来ない)
// Print(DoubleToString(b,16))=199.9999999999998578
//    ( epsilon を差し引いた後の b の値は 200 に丸めることが出来ない)
 }

参照

DoubleToStringStringFormat