2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LINE Messaging APIを利用したLINE通知【MT4/MT5】

Posted at

MT4/MT5からLINE通知を送信する方法

MT4からLINE通知を送信する方法としてLINE Notifyというサービスが主流でしたが2025年3月いっぱいでLINE Notifyを使用することができなくなりました。

LINE公式はLINE Notifyの代わりに「Messaging API」を代替方法として利用することを推奨しています。
スクリーンショット 2024-11-09 083314.png

今回はMessaging APIを使用してMT4/MT5からLINE通知を送信する方法を紹介します。

LINE通知を送信するソースコード

MT4/MT5からLINE通知を送信するプログラムを無料で公開しています。
スクリーンショット 2024-11-09 083347.png

LINE通知を送信する機能を関数としてまとめているため、ご自身のEAやインジケーターに簡単に組み込むことができます。

mql4をダウンロード

mql5をダウンロード

仕組み

MT4/MT5から直接スマートフォンのラインにメッセージを送信することはできず、別途LINEの公式アカウントを作成して経由する必要があります。
wef.png

公式アカウントとはいってもいろいろな人とつながるわけではなく、あくまで個人利用のための別アカウントという形です。

スマホには作成した公式LINEアカウントからメッセージが届く形で表示されます。

必要な下準備

ということで、LINE通知を実施するためには別途公式アカウントを作成する必要があります。さらにメッセージを送信する際に「どの公式アカウントにメッセージを送信するのか」「どのユーザーにメッセージを送信するのか」といったことを指定するために「チャネルアクセストークン」と「ユーザーID」という識別情報が必要になります。

LINE公式アカウントを作成し、「チャネルアクセストークン」と「ユーザーID」を入手する方法を解説します。

・LINE Developersにログイン

LINE Developersのサイトにアクセスして、右上の「コンソールにログインボタン」をクリックしてください。すると以下の画面が出てきますので、ご自身のラインアカウントにログインしてください。
ef.png

・プロバイダーの作成

「新規プロバイダー作成」というボタンから新たにプロバイダーを作成してください。
efas.png

プロバイダー名は任意の名前を付けてください。

・LINE公式アカウントの作成

続いてLINEの公式アカウントを作成します。公式アカウントといってもいろいろなユーザーとつながるわけではなく、LINE通知用の自分の別アカウントのようなものです。

チャネル作成後の画面の中から、「Messaging API」をクリックし、「LINE公式アカウントを作成する」ボタンをクリックしてください。
スクリーンショット 2024-11-09 083621.png

アカウントにログインすると、LINE公式アカウントを作成するフォームが出てくるため、任意の値を入力してください。
スクリーンショット 2024-11-09 083715.png

アカウントに成功すると以下の画面が表示されますので、「LINE Official Account Managerへ」のボタンをクリックしてください。

利用規約の同意画面が出てくる場合は確認後同意してください。

・Messaging APIの設定

LINE公式アカウントの管理画面で先ほど作成した公式アカウントを選択し、右上の「設定」→「Messaging API」→「Messaging APIを利用する」をクリックしてください。
スクリーンショット 2024-11-09 083844.png

するとウィンドウが出てくるので先ほど作成したプロバイダーを選択してください。途中でプライバシーポリシーと利用規約を入力する画面が出てきますが、個人利用のため空欄のままで大丈夫です。

・ユーザーIDの取得

再びLINE Developersのサイトにアクセスして、右上の「コンソールにログインボタン」からログイン後、作成したプロバイダーを選択してください。

すると作成したチャネルが更新されていますので、こちらをクリックしてください。
image.png

すると各種設定画面が出てきます。チャンネル基本設定を選択し、一番下までスクロールしてください。

するとユーザーIDを確認することができるため、このIDを控えておいてください。
image.png

・チャネルアクセスコードの発行と取得

続いてチャネルアクセスコードを発行して取得します。

上部タブの「Messaging API設定」をクリックしてください。

そのまま一番下までスクロールするとチャネルアクセストークン(長期)の発行ボタンがあるため、こちらをクリックしてください。

するとチャネルアクセストークンを発行することができますので、こちらを控えておいてください。
image.png

(長期)とありますが、このアクセストークンは期限切れにはならずずっと使用することができます。

