fc2ブログ

01 « 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.» 03

不労所得で生活できるのか?

主にMT4関連のツールやEAを作ってます。 夢の自動集金マシン(?)は存在するのか・・・。

【SendLINEdll】MT4からLINEへメッセージ送信 画像もね☆ 

SendLINEdllはプログラムからLINEへのメッセージ送信ができるDLLです。

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のダウンロードはこちらです。

スポンサーサイト



2022/04/18 Mon. 10:32 | trackback: -- | comment: -- | edit

【PositionNotify】MT4のトレード状況をLINEに通知するインジケータ 

PositionNotifyは、ポジションを持った時やクローズした時に口座状況をLINEに通知してくれるMT4用のインジケータです。

起動時の送信イメージ


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


クローズ時のメッセージ


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


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


MT4のメニューから「ファイル(F)」-「データフォルダを開く(D)」を選択し、MQL4フォルダ内の所定の位置に、

PositionNotify.ex4、SendLine.dllを配置します。

MT4を再起動し、インジケータPositionNotifyをチャートにドラッグアンドドロップします。

※「全般」タブの「DLLの使用を許可する」を忘れずにチェックします。

「パラメータの入力」タブについて説明します。

prfx

・ラインのアクセストークン
 こちらで解説した方法でLINEのサイトからパーソナルアクセストークンを取得しコピペします。

・メモ的な何か
 LINE通知メッセージに付加するタイトルメモを(必要なら)入力します。

・ポジション変化で送信
 ポジション状況が変化したときに通知を受け取る場合はtrueにします。

・口座残高の変化で送信
 Balanceが変化した時に通知を受け取る場合はtrueにします。

・終了時に送信
 インジケータのOnDeinitイベントで通知を受け取る場合はtrueにします。
 VPSが再起動された事等を検知できます。

・定時連絡の使用
 毎日決まった時刻に通知を受け取る場合に時間間隔を指定します。
 VPSが正常に稼働しているか等の監視が出来ます。

・アカウントIDの明示
 通知にMT4のアカウントIDを含めるかどうかを指定します。
 通知内容のキャプチャをSNS等に晒すときにプライバシーに配慮しました。

・連絡時刻の時
 24時間毎に通知を送信する場合の時刻をローカル時刻(MT4稼働環境の時刻)で入力します。
 2、4、8、12時間毎の通知でも、この時刻を基点として通知時刻を計算しています。

・連絡時刻の分
 通知を送信する時刻の分を指定します。
 通知内の本日損益の計算はブローカーの稼働日で区切られるので、
 ブローカー時刻の0時直前あたりに設定するとより正確な損益が計算できます。
2023/02/17 Fri. 11:40 | trackback: -- | comment: -- | edit

【SendLine64.dll】MT5からLINEへメッセージや画像を送信する64bitDLL 

SendLine64.dllはWindowPCの64bitアプリケーションからLINEへのメッセージ送信ができるDLLです。

SendLine64.dllは、MT5のEAやIndicatorに限らず、DLL呼び出しが可能なプログラム言語からも呼び出すことが出来ます。

【使用方法】

まず、こちらで解説した方法でLINEのサイトからパーソナルアクセストークンを取得します。

ヤフオクからライセンスを購入し、上記で取得したアクセストークンを取引メッセージにてお知らせ下さい。

次にSendLine64.zipをダウンロードして解凍します。

SendLine64.zipのファイル構成
■SendLine64
  │ SendLINE64の説明.pdf
  │ 説明その2(インジケータ).pdf
  ├─cpp
  │ │ sample.exe
  │ │ sample.png
  │ │ SendLine64.dll
  │ │ 
  │ └─source
  │     sample.cpp
  │     sample.vcxproj
  │     sample.vcxproj.filters
  │     sample.vcxproj.user
  │     SendLine64.h
  │     SendLine64.lib
  └─MQL5
    ├─Experts
    │   sl64sample.mq5
    ├─include
    │   SendLine64.mqh
    ├─Indicators
    │   PositionNotify.mq5
    │   SendChart.mq5
    └─libraries
        SendLine64.dll


続いて以下の手順で、動作に必要なファイルをMT5のフォルダに配置していきます。

MT5を起動し、メニューの【ファイル(F)】-【データフォルダを開く(D)】を選択します。



MQL5フォルダ内のIndicatorsフォルダにSendChart.mq5、PositionNotify.mq5をコピーします。



IncludeフォルダにSendLine64.mqh(インジケータのコンパイル時に必要)をコピーします。



LibrariesフォルダにSendLine64.dll(実行時に必要なDLL本体)をコピーします。



ナビゲータウィンドウの【指標】を右クリックし、ポップアップメニューの【更新】を選択します。



【指標】の中のSendChartをチャートにドラッグしてドロップします。



表示されるダイアログボックスの「仕様」タブの【自動売買を許可する(信頼できるアプリケーションのみで有効)】にチェックを入れます。



「インプット」タブの「ラインのアクセストークン」欄に上で取得したLINE Notifyのパーソナルアクセストークンを入力しOKボタンをクリックします。



SendChartは新しい時間足毎に、メッセージとチャートのスクショをLINE送信するインジケータです。

設定に誤りが無ければLINEにメッセージとスクショが表示されます。



SendChartのソースコードを掲載します。

#include <SendLine64.mqh>

//--- input parameters
input string AccessToken = ""; //ラインのアクセストークン
input string Note = ""; //メモ的な何か

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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[])
{
static datetime latest_time = 0;

if(latest_time != iTime(Symbol(), Period(), 1)){
latest_time = iTime(Symbol(), Period(), 1);

SetAccessToken(AccessToken);

int ret = 0;
string Message;
Message = Note;
if(Note != "")
Message = Message + "\r\n";
Message = Message + Symbol() + " " + TimeToString(TimeLocal(), TIME_DATE|TIME_SECONDS);

string Filename = "chart.png";
string Path = TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Files\\" + Filename;

if(!ChartScreenShot(0, Filename ,640, 480)){
Print("Error in ChartScreenShot():", GetLastError());
}else{
ret = SendLineWithImage(Message, Path);
}
if(ret == 0){
Print("Send [", Message, "]");
}else{
Print("SendLine error code:", ret);
}
}

return(rates_total);
}


2024/02/07 Wed. 11:05 | trackback: -- | comment: -- | edit