MQLでLINEにでも何にでも通知できるクラスを作成する|MQL入門(13回目)

2018年11月21日

ソーシャルネットワークサービス

MQLを使って様々な通知方法を実現します。

これまでにも何度かLINE通知については、取り上げてきましたが全てPythonで作ってきました。

今回はいよいよMQLで実装していきます。

ゴゴジャン(FXON)のフォワード状況をLINEに通知する

メタトレーダー(MT4/MT5)の約定通知をLINEに送る

MQL入門シリーズの一環として進めていきますので、第12回目までを先にご確認いただけるとスムーズに理解できるかと思います。

初心者でも分かる!MT4/MT5のプログラミング入門|MQL入門(1回目)

MT4/MT5でオブジェクト指向入門|MQL入門(10回目)

トレード前の状況を確認するクラスの作成|MQL入門(11回目)

ロット管理クラスの作成|MQL入門(12回目)

通知の構成

単純にLINEに通知するだけではつまらないので、最低限として以下の3つから選択可能とします。

  • メール通知
  • プッシュ通知
  • LINE通知

さらに、今後それぞれの通知方法を変更する必要が出てきたり、新しい通知タイプを追加したい場合もなるべく先に作った3つの処理に影響が出ないように作成します。

事前準備

外部に通知するためにはそれぞれ事前準備が必要になります。

もし、LINE通知にしか興味が無い場合は、LINE通知用の事前準備だけすれば問題ありません。

プッシュ通知・メール通知

こちらを参考にプッシュ通知の設定を行ってください。

LINE通知

外部のサイトですが、「[超簡単]LINE notify を使ってみる」を参考に事前設定を行ってください。

また、LINEに通知するためには外部にアクセスする必要があります。

MT4/MT5では外部にアクセスする際は、明示的に設定を入れておく必要があります。

MT4/MT5の、「ツール>オプション」と進み、「エキスパート」タブをクリックします。

赤枠部分の「WebRequestを許可するURLリスト:」にチェックをいれます。

その下に「+新しいURLを追加する」という文言が出ているので、クリックして以下URLを入力してください。

https://notify-api.line.me/api/notify

MTのWebRequest許可設定

少し横道に逸れますが、このようにMT4/MT5では登録したURLとしか通信できないようになっています。仮に悪意のある開発者がEAを使ってあなたのプライベート情報を外部に流そうとしても、ここに追加されていなければ無理なのでセキュリティ的にも割と安全だと思います。MT4/MT5のようなプラットフォームに乗っていない個人が作成したプログラムは色々なことができてしまうので利用には注意が必要です。(もちろんMT4/MT5でも注意を払うべきではありますが。)

プログラムの構成

今回のプログラムでは「継承」を使います。

少し面倒な話なので、プログラムにそこまで興味が無い方は読み飛ばしてください。

継承(けいしょう、inheritance:インヘリタンス)とはオブジェクト指向を構成する概念の一つである。あるオブジェクトが他のオブジェクトの特性を引き継ぐ場合、両者の間に「継承関係」があると言われる。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

[設計]

  • 親クラス・・・通知共通
  • 子クラス・・・メール通知、プッシュ通知、LINE通知・・(今後増えたら追加していく)
  • コントロールクラス・・・外部から通知タイプを受け取り、実行する。

プログラムの作成

プログラムは全て提供しますが、説明はLINE通知を例に行います。

プログラミング

親クラス

通知で共通して使う処理を書きます。

やっているのは殆ど定数定義と外部からの取込み(input)宣言をしているだけですね。

関数(メソッド)などでも共通処理があれば宣言するのですが、今回に関してはプログラムがシンプル過ぎて必要ありませんでした。

ただ、今後そういった処理が増えてもこのプログラム内で吸収することができます。

子クラス

LINEを例に記載します。

LINEのAPIを叩くために必要な情報を入れて、WebRequestすれば通知してくれます。

正常に通知できた場合は「200」が返ってきますので、200以外が返ってきたときはエラーを表示するようにしました。

