機能
Print関数はエキスパートアドバイザータブのログ出力欄にメッセージを入力します
<書式>
void Print( argument, // 初めの値 … // 次の値 ); |
引数
引数は任意の値を64を超えない範囲で含めることができます。
戻り値
なし
備考
配列は Print() 関数には渡せません。配列は要素ごとに渡される必要があります。
double 型のデータは小数点以下最大 16 桁の精度で出力され、どちらの表記がよりコンパクトになるかに応じて、伝統的または科学形式で出力することが出来ます。float 型のデータは小数点以下 5 桁で出力されます。実数を異なる精度または事前定義された形式で出力するには PrintFormat()関数が使用されます。
bool 型のデータは「 true 」または 「 false 」のラインとして出力されます。日付は YYYY.MM.DD HH:MI:SS として出力されます。日付を別の形式で表示するには TimeToString() 関数が使用されます。カラー型のデータはR、G、Bの文字列、または、色がカラーセットに存在する場合は色名として出力されます。
Print() 関数はストラテジーテスターでの最適化中には使用できません。
MQL5リファレンスより
異なるデータ型が多数ある状態をログ出力させたいときは、記述が猥雑になり、エラーを発生させがちです。
そういう時はprintf関数、PrintFormat関数を使う方が懸命でしょう。
同じような理屈で、チャート上に多数の情報をコメント出力する場合は、Comment関数で、ぐちゃくちゃ整合性をとろうとするより、StringFormat関数で文字列を整形した文字列型変数をComment関数にあてがうのがベターかな、と個人的には思います。
サンプルコード
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
//フィボナッチ数列の計算終点
int countFibo=15;
//計算に必要な変数の宣言
int iCounter=0,first=0,second=1;
//フィボナッチを格納する変数
int nowFiboNum;
do
{
nowFiboNum=first+second;
Print("iCounter = ",iCounter," フィボナッチ数 = ",nowFiboNum," flag=",IsStopped());
first=second;
//firstにsecondの値を代入
second=nowFiboNum;
//secondに nowFiboNumの値を代入
iCounter++;//1増加 (この演算子がない場合、無限ループが発生)
}
while(iCounter<countFibo && !IsStopped());
//15未満で、終了フラグが出ていない間はループする
}//do
//+------------------------------------------------------------------+
IsStopped()関数については↓をご覧ください
OnStart関数については↓をご覧ください。
コメント