【SendLINEdll】MT4からLINEへメッセージ送信 画像もね☆
MT4TradeCCでも使用している機能ですが、
LINEへのメッセージ送信機能を単独のDLLとして公開します。
SendLINEdllはアンマネージドDLLなので、MT4のEAやIndicatorに限らず、
他のDLL呼び出しが可能なプログラム言語からも呼び出すことが出来ます。
また、SendLINEdllはフリーソフトとして公開します。
製造元(https://paopao46.blog.fc2.com)を明記していただければ、
EA作者の方が製品に組み込むことも許可します。
【使用方法】
まず、こちらで解説した方法でLINEのサイトからパーソナルアクセストークンを取得します。
次にSendLINE.zipをダウンロードして解凍します。
SendLINE.zipのファイル構成
■SendLINE
│ imgctl-126.zip
│ SendLINEの説明.pdf
├─cpp
│ │ ...
│ └─source
│ ...
└─MQL4
├─Experts
│ slSample.mq4
├─include
│ SendLine.mqh
├─Indicators
│ PositionNotify.mq4
│ SendChart.mq4
└─libraries
imgctl.dll
SendLine.dll
続いて以下の手順で、動作に必要なファイルをMT4のフォルダに配置していきます。
MT4を起動し、メニューの【ファイル(F)】-【データフォルダを開く(D)】を選択します。

MQL4フォルダを開きます。

ExpertsにslSample.mq4(動作確認用サンプルEA)をコピーします。

IncludeにSendLine.mqh(EAのコンパイル時に必要)をコピーします。

Librariesにimgctl.dll(チャート画像GIF->JPG変換用dll。実行時に必要)、SendLine.dll(実行時に必要な本体)をコピーします。

ナビゲータウィンドウの【エキスパートアドバイザ】を右クリックし、ポップアップメニューの【更新】を選択します。

【エキスパートアドバイザ】の中のslSampleをチャートにドラッグしてドロップします。

表示されるダイアログボックスの全般タブをクリックし、【自動売買を許可する】、【DLLの使用を許可する】にチェックを入れます。

パラメータの入力タブをクリックし、上で取得したLINE Notifyのパーソナルアクセストークンを入力します。

ダイアログボックスのOKボタンをクリックします。
slSampleはEA初期化時にLINE送信を行うサンプルEAなので、設定に誤りが無ければ、
LINEに次の様なメッセージが表示されます。

slSampleのソースを掲載します。
#include <SendLine.mqh>
extern string AccessToken = "";
//+--------------------------------------------------------------+
int init()
{
uchar array1[256];
uchar array2[256];
int len = StringToCharArray(AccessToken, array1, 0);
SetAccessToken(array1);
int ret;
string Message;
Message = "メッセージのみ";
len = StringToCharArray(Message, array1, 0);
ret = SendLine(array1);
if(ret == 0){
Print("Send [", Message, "]");
}else{
Print("SendLine error code:", ret);
}
Sleep(5000); //ちょっと時間を開ける
Message = "メッセージと画像";
len = StringToCharArray(Message, array1, 0);
string Filename = "chart.gif";
string Path = TerminalInfoString(TERMINAL_DATA_PATH) +
"\\MQL4\\Files\\" + Filename;
if(!WindowScreenShot(Filename ,640, 480)){
Print("Error in WindowScreenShot() No:", GetLastError());
}else{
len = StringToCharArray(Path, array2, 0);
ret = SendLineWithImage(array1, array2);
}
if(ret == 0){
Print("Send [", Message, "]");
}else{
Print("SendLine error code:", ret);
}
return(0);
}
//+--------------------------------------------------------------+
int start(){
return(0);
}
SendLINEdllのダウンロードはこちらです。
【PositionNotify】MT4のトレード状況をLINEに通知するインジケータ
起動時の送信イメージ

オーダーオープン時のメッセージ

クローズ時のメッセージ

シャットダウン時のメッセージ

PositionNotify.zipには、2つのファイルが含まれています。

MT4のメニューから「ファイル(F)」-「データフォルダを開く(D)」を選択し、MQL4フォルダ内の所定の位置に、
PositionNotify.ex4、SendLine.dllを配置します。
MT4を再起動し、インジケータPositionNotifyをチャートにドラッグアンドドロップします。
※「全般」タブの「DLLの使用を許可する」を忘れずにチェックします。
「パラメータの入力」タブについて説明します。

・ラインのアクセストークン
こちらで解説した方法でLINEのサイトからパーソナルアクセストークンを取得しコピペします。
・メモ的な何か
LINE通知メッセージに付加するタイトルメモを(必要なら)入力します。
・ポジション変化で送信
ポジション状況が変化したときに通知を受け取る場合はtrueにします。
・口座残高の変化で送信
Balanceが変化した時に通知を受け取る場合はtrueにします。
・終了時に送信
インジケータのOnDeinitイベントで通知を受け取る場合はtrueにします。
VPSが再起動された事等を検知できます。
・定時連絡の使用
毎日決まった時刻に通知を受け取る場合に時間間隔を指定します。
VPSが正常に稼働しているか等の監視が出来ます。
・アカウントIDの明示
通知にMT4のアカウントIDを含めるかどうかを指定します。
通知内容のキャプチャをSNS等に晒すときにプライバシーに配慮しました。
・連絡時刻の時
24時間毎に通知を送信する場合の時刻をローカル時刻(MT4稼働環境の時刻)で入力します。
2、4、8、12時間毎の通知でも、この時刻を基点として通知時刻を計算しています。
・連絡時刻の分
通知を送信する時刻の分を指定します。
通知内の本日損益の計算はブローカーの稼働日で区切られるので、
ブローカー時刻の0時直前あたりに設定するとより正確な損益が計算できます。
| h o m e |