コントロールクラス

inputのタイプ(メール/プッシュ/LINE)に応じて、クラスからインスタンス化して通知処理を実行します。

プログラムの全量

ファイルが分かれていて全て載せるとページが見づらくなってしまいますので、以下にファイルを配置しました。

「Download」ボタンをクリックするとPCにダウンロードできます。

ファイル配置場所(Git Hub)

ファイルの配置場所

第11回でInclude下に「Org」フォルダを作成しました。

Orgの下に「Notification」フォルダを作成して全てのプログラムを配置しました。

新規ファイルの配置場所

プログラムの実行

テストプログラムの作成

作成したクラスを呼び出すテストプログラムを作成します。

とてもシンプルに書けました。

OnInitに呼び出し処理を書いていますが、実際使う場合は通知が必要な部分に処理を書いてください。

実行準備

チャートに作成したテストプログラムをドラッグします。(通知のテストなのでチャートは何を選択しても大丈夫です。)

自動売買をするわけではないので、自動売買設定はオフにします。

※MT4では画面が違いますが同じように自動売買をオフに設定してください。

自動トレーディングを許可するをオフ

次にインプット画面を確認しましょう。

EAインプット画面

それぞれの項目の説明をします。

通知のタイプ(必須)

メール、プッシュ、LINEから選択可能です。

赤枠部分をダブルクリックすると、選択できるタイプが表示されます。

通知タイプの設定

メッセージ本文(必須)

通知したいメッセージを入力します。

件名(EMAILのみ)

メール通知の場合は件名が必要なので、EMAILを選択した場合に入力します。

トークン(LINEのみ)、apiのurl(LINEのみ)

LINE通知に必要な設定になりますので、LINEを選択した場合に入力します。

実行

メール通知

下図の通り設定してOKをクリックします。

メール通知設定

少し見づらいですが、私のメーラーの画面です。

しっかり届きました。

Gmail受信トレイ

プッシュ通知

設定を変更してOKをクリックします。

プッシュ通知設定

プッシュ通知が成功しました。

スマホのプッシュ通知画面

LINE通知

設定を変更してOKをクリックします。

トークンには、事前準備で取得してい置いたトークンを設定してください。

LINE通知設定

LINE通知が成功しました。

LINE通知確認

念のため、LINE通知失敗パターンをやっておきます。

トークンを適当に変更して実行しました。

コンソールに以下メッセージが出力されたので、エラーも問題なく検知できています。

2018.11.21 12:35:36.673 NoticeTest (BTCUSD,H1) LineNotificationError. Description={“status”:401,”message”:”Invalid access token”}.

最後に

これで外部からの設定を変更するだけで、色々な通知をすることが可能になりました。

例えば新たに通知先(Twitterなど)を追加したいとなっても、通知自体の枠は既に作成したので迷うことなく作成できるのではないでしょうか。

また、「通知する時は必ずコンソールにもメッセージを出力する。」などの共通処理を入れる場合は親クラスに書けばいいだけです。

プログラムを一から学びたい方は「初心者でも分かる!MT4/MT5のプログラミング入門|MQL入門(1回目)」をご参照ください。

自動売買に興味がある方は「メタトレーダー(MT4/MT5)で自動売買するための事前準備(第1回)」をご参照ください。

仕事を早く終わらせて帰りたい方は「ライフハックして終わらない仕事を終わらせる」をご参照ください。

MT4やMT5が利用できるFX業者は以下でご確認ください。

[海外系]

[国内系]

OANDA JAPAN 口座開設
OANDA JAPAN 口座開設
OANDA JAPAN 口座開設?|?fx-on.com

外為ファイネスト 口座開設
外為ファイネスト 口座開設
外為ファイネスト 口座開設?|?fx-on.com

FXトレードフィナンシャル 口座開設
FXトレードフィナンシャル 口座開設
FXトレードフィナンシャル 口座開設?|?fx-on.com