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

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

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

LINE公式はLINE Notifyの代わりに「Messaging API」を代替方法として利用することを推奨しています。
![スクリーンショット 2024-11-09 083314.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/40572562-4690-1294-3723-f74a95c4b340.png)


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

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

MT4/MT5からLINE通知を送信するプログラムを無料で公開しています。
![スクリーンショット 2024-11-09 083347.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/5548e968-a3bf-e86a-2927-d9070e29535d.png)


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

[mql4をダウンロード](https://sakuten-fx.com/product/linemt4/)

[mql5をダウンロード](https://sakuten-fx.com/product/linemt5/)

## 仕組み

MT4/MT5から直接スマートフォンのラインにメッセージを送信することはできず、別途LINEの公式アカウントを作成して経由する必要があります。
![wef.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/15339d30-e2ef-d6ba-01a7-ed90bfc0cafc.png)


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

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

## 必要な下準備

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

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

### ・LINE Developersにログイン

LINE Developersのサイトにアクセスして、右上の「コンソールにログインボタン」をクリックしてください。すると以下の画面が出てきますので、ご自身のラインアカウントにログインしてください。
![ef.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/934ddf46-70de-5894-9267-eaab7d37476d.png)


### ・プロバイダーの作成

「新規プロバイダー作成」というボタンから新たにプロバイダーを作成してください。
![efas.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/927958ca-53f1-ebe8-764f-3d7a20d3f62a.png)


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

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

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

チャネル作成後の画面の中から、「Messaging API」をクリックし、「LINE公式アカウントを作成する」ボタンをクリックしてください。
![スクリーンショット 2024-11-09 083621.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/35939d12-6038-39fa-1fe5-c135de9f767c.png)


アカウントにログインすると、LINE公式アカウントを作成するフォームが出てくるため、任意の値を入力してください。
![スクリーンショット 2024-11-09 083715.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/3bfac206-bc94-0adb-3c47-63f2cc043024.png)


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

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

### ・Messaging APIの設定

[LINE公式アカウントの管理画面](https://manager.line.biz/account/)で先ほど作成した公式アカウントを選択し、右上の「設定」→「Messaging API」→「Messaging APIを利用する」をクリックしてください。
![スクリーンショット 2024-11-09 083844.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/d9b12e0a-7a82-e074-e0bd-a325409846f5.png)


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

### ・ユーザーIDの取得

再び[LINE Developers](https://developers.line.biz/ja/)のサイトにアクセスして、右上の「コンソールにログインボタン」からログイン後、作成したプロバイダーを選択してください。

すると作成したチャネルが更新されていますので、こちらをクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/03bfab33-5e13-6a37-e231-b53e9d141733.png)


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

するとユーザーIDを確認することができるため、このIDを控えておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/3e206a68-e4e3-5d77-fc6f-5469234479c4.png)


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

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

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

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

するとチャネルアクセストークンを発行することができますので、こちらを控えておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/41c255fa-b38b-5253-1a15-7edf105533b6.png)

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

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

## 利用制限について
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/84e14685-81f0-f91c-f998-58f33c1e4fb3.png)

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

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

## プログラムを書く

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

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

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

### mql4プログラム

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

```c++:mql4
#import "shell32.dll"
   int ShellExecuteW(int hWnd,string lpVerb,string lpFile,string lpParameters,string lpDirectory,int nCmdShow);
#import
```
バッチファイルを実行するために、windowsの標準ライブラリ「shell32.dll」をインポートします。ShellExecuteW関数は任意の実行ファイル(exe)を実行することができる関数です。

次にパラメータ設定部分を記述します。
```c++:mql4
input string LineToken = "";     //チャネルアクセストークン
input string ID = "";            //ユーザーID
```
下準備で手に入れたチャネルアクセストークンとユーザーIDを入力するためのパラメータです。

続いてバッチファイルを実行する関数を書いていきます。
```c++: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通知を送信することができます。
```c++:mql4
int OnInit()
  {
   SendTextToLine(LineToken, ID, "ここにメッセージを入力");
   return(INIT_SUCCEEDED);
  }
```
### バッチファイル

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

「S_LINE_API_TXT.bat」の中身は以下の通りです。
```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のドキュメント](https://developers.line.biz/ja/docs/messaging-api/message-types/#text-messages)を参考にしながら適宜書き換えてください。

## 動作確認

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

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

パラメータ設定画面が出てくるため、下準備で入手したチャネルアクセストークンとユーザーIDを入力しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/af7de0a8-93d7-5016-1d65-7bc4b7e9aa39.png)


また、全般タブから「DLLの使用を許可する」にもチェックを入れてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/72913393-3fd7-85d5-d5dd-7e5264f05587.png)


OKをクリックするとLINEにメッセージが送信されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3930809/cd2ffdb2-df3b-36dd-4a33-c3cf23a04b98.png)