ここでは、インジケーターにLINE通知機能を搭載できるツールを紹介します。
カスタムインジケーターのカスタマイズが必要ですので、インジケーターに直接LINE通知機能を搭載したいMQL4プログラミング中級者向けのツールです。
博士ぇ~。インジケーターからWebRequest()関数が呼び出せないので、インジケーターにLINE通知機能を搭載できないにゃ。。。
そんなときは、このツールを使うとよかろう。
ほいっ!
わーい♪
当ツールの概要
当ツールは、ライブラリファイル【line_notify_lib.ex4】です。MT4で作動するEA・インジケーター・スクリプトに当ツールのLINE通知用関数をインポートして使用するため、多少MQL4プログラミングの知識が必要になります。
LINE通知用ライブラリファイルをダウンロード
次のリンクからLINE通知用ライブラリファイルをダウンロードすることができます。
ライン通知用ライブラリの圧縮ファイル【line_notify_lib.zip】をダウンロード
ライブラリファイルの保存場所
ダウンロードしたzipファイルを解凍して、中にある「line_notify_lib.ex4」ファイルをMQL4フォルダ内のLibrariesフォルダに保存します。
インターネット上のウェブページの中には、MetaTrader4のEAやインジケーターがダウンロードできるところが色々とあります。 ここでは、ダウンロードしたファイルの保存先について説明します。 ダウンロードしたファイルの …
インジケーターからLINE通知するサンプルインジケーターファイル
次のリンクで、インジケーターにLINE通知機能を搭載したサンプルファイルがダウンロードできます。
ライン通知するサンプルインジケーターファイル【Sample_Ind_LINE.mq4】をダウンロード
サンプルファイルは、記事インジケーター作成7【シグナル矢印(アロー)を表示】で作成したファイルをカスタマイズしたものじゃ。カスタマイズ後のソースコードがこちら↓
#property strict #property indicator_separate_window #property indicator_buffers 4 // 表示用インジケーターバッファ個数 #property indicator_color1 clrSilver // 1つ目の色 (中略) #property indicator_width4 2 // 4つ目の太さ // LINE Notify 1 ************************************ #import "line_notify_lib.ex4" bool LineNotify(string token, string message); #import extern string LINE_Token = ""; // ************************************ LINE Notify 1 extern int FastEMA_Period = 12; // 短期EMAの期間 extern int SlowEMA_Period = 26; // 長期EMAの期間 extern int Signal_Period = 9; // MACDシグナルライン期間 double macd[]; // MACD用配列 double macd_sig[]; // MACDシグナル用配列 double up[]; // 上矢印用配列 double dn[]; // 下矢印用配列 double fast_ema[]; // 短期EMA用配列 double slow_ema[]; // 長期EMA用配列 //+------------------------------------------------------------------+ int OnInit() { // LINE Notify 2 ************************************ string error_cmt = " "; if (IsLibrariesAllowed() == false) error_cmt = "Check \"Allow external experts imports\""; if (IsDllsAllowed() == false) error_cmt = "Check \"Allow DLL imports\""; if (error_cmt != " ") { Alert(error_cmt); return(INIT_FAILED); } // ************************************ LINE Notify 2 IndicatorBuffers(6); // インジケータ―用配列個数 (中略) IndicatorShortName(short_name); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int i, j; int limit; if (prev_calculated == 0) // 最初 limit = rates_total - 1; // 左端のローソク足から全部 else // それ以外 limit = rates_total - prev_calculated; // ローソク足増加時「1」、通常「0」 for (i=limit; i>=0; i--) // limit本前から現在のローソク足を処理 { fast_ema[i] = iMA(NULL, 0, FastEMA_Period, 0, MODE_EMA, PRICE_CLOSE, i); // Fast EMA slow_ema[i] = iMA(NULL, 0, SlowEMA_Period, 0, MODE_EMA, PRICE_CLOSE, i); // Slow EMA macd[i] = fast_ema[i] - slow_ema[i]; // MACD if (i + Signal_Period <= Bars) // MACDシグナル { macd_sig[i] = 0; for (j=0; j<Signal_Period; j++) macd_sig[i] += macd[i+j]; macd_sig[i] /= Signal_Period; } // 矢印 if (i + Signal_Period < Bars) { // 一旦矢印を消す up[i] = EMPTY_VALUE; dn[i] = EMPTY_VALUE; // 矢印表示判定 if (macd[i+1] <= macd_sig[i+1] && macd[i] > macd_sig[i]) up[i] = macd_sig[i]; if (macd[i+1] >= macd_sig[i+1] && macd[i] < macd_sig[i]) dn[i] = macd_sig[i]; } } // LINE Notify 3 ************************************ static int line_bar = 0; if (line_bar != Bars) { line_bar = Bars; if (up[1] != EMPTY_VALUE) LineNotify(LINE_Token, "上昇シグナル発生"); if (dn[1] != EMPTY_VALUE) LineNotify(LINE_Token, "下落シグナル発生"); } // ************************************ LINE Notify 3 return(rates_total); }
使用前の準備
当ツールは、LINE Notifyを利用してLINE通知します。その際に、アクセストークンが必要になりますので予めLINE Notifyにアクセスして、LINEアカウントのアクセストークンを発行しておきます。
過去の記事【これは便利!MT4からLINEにメッセージを送信するスクリプト】でもアクセストークンの発行方法を解説していますので、参考にしてみてください。
MT4ユーザー、LINEユーザーの皆様、こんにちは! 今回は、MT4画面を開いたままPCからモバイルにサクッとメッセージが送れちゃう便利ツールをご紹介します。 【MT4toLINE_script】をダウンロード 使用前の …
機能搭載カスタマイズ方法
当ツールを利用したLINE通知機能の搭載方法を解説します。上記サンプルファイルのソースコードを例に、インジケーターに機能追加するカスタマイズ方法を紹介します。
インポートする
インジケーターのソースコードで、OnInit()関数より上のグローバル領域で、次のようにライブラリファイル「line_notify_lib.ex4」のLineNotify()関数をインポートします。
#import "line_notify_lib.ex4" bool LineNotify(string token, string message); #import
トークンを入力するパラメーターを設置する
LINE Notifyで発行したアクセストークンを入力するパラメーターを次のように追加します。
extern string LINE_Token = "";
インポート許可をチェックする
次のように、OnInit()関数内でライブラリ(外部エキスパート)とDLLのインポートが許可されているかどうかをチェックして、許可されていない場合はアラートを出して終了するようにします。
string error_cmt = " "; if (IsLibrariesAllowed() == false) error_cmt = "Check \"Allow external experts imports\""; if (IsDllsAllowed() == false) error_cmt = "Check \"Allow DLL imports\""; if (error_cmt != " ") { Alert(error_cmt); return(INIT_FAILED); }
LineNotify()関数を使用する
OnCalculate()関数内で、次のようにLINE通知するタイミングでLineNotify()関数を使用します。引数は(トークン, メッセージ)です。
static int line_bar = 0; if (line_bar != Bars) { line_bar = Bars; if (up[1] != EMPTY_VALUE) LineNotify(LINE_Token, "上昇シグナル発生"); if (dn[1] != EMPTY_VALUE) LineNotify(LINE_Token, "下落シグナル発生"); }
シグナルインジケーター限定ライン通知ツール
LINE通知用ライブラリをインジケーターにインポートする作業が難しいと感じる方のために、シグナルインジケーター用のライン通知ツールを作成しました。
シグナルインジケーター用ライン通知インジケーター【LINEbySig_ind_v2.mq4】をダウンロード
※LINE通知用ライブラリファイルは必要です。
パラメーター説明
LINE_Token | LINE Notifyで発行したアクセストークン |
---|---|
—Signal Setting— | |
CustomIndicatorName | 使用するカスタムインジケーター名 |
UpSignalIndex | 上昇シグナルの番号 |
DownSignalIndex | 下降シグナルの番号 |
SignalShift | シグナルのシフト数 |
—Parameters of Indicator Setting— | |
Para1 | カスタムインジケーターのパラメーター1つ目 |
Para2 | カスタムインジケーターのパラメーター2つ目 |
Para3 | カスタムインジケーターのパラメーター3つ目 |
: | : |
Para20 | カスタムインジケーターのパラメーター20個目 |
シグナルの番号やシフト数については、次の記事を参考にしてください。
すごいシグナルインジケーターがあるんです! こんにちは! EA作成代行「Dr.EA」では、上記のようなやりとりがたまにあります^^; 矢印やドットなどのマークで売買タイミングをお知らせしてくれるカスタムインジケーターで、 …
あとがき
質問等ありましたら、お気軽にコメントくださいね。
ではでは。
はじめまして
lien通知関連を探していたところ此処にたどり着きました
MQL初心者です てゆうかプログラム書けないです?
下記お願いできたら嬉しいです
宜しくお願い致します
※ご要望があれば、プログラミング知識無しで使用できるツールも作成します。
ミヤケさん
コメントありがとうございます。
ツールについて、公開しましたらまたコメントしますね。
ミヤケさん
プログラミング知識無しで使用できるシグナルインジケーター用ライン通知ツールをこの記事に追加公開しましたのでチェックしてみてください。
はじめまして。
トレンドラインやチャネルラインやMAに交差したら、
LINEに通知が届くようなものがあれば良いなと探しておりました。
こちらを拝見し、LINEにメッセージを送信するところまではできましたが、
それから先はどうしたら良いものか、分からないでいます。
プログラムの事も良くわからないまま触っておりますが、
アドバイス頂ければ嬉しいです
モカさん
コメントありがとうございます。
EAのシグナルを参考にされるとよいかと思います。
EAのトレード部分をLINE送信に変更するだけで良い場合もあります。
はじめまして。
趣味でEAやインディケーターを作成して、販売したりしているものです。
私が販売しているインディケータ等に、この「line_notify_lib.ex4」を使用させて頂いてもよろしいのでしょうか?
それとも、商用の利用は不可でしょうか??
けいさん
コメントありがとうございます。
商用の利用も可能です。
自己責任でお願い致します^^;
ありがとうございます!
非常に便利です。curlを外部コマンドとして叩いて4~5年ほど前から同じことをしていましたが、
謎のDLLエラーが頻発して使い物にならず、line_notify_lib.ex4 を試したところ
非常に安定するようになりました。どのようにして実現しているのか興味津々です。
ChartScreenShot関数で撮ったチャート画像(png)をLineで配信したいのですが、
line_notify_lib.ex4には画像送信オプションは存在しない感じでしょうか。
以上、よろしくおねがいします。
feelezさん
コメントありがとうございます。
画像送信について、作成・公開を検討してみます。
星野 慶次さま
返信いただき、ありがとうございます!
wininet.dllを用いて自作も試みましたが、うまくいかず途方にくれていました。
気長にお待ちしています。
初めまして。
いつも大変参考にさせて頂いております。
インジやEA販売などを行っているのですが、こちらのline_notify_lib.ex4をLINEプッシュ通知用に使用させて頂いてもよろしいでしょうか?
Tommyさん
コメントありがとうございます。
販売されているインジやEAに搭載して頂いても大丈夫です^^
wininet.dll を使用して Content-Type: multipart/form-data で送ると画像データも一緒に行けると思います。
結構記述めんどくさそうですけど、、
触発されたので僕も自分なりに書いてみようと思います。
面白い記事ありがとうございます。
taneさん
コメントありがとうございます。
有力情報ありがとうございます!
完成されたらご報告お願い致しますm(_ _)m
お世話になります。LINE通知用インジケータを利用させていただきましたが、上昇シグナル発生、下降シグナル発生の通知が同時に一時間毎に届きます。設定は間違いなく完了させたつもりですが、原因がわからないので解決策をご教授いただけると幸いです。
hiyokoさん
コメントありがとうございます。
ファイルを改良しましたので再度ダウンロードしてお試しください。