MetaTraderからスマホに通知を送るには? スマホ版「MetaTrader」で試す
作成日:2024.11.27
はじめに
前回は「Discord」で試しましたが、今回はスマホ版MetaTraderに通知を送ります。ここでは「MetaTrader」は「MT」と記載します。「MT4」「MT5」のようにバージョンを付けることもあります。
PC版MTからスマホ版MTへの通知は、お互いMTなので、MetaTraderプラットフォームとしては王道の方法なのかもしれません。
LINEやDiscordへの通知のときは、WebRequest関数を利用していたため、インジケーターからはメッセージを送信できませんでした。今回の方法では大丈夫です。SendNotificationという関数を利用します。
少し補足しておきます。MetaTraderは外部DLLの関数を呼び出すことができます。つまり「wininet.dll」から必要な関数を呼び出せば、WebRequest関数を使わずに同等の処理が可能です。この方法だと、LINEやDiscordでもインジケーターからメッセージを送信できます。
とは言え、今のところ時間をかけて作る気にはなっていません。EAがインジケーターを呼び出して通知することで、問題がないからです。
MetaQuotes IDを介して通知
MetaTraderのプラットフォームでは、モバイルデバイスに「MetaQuotes ID」を付与してデバイスを識別します。MetaTraderは、この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版での調べ方は、こちらを参考にしてください。
画面の右下の吹き出しをタップします。Android版MT5の場合は、画面の右下の「メッセージ」をタップします。
右上の「MQID」をタップします。
「MetaQuotes ID」が表示されます。これを控えておいてください。
PC版MTの設定
プッシュ通知機能を有効にして、通知先のMetaQuotes IDを指定します。
まず、PC版MT4を起動します。ここでは楽天MT4を使用しています。
「ツール」→「オブション」メニューをクリックします。
「通知機能」タブをクリックします。
「プッシュ通知機能を有効にする」にチェックします。MetaQuotes IDのフィールドに、控えておいたMetaQuotes IDを入力します。複数のMetaQuotes IDを指定するときは、カンマ区切り(「,」で区切って入力)です。
次に、指定したMetaQuotes IDで、スマホに通知が届くかどうかをテストします。「テスト」ボタンをクリックしてください。
通知が送信された旨のメッセージが表示されますので、スマホのMT4を確認します。
テストメッセージが届けば、指定した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() {
//---
}
//+------------------------------------------------------------------+
但し、以下の注意事項があります。
では、EAを実行してみましょう。
スマホ版MTに通知は届いたでしょうか? 上のようにメッセージが届けば成功です。今回は、比較的簡単だったと思います。
お疲れ様でした。
最後に
ここまで読んでいただき、ありがとうございます。今回で「MetaTraderからスマホに通知するには?」シリーズは終了しようと思っています。
そこで有料となりますが、過去の記事の内容を含んだ通知関数のサンプルソースコードを提供します。「LINE Notify」「LINE Messaging API」「Discord」「スマホ版MT」の4つにメッセージ送信可能です。
ソースコード
『MetaTraderからスマホに通知するには?「LINE」で試す』で紹介したソースコードをベースに改変しています。尚、前回と今回の記事を理解していれば、自力で改変することも可能だと思います。
概要は以下の通りです。
メッセージ送信処理を関数化
エラー処理を追加
通知先と設定は、EAのパラメーターで指定可能
メッセージの先頭にEAの名前とデモ口座かどうかを付加する機能(既定値はオフ)
また、送信するメッセージにエンコード処理を追加しています。LINE Notifyの場合、URLエンコード処理が必要なようです。Messaging APIの場合は、JSON用に「\」「"」「\r」「\n」をエスケープ処理しています。
MetaTrader4および5に対応しています。MetaTrader5の場合は拡張子を「.mq5」に変更してください。また、MetaTrader4のみで使うなら、互換処理の部分は冗長になるので、「#ifdef __MQL5__」から「#endif」までの部分を削除してもOKです。
コンパイルして試してみてください。参考になれば幸いです。
ここから先は
¥ 200
この記事が気に入ったらチップで応援してみませんか?