MQL4MQL5 EA(エキスパートアドバイザー) 通知・表示
アラートウィンドウを出したい
結論:Alert() を使います。ポップアップの画面が開き、音も鳴ります。
考え方
Alert() に表示したい文字を渡すと、MT4・MT5 のアラート画面が開いて音が鳴ります。ここでは「価格が指定した値を上抜けた・下抜けたらアラートを出す」EA を例にしています。鳴りっぱなしにならないよう、ラインを越えた瞬間だけ1回鳴らします。
- 前回の価格と今回の価格を比べ、指定価格を「またいだ」ときだけを検出する
- またいだら Alert() に通貨ペア名・価格・方向を渡して表示する
- 前回の価格を保存しておき、次のティックで同じ比較をする
そのまま使えるコード
MetaEditor の「新規作成」で「エキスパートアドバイザ(テンプレート)」を選び、できたファイルの中身をすべてこのコードに置き換えてコンパイル(F7)します。ファイルは Experts フォルダに保存され、ナビゲーターからチャートにドラッグして使います。
MQL4・MQL5 共通
#property strict
// 指定した価格を上抜け・下抜けしたらアラートを出す EA
input double InpLevel = 150.00; // アラートを出す価格
double lastBid = 0;
int OnInit()
{
lastBid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
return INIT_SUCCEEDED;
}
void OnTick()
{
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
if(lastBid > 0)
{
if(lastBid < InpLevel && bid >= InpLevel)
Alert(_Symbol, " が ", DoubleToString(InpLevel, _Digits), " を上抜けました(現在 ", DoubleToString(bid, _Digits), ")");
if(lastBid > InpLevel && bid <= InpLevel)
Alert(_Symbol, " が ", DoubleToString(InpLevel, _Digits), " を下抜けました(現在 ", DoubleToString(bid, _Digits), ")");
}
lastBid = bid;
}MT4 版・MT5 版とも MetaEditor でコンパイル(エラー・警告なし)を確認済みです。実際の口座で使う前に、デモ口座やストラテジーテスターで動作を確かめてください。
カスタマイズのポイント
- Alert() にはカンマで区切って文字列・数値をいくつでも渡せます。数値は DoubleToString() で桁数をそろえると読みやすくなります。
- インジケーターで鳴らしたいときも、OnCalculate() の中で同じように Alert() を呼べます。
- スマホに知らせたいときは SendNotification()、メールなら SendMail() を Alert() の隣に足します。
注意点
- ストラテジーテスター(バックテスト)では Alert() の画面は表示されません。
- 条件を満たしている間ずっと Alert() を呼ぶと、ティックごとに何度も鳴ります。「変化した瞬間」や「1本の足で1回」に絞ります。












