アラートを表示したい!

アラートって何?

MetaTrader4のアラートとは、音と共にメッセージ付きのポップアップウィンドウを表示する機能の事を指します。チャートを監視しながら何か別の作業を行う際には必須機能といっても良いくらい、とても便利な機能ですね。このアラート機能ですが、MQL4で作成したプログラムであれば任意のタイミングで表示することが出来ます。

今回はMQL4のプログラムにおけるアラートの表示方法と、アラートに関する様々な機能を紹介していきますね。

アラートを表示するAlert関数

アラートを表示するには、MQL4で提供されているAlert関数を使用します。

void Alert(
    argument,     // first value
    ...           // other values
);

引用元:Alert – MQL4 Reference

引数

Alert関数の引数はポップアップウィンドウに表示するメッセージ内容となります。可変長引数のため1個から最大64個まで引数を指定することが可能、複数の引数を指定した場合はそれぞれの内容が連結されたメッセージが表示されます。引数の型はstring型をはじめ、bool型やdatetime型、さらにはcolor型まで指定可能です。

戻り値

Alert関数に戻り値はありません。

使用例

1. string型の引数を1つ指定

string msg = "USDJPY,H1: Alert Message.";
Alert(msg);
実行結果
USDJPY,H1: Alert Message.

Alert関数にstring型の引数を1つ指定した場合は、指定した文字列がそのままポップアップウィンドウに表示されます。

2. string型の引数を複数指定

string msg1 = Symbol();
string msg2 = "M" + IntegerToString(Period());
string msg3 = "Alert Message.";
Alert(msg1, ",", msg2, ": ", msg3);
実行結果
EURUSD,M5: Alert Message.

string型の引数を複数(上記例は3つ)指定した場合、それぞれ指定した文字が連結して表示されます。区切り文字は設定されないので、連結部分に空白やカンマを入れたい場合は引数を渡す際に考慮する必要があります。

3. bool型の引数を指定

bool result = true;
Alert("Result is ", result, ".");
実行結果
Result is true.

bool型の引数を指定を指定した場合、自動的に「true」「false」という文字列に変換して表示されます。本来bool型を文字列として扱うためにはstring型への変換が必要となりますが、Alert関数の引数ではそのままbool型を渡すことが出来る、ということですね。

4. datetime型の引数を指定

datetime now = TimeCurrent();
Alert("Current time is ", now, ".");
実行結果
Current time is 2018.07.01 12:34:56.

datetime型もbool型と同じく引数としてそのまま渡すことが可能です。日付の表示形式は「YYYY.MM.DD HH:MI:SS」となり、これ以外の表示形式で日付を表示したい場合はTimeToString関数を使用して事前に表示形式を整えてからAlert関数の引数に渡すことになります。

5. color型の引数を指定

color bg_color = (color) ChartGetInteger(ChartID(), CHART_COLOR_BACKGROUND);
Alert("Chart background color is ", bg_color, ".");
実行結果
Chart background color is clrBlack.

color型を引数として渡した場合、その色がカラー定数として定義されている色であればカラー定数の定数名を表示、それ以外の場合はRGB値で表示されます。カラー定数とは「clr」から始まる定数の事で、MQL4では全132色カラー定数が用意されています。カラー定数の詳細についてはこちらもご参照下さい。

6. 改行コードを含む引数を指定

Alert("one", "¥n", "two", "¥n", "three");
実行結果
one
two
three

アラートのメッセージは改行して複数行表示させることも可能で、改行を行うには引数で改行コード(¥n)を指定します。ただし、ポップアップウィンドウ内に表示される過去のアラートメッセージの履歴は複数行には対応していないため、改行したメッセージの場合は1行目のみ表示されることになります。

アラート音の変更

アラート音を変更するには、MetaTrader4の上部メニューにある「ツール」→「オプション」を選択してオプション画面を表示し、その中にある「音声設定」タブで設定を行います。この「音声設定」タブではMetaTrader4で使用している様々な音の変更が可能となり、一覧の中にある「Alert」という項目のファイル名を変更する事でアラート時の音を変更することが出来ます。ただしこの変更はMetaTrader4の全てのアラート音が対象となり、プログラムごとにアラート音を変更することは出来ません。

日本語メッセージの表示

Alert関数の引数に日本語(マルチバイト文字)を指定した場合、文字化けが発生するため内容を正しく表示することが出来ません。MetaTrader4のアップデートにより将来的には日本語にも対応するかもしれませんが、現時点の最新ビルド(Build1126)では引数に指定する文字は半角英数字のみで構成するようにしましょう。

バックテスト時のアラート表示

Alert関数を実装したEAやインジケーターをバックテストで動作させた場合、アラートの条件を満たしても音が鳴らず、ポップアップウィンドウも表示されません。しかし、バックテストのログ(操作履歴)にはアラートが実行されたという内容が、本来表示されるべきメッセージ内容と共に残ります。そのため、バックテストによるアラート表示の確認はログを確認することになります。

まとめ

アラートを表示するにはAlert関数を使用する
引数に指定した内容がポップアップウィンドウに表示される
引数を複数設定した場合は内容を連結して表示する
引数の型はある程度柔軟に対応している
複数行のメッセージ表示も可能
アラート音の変更は可能だがプログラムごとの変更は不可
日本語メッセージは表示不可
バックテストでは動作しないがログによる確認は可能

参考URL

Alert – MQL4 Reference
https://docs.mql4.com/common/alert