これで下準備は完了です。

利用制限について

image.png

Messaging APIは基本的に無料で使用することができますが、送信できるメッセージは月に200通限定という制限があります。(2024年11月現在)

そのため、それ以上のメッセージを送信したい場合はプランのアップデートを検討しましょう。

プログラムを書く

LINE通知を実装するにあたりLINE Messaging APIを利用するわけですが、簡単に記述できて動作も安定するため今回はmql4からではなくバッチファイル(bat)からAPIをたたきます。

バッチファイル(bat)とは、Windows環境で実行できるコマンド列を記述したテキストファイルのことです。

WindowsにはcurlコマンドというREST APIなどを実行することができるコマンドが標準で搭載されていますので、mql4からバッチファイルを実行し、バッチファイルの中でcurlコマンドを実行することでapiを利用します。

mql4プログラム

まずはフィールドからdllファイルをインポートします。

mql4
#import "shell32.dll"
   int ShellExecuteW(int hWnd,string lpVerb,string lpFile,string lpParameters,string lpDirectory,int nCmdShow);
#import

バッチファイルを実行するために、windowsの標準ライブラリ「shell32.dll」をインポートします。ShellExecuteW関数は任意の実行ファイル(exe)を実行することができる関数です。

次にパラメータ設定部分を記述します。

mql4
input string LineToken = "";     //チャネルアクセストークン
input string ID = "";            //ユーザーID

下準備で手に入れたチャネルアクセストークンとユーザーIDを入力するためのパラメータです。

続いてバッチファイルを実行する関数を書いていきます。

mql4
void SendTextToLine(string token, string groupId, string message) {
    int res;
    res = ShellExecuteW(NULL, "open",
        TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL4\\Files\\" + "S_LINE_API_TXT.bat",
        token + " " + groupId + " " + message,
        NULL,
        0); 
}

この後「S_LINE_API_TXT.bat」というバッチファイルを作成し、FIlesフォルダに格納します。

もしもmql5で実装したい場合は、バッチファイルのパスの「MQL4」を「MQL5」に変更してください。

バッチファイルには「チャネルアクセストークン」「ユーザーID」「送信メッセージ」の3つを引数として渡してあげます。

実際にLINE通知を送信したい箇所に以下のようにSendTextToLine関数を送信することで簡単にLINE通知を送信することができます。

mql4
int OnInit()
  {
   SendTextToLine(LineToken, ID, "ここにメッセージを入力");
   return(INIT_SUCCEEDED);
  }

バッチファイル

バッチファイルの作成方法について、特にコンパイルなどは必要なく、テキストファイルに直接記述して拡張子を「.txt」から「.bat」に変更することで簡単に作成することができます。(もしくは.batファイルを直接作成する)

「S_LINE_API_TXT.bat」の中身は以下の通りです。

bat
@echo off
setlocal

set "TOKEN=%1"
set "GROUP_ID=%2"
set "MESSAGE=%3"
set "JSON_DATA={\"to\":\"%GROUP_ID%\",\"messages\":[{\"type\":\"text\",\"text\":\"%MESSAGE%\"}]}"
curl -X POST -H "Authorization: Bearer %TOKEN%" -H "Content-Type: application/json" -d "%JSON_DATA%" https://api.line.me/v2/bot/message/push
endlocal

mql4から受け取ったパラメータをもとにJSONデータを作成し、Messaging APIのエンドポイント「https://api.line.me/v2/bot/message/push 」を呼び出しています。

バッチファイルを保存したら、MQL4→FIlesのフォルダに格納しましょう。

スタンプなどを送信することも可能のため、別のメッセージなどを送信したい場合はAPIのドキュメントを参考にしながら適宜書き換えてください。

動作確認

実際にLINE通知が送信されるかどうかを確認します。

作成したmql4ファイルをコンパイルし、ex4ファイルをチャートにセットします。

パラメータ設定画面が出てくるため、下準備で入手したチャネルアクセストークンとユーザーIDを入力しましょう。
image.png

また、全般タブから「DLLの使用を許可する」にもチェックを入れてください。
image.png

OKをクリックするとLINEにメッセージが送信されます。
image.png

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?