アラートって何?
MetaTrader4のアラートとは、音と共にメッセージ付きのポップアップウィンドウを表示する機能の事を指します。チャートを監視しながら何か別の作業を行う際には必須機能といっても良いくらい、とても便利な機能ですね。このアラート機能ですが、MQL4で作成したプログラムであれば任意のタイミングで表示することが出来ます。
今回はMQL4のプログラムにおけるアラートの表示方法と、アラートに関する様々な機能を紹介していきますね。
アラートを表示するAlert関数
アラートを表示するには、MQL4で提供されているAlert関数を使用します。
void Alert( argument, // first value ... // other values );
引数
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やインジケーターをバックテストで動作させた場合、アラートの条件を満たしても音が鳴らず、ポップアップウィンドウも表示されません。しかし、バックテストのログ(操作履歴)にはアラートが実行されたという内容が、本来表示されるべきメッセージ内容と共に残ります。そのため、バックテストによるアラート表示の確認はログを確認することになります。
まとめ
参考URL
Alert – MQL4 Reference
https://docs.mql4.com/common/alert