Alert/Comment/Print 関数
プログラムのテストや、ユーザへの通知のために画面上にテキストを表示したい場合は、下記の関数を使用できます。
- Alert 関数 … アラートボックスでテキスト表示する(Strategy Tester での実行時は無視されます)
- Comment 関数 – チャートの左上にテキスト表示する
- Print 関数 – Terminal ビュー (Ctrl+T) の Expert タブ内にテキスト表示する
メソッドごとに出力先は異なりますが、どのメソッドも渡されたパラメータの型によって適切な形式でテキスト表示してくれます。
string s = "Hello";
bool b = true;
int i = 100;
float f = 0.123456789f;
double d = 0.123456789;
datetime dt = TimeLocal();
color cl = C'0xFF,0xC0,0x80';
Alert(s); //=> Hello
Alert(b); //=> true
Alert(i); //=> 100
Alert(f); //=> 0.12346
Alert(d); //=> 0.123456789
Alert(dt); //=> 2014.12.19 23:59:59
Alert(cl); //=> 255,192,128
パラメータは複数渡すことができ、それぞれが連結されて表示されます。
Print("value = ", value); //=> "value = 100"
出力時に改行を入れたい場合は、文字列中に改行コード (\n
) を含めれば OK です。
Comment("AAA\nBBB\nCCC");
メッセージボックスを表示する
MessageBox 関数を使用すると、Yes/Cancel ボタンなどを表示し、ユーザの意思を確かめることができます。
Comment 関数を使いやすくする
チャートの左上にテキスト表示する Comment
関数は、続けて呼び出すと、最後に指定したテキストで内容が上書きされてしまいます。
次のような関数を用意しておけば、過去に出力したメッセージを残しながら追加出力していくことができます。
void Debug(string msg) {
static string lines = "";
lines = msg + "\n" + lines;
Comment(lines);
}
上記の Debug
関数は、呼び出すごとにどんどんメッセージの行数が増えていってしまいますが、出力を最大 10 行に抑えたい場合などは、例えば以下のようにします。
#include <Arrays\ArrayString.mqh>
void Debug(string msg) {
static const int MAX_LINES = 10;
static CArrayString lines;
int len = lines.Total();
if (len > MAX_LINES - 1) {
lines.Delete(0);
--len;
}
lines.Add(msg);
string text = "";
for (int i = len; i >= 0; --i) {
text += lines.At(i) + "\n";
}
Comment(text);
}
関連記事
- MetaTrader/MQL: インジケーターの実装例 - 大きなシンボル名を表示する
- MetaTrader/MQL: デバッグ用のマクロを定義する (#define)
- MetaTrader/MQL: 価格情報を取得する (SymbolInfoTick, CopyRates)
- MetaTrader/MQL: 描画オブジェクトの基本 (ObjectCreate, ObjectDelete, ObjectSetXxx)
- MetaTrader/MQL: OrderSend で決済注文を出す(ポジションのクローズ)(MT5)
- MetaTrader/MQL: ヘッジアカウントとネットアカウントの違いを理解する
- MetaTrader/MQL: OrderSend で成行注文を出す (MT5)