![見出し画像](https://assets.st-note.com/production/uploads/images/163438230/rectangle_large_type_2_dc6af2e9f88d79fbd3ff508ffa690b92.png?width=1200)
MetaTraderからスマホに通知を送るには? スマホ版「MetaTrader」で試す
作成日:2024.11.27
更新日:2024.12.12
はじめに
前回は「Discord」で試しましたが、今回はスマホ版MetaTraderに通知を送ります。ここでは「MetaTrader」は「MT」と記載します。「MT4」「MT5」のようにバージョンを付けることもあります。
PC版MTからスマホ版MTへの通知は、お互いMTなので、MetaTraderプラットフォームとしては王道の方法なのかもしれません。
LINEやDiscordへの通知のときは、WebRequest関数を利用していたため、インジケーターからはメッセージを送信できませんでした。今回の方法では大丈夫です。SendNotificationという関数を利用します。
少し補足しておきます。MetaTraderは外部DLLの関数を呼び出すことができます。つまり「wininet.dll」から必要な関数を呼び出せば、WebRequest関数を使わずに同等の処理が可能です。この方法だと、LINEやDiscordでもインジケーターからメッセージを送信できます。
とは言え、今のところ時間をかけて作る気にはなっていません。EAがインジケーターを呼び出して通知できるからです。
今回で「MetaTraderからスマホに通知するには?」シリーズは終了しようと思っています。そこで有料となりますが、本記事の一番下に過去の記事の内容を含んだ通知関数のサンプルソースコードを提供しています。「LINE Notify」「LINE Messaging API」「Discord」「スマホ版MT」の4つにメッセージ送信可能です。ご参考にしていただければ幸いです。
MetaQuotes IDを介して通知
MetaTraderのプラットフォームでは、モバイルデバイスに「MetaQuotes ID」を付与してデバイスを識別します。MetaTraderは、このMetaQuotes IDを介して通知する機能を提供しています。
MetaQuotes ID は独自のユーザー ID で、モバイルデバイス上でMetaQuotes Software Corp.のサービスからのプッシュ通知やアプリケーションを受信可能にします。MetaQuotes ID はターミナルのモバイルバージョンをインストールするとユーザーに届けられます。
SendNotification関数は、MetaQuotes IDを持つモバイルデバイスにプッシュ通知することができます。MetaQuotes IDは、MetaTrader本体の設定で指定します。
事前準備
PC版MTとスマホ版MTが必要になります。予めアカウントを準備して、PCとスマホにインストールしてください。PC版MTをmacOSにインストールする方法は、こちらの記事を参考にしてください。
事前準備は、以下の2つになります。
通知先のスマホ版MTのMetaQuotes IDを調べる。
PC版MTでプッシュ通知機能を有効にして、通知先のMetaQuotes IDを指定する。
尚、MetaTraderは、「4」でも「5」でも構いません。異なったバージョン間でもプッシュ通知可能です。
MetaQuotes IDを調べる
Android版MT4を起動します。iPhone版での調べ方は、こちらを参考にしてください。
![](https://assets.st-note.com/img/1732584289-Wem43rnYUjMZgEKGi5RIc9By.jpg?width=1200)
画面の右下の吹き出しをタップします。Android版MT5の場合は、画面の右下の「メッセージ」をタップします。
![](https://assets.st-note.com/img/1732585184-C2LVleU3Q8jdZBShORYyTP6M.jpg?width=1200)
右上の「MQID」をタップします。
![](https://assets.st-note.com/img/1732586571-exAtOR8qMCpjvkHSGbcwfTLz.jpg?width=1200)
「MetaQuotes ID」が表示されます。これを控えておいてください。
PC版MTの設定
プッシュ通知機能を有効にして、通知先のMetaQuotes IDを指定します。
まず、PC版MT4を起動します。ここでは楽天MT4を使用しています。
![](https://assets.st-note.com/img/1732618457-Hv3fijqaEN1U59cX0T4ezDKP.png?width=1200)
![](https://assets.st-note.com/img/1732618522-MnTRqNm8HQaXOKfVdCsvryie.png?width=1200)
「ツール」→「オブション」メニューをクリックします。
![](https://assets.st-note.com/img/1732618624-m4glvTcxj9uKphUFrd0Gbyzq.png?width=1200)
「通知機能」タブをクリックします。
![](https://assets.st-note.com/img/1732618844-2aPSfR5d4QA6xIivVuoUm0wp.png?width=1200)
「プッシュ通知機能を有効にする」にチェックします。MetaQuotes IDのフィールドに、控えておいたMetaQuotes IDを入力します。複数のMetaQuotes IDを指定するときは、カンマ区切り(「,」で区切って入力)です。
![](https://assets.st-note.com/img/1732621151-BhqtvZTxCsaiGMSOUmR9uHkI.png?width=1200)
次に、指定したMetaQuotes IDで、スマホに通知が届くかどうかをテストします。「テスト」ボタンをクリックしてください。
![](https://assets.st-note.com/img/1732621659-DvqG43Cka8MoETe9cxfdjRPQ.png?width=1200)
通知が送信された旨のメッセージが表示されますので、スマホのMT4を確認します。
![](https://assets.st-note.com/img/1732622215-uDYhWGytMJwpU1iNkIQ8KVTf.jpg?width=1200)
テストメッセージが届けば、指定したMetaQuotes IDは正しいです。PC版MT4のオプション画面で「OK」ボタンをクリックして終了します。
以上で事前準備は完了です。
PC版MTから送信
LINEやDiscordのときと同様に、EAからメッセージを送信します。以下のように、OnInit関数の中で、SendNotification関数を使って通知します。この関数の仕様はこちらです。文字列を引数に渡すだけのシンプルな関数です。
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit() {
// SendNotificationの実行
SendNotification("はじめての通知です。よろしく");
return INIT_SUCCEEDED;
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
//---
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick() {
//---
}
//+------------------------------------------------------------------+
但し、以下の注意事項があります。
SendNotification() 関数には厳格な使用制限が設定されており、呼び出しは毎秒 2 以下と毎分 10 以下に限られています。 使用頻度は動的に監視されます。制限違反の場合にはこの関数は無効にされることが出来ます。
では、EAを実行してみましょう。
![](https://assets.st-note.com/img/1732624279-sQkDWXuiF4TOApaUfy27zJ83.jpg?width=1200)
スマホ版MTに通知は届いたでしょうか? 上のようにメッセージが届けば成功です。今回は、比較的簡単だったと思います。
お疲れ様でした。
最後に
今回で「MetaTraderからスマホに通知するには?」シリーズは終了する予定です。ここまで読んでいただき、ありがとうございました。
ソースコード
『MetaTraderからスマホに通知するには?「LINE」で試す』で紹介したソースコードをベースに改変しています。尚、前回と今回の記事を理解していれば、自力で改変することも可能だと思います。
概要は以下の通りです。
メッセージ送信処理を関数化
エラー処理を追加
通知先と設定は、EAのパラメーターで指定可能
メッセージの先頭にEAの名前とデモ口座かどうかを付加する機能(既定値はオフ)
また、送信するメッセージにエンコード処理を追加しています。LINE Notifyの場合、URLエンコード処理が必要なようです。Messaging APIの場合は、JSON用に「\」「"」「\r」「\n」をエスケープ処理しています。
MetaTrader4および5に対応しています。MetaTrader5の場合は拡張子を「.mq5」に変更してください。また、MetaTrader4のみで使うなら、互換処理の部分は冗長になるので、「#ifdef __MQL5__」から「#endif」までの部分を削除してもOKです。
コンパイルして試してみてください。ご参考になれば幸いです。
ここから先は
¥ 200
よろしければ応援お願いします!