見出し画像

MetaTraderからスマホに通知を送るには? スマホ版「MetaTrader」で試す

  • 更新履歴:

    • 2024/11/27:新規作成

    • 2024/12/12:「はじめに」を修正

    • 2025/08/21:

      • LINE Notifyのサービス終了に伴い記事を更新

      • 利用規約を修正

      • サンプルソースコードを修正

    • 2025/08/22:

      • サンプルソースコードのヘッダーコメントを修正

    • 2025/09/02:

      • サンプルソースコードのヘッダーコメントを修正

      • MyNotifyライブラリのサブセット版ソースコードを追加

      • 上記のソースコード追加に伴い、有料部分の価格を改定


はじめに

前回は「Discord」で試しましたが、今回はスマホ版MetaTraderに通知を送ります。ここでは「MetaTrader」は「MT」と記載します。「MT4」「MT5」のようにバージョンを付けることもあります。

PC版MTからスマホ版MTへの通知は、お互いMTなので、MetaTraderプラットフォームとしては王道の方法なのかもしれません。

LINEやDiscordへの通知のときは、WebRequest関数を利用していたため、インジケーターからはメッセージを送信できませんでした。今回の方法では大丈夫です。SendNotificationという関数を利用します。

少し補足しておきます。MetaTraderは外部DLLの関数を呼び出すことができます。つまり「wininet.dll」から必要な関数を呼び出せば、WebRequest関数を使わずに同等の処理が可能です。この方法だと、LINEやDiscordでもインジケーターからメッセージを送信できます。

今回をもちまして、「MetaTraderからスマホに通知するには?」シリーズは終了とさせていただきます。

つきましては、本記事の一番下の有料部分に、過去の記事の内容を網羅した通知関数のサンプルソースコードをご用意いたしました。LINE Messaging API、Discord、スマホ版MTの3つのプラットフォームへのメッセージ送信に対応しておりますので、ご参考になれば幸いです。(LINE Notifyはサービスを終了しました。)

この度、「MetaTraderからスマホに通知するには?」シリーズに関連し、より高度な機能を有するMetaTraderライブラリに関する記事を別途公開いたしました。

これに伴い、本記事の有料部分では、公開ライブラリのサブセット版ソースコードをダウンロードいただけるようにいたしました。

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からスマホに通知するには?」シリーズは終了とさせていただきます。


ソースコード

このソースコードは、『MetaTraderからスマホに通知するには?「LINE」で試す』で紹介したものをベースに改変したものです。前回の記事と今回の記事の内容を理解していれば、ご自身で同様の改変も可能かと思います。

主な変更点は以下の通りです。

  • メッセージ送信処理の関数化

  • エラー処理の追加

  • 通知先および設定をEAのパラメーターで指定可能

  • メッセージの先頭にEA名とデモ口座利用の有無を付加する機能(デフォルト値はオフ)

また、送信するメッセージにエンコード処理を施しています。LINE Notifyの場合、URLエンコード処理が必要となるためです。Messaging APIの場合は、JSON形式に合わせて「\」「"」「\r」「\n」などのエスケープ処理しています。(LINE Notifyはサービスを終了しました。)

本ソースコードはMetaTrader4および5に対応しています。MetaTrader5でご利用の場合は、拡張子を「.mq5」に変更してください。MetaTrader4のみでご利用になる場合は、互換処理部分(「#ifdef __MQL5__」から「#endif」)を削除することで、コードを簡略化できます。

加えて、冒頭でもご案内いたしました通り、別途公開しております「MyNotifyライブラリ」のサブセット版ソースコードもダウンロードいただけます。詳細な利用方法につきましては、関連記事をご参照ください。

コンパイルして動作をご確認ください。ご参考になれば幸いです。

なお、本ソフトウェアのご利用にあたっては、以下の利用規約への同意が必要です。必ず記事を購入する前に、利用規約をご確認ください。記事の購入をもって、利用規約のすべてに同意したものとみなされます。

ここから先は

361字 / 3ファイル

¥ 500

Amazon Payで支払うと最大2%還元のチャンス! 9/30まで

よろしければ応援お願いします!