見出し画像

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を介して通知する機能を提供しています。

MetaQuotes ID は独自のユーザー ID で、モバイルデバイス上でMetaQuotes Software Corp.のサービスからのプッシュ通知やアプリケーションを受信可能にします。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版MT4を起動

画面の右下の吹き出しをタップします。Android版MT5の場合は、画面の右下の「メッセージ」をタップします。

メッセージの画面

右上の「MQID」をタップします。

MetaQuotes ID

「MetaQuotes ID」が表示されます。これを控えておいてください。

PC版MTの設定

プッシュ通知機能を有効にして、通知先のMetaQuotes IDを指定します。
まず、PC版MT4を起動します。ここでは楽天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() {
  //---
}
//+------------------------------------------------------------------+

但し、以下の注意事項があります。

SendNotification() 関数には厳格な使用制限が設定されており、呼び出しは毎秒 2 以下と毎分 10 以下に限られています。 使用頻度は動的に監視されます。制限違反の場合にはこの関数は無効にされることが出来ます。

出典「SendNotification関数(MT5)

では、EAを実行してみましょう。

スマホMTの通知

スマホ版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です。

コンパイルして試してみてください。参考になれば幸いです。

ここから先は

0字 / 1ファイル

¥ 200

期間限定!PayPayで支払うと抽選でお得

この記事が気に入ったらチップで応援してみませんか?