fc2ブログ

03 « 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.30.» 05

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

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

【Chatworkdll】MT4からチャットワークへメッセージや画像を送信 受信もね☆ 

Chatworkdllはプログラムからチャットワークへのメッセージを送受信できるDLLです。

SendLINEdllと違い、受信も可能なので簡易的なシグナル配信にも利用できます。

また、このDLLはアンマネージドDLLで、MT4のEAやIndicatorに限らず、

DLL呼び出しが可能な他のプログラム言語からも呼び出すことが出来ます。

Chatworkdllはフリーソフトとして公開します。

製品等への利用は、製造元(https://paopao46.blog.fc2.com)を明記していただく事が許可条件です。

【準備】

まず、下準備としてチャットワークのグループチャットルームを作ります。

ブラウザでチャットワークにログイン後、左ペインのプラス記号をクリックします。



【グループチャットを新規作成】をクリックします。



適当なチャット名と概要を入力し、作成ボタンをクリックします。

prfx

新しいチャットルームが作成されます。

prfx

【使用方法】

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

Chatworkdll.zipのファイル構成
■Chatworkdll
  ├─cpp
  │ ...
  └─MQL4
    ├─Experts
    │   cwSample.mq4
    ├─include
    │   Chatwork.mqh
    └─libraries
        Chatwork.dll


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

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



MQL4フォルダのExpertsにcwSample.mq4(動作確認用サンプルEA)をコピーします。



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



LibrariesにChatwork.dll(実行時に必要な本体)をコピーします。



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



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



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



パラメータの入力タブでAPIトークンとルームIDを入力する必要があるので、

ブラウザでチャットワークにログイン後、右上のプロフィール画像をクリックし、

【サービス連携】を選択します。



左側のメニューから【APIトークン】をクリックします。



APIトークンをコピーしてEAパラメータの入力タブの【AccessToken】にペーストします。



先程作成したグループチャットを開き、url欄のルームID(ridに続く数字)をコピーし、



EAパラメータの入力タブの【RoomID】にペーストします。



OKボタンをクリックし、自動売買ボタンを押し込んだ状態にします。



チャットルームにメッセージとチャート画像が送られれば成功です。

prfx

うまくいかない場合はMT4のエキスパートタブを確認しましょう。



cwSampleのソースを掲載します。

#include <Chatwork.mqh>

#define BIG_BUFFER_SIZE 0x8000

extern string AccessToken;
extern string RoomID;

//+------------------------------------------------------------------+
int init()
{
uchar arrayAccessToken[256];
StringToCharArray(AccessToken, arrayAccessToken, 0);

uchar arrayRoomID[256];
StringToCharArray(RoomID, arrayRoomID, 0);

string Message = "メッセージと画像";
uchar arrayMessage[256];
StringToCharArray(Message, arrayMessage, 0);

string Filename = "chart.gif";
string Path = TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL4\\Files\\" + Filename;
uchar arrayPath[256];
StringToCharArray(Path, arrayPath, 0);

int ret;
if(!ChartScreenShot(0, Filename ,800, 600)){
Print("ChartScreenShotでエラーが発生しました。エラーコード:", GetLastError());
}else{
ret = ChatworkSendFile(arrayAccessToken, arrayRoomID, arrayMessage, arrayPath);
if(ret == 0){
Print("メッセージ[", Message, "] + ファイル(", Path, ")を送信しました。");
}else{
Print("ChatworkSendFileでエラーが発生しました。エラーコード:", ret);
}
}

uchar arrayBuff[BIG_BUFFER_SIZE];
uint SendTime;
int i;
datetime dt;
int count = ChatworkReceiveMessage(arrayAccessToken, arrayRoomID
, arrayBuff, BIG_BUFFER_SIZE, true);
if(count > 0){
Print("未受信のメッセージが", count, "件ありました。");
for(i = 0; i < count; i++){
ret = ChatworkGetReceivedMessage(i, arrayBuff, BIG_BUFFER_SIZE, SendTime);
dt = SendTime;
Print("(", i, ")", TimeToString(SendTime, TIME_DATE|TIME_MINUTES)
, ":", CharArrayToString(arrayBuff));
}
}else{
count = ChatworkReceiveMessage(arrayAccessToken, arrayRoomID, arrayBuff
, BIG_BUFFER_SIZE, false);
if(count > 0){
if(count > 5)
count = 5;
Print("最新のメッセージを", count, "件表示します。");
for(i = 0; i < count; i++){
ret = ChatworkGetReceivedMessage(i, arrayBuff, BIG_BUFFER_SIZE, SendTime);
dt = SendTime;
Print("(", i, ")", TimeToString(SendTime, TIME_DATE|TIME_MINUTES)
, ":", CharArrayToString(arrayBuff));
}
}
}

return(0);
}

//+------------------------------------------------------------------+
int start(){

return(0);
}


Chatworkdllのダウンロードはこちらです。
2022/04/24 Sun. 17:54 | trackback: -- | comment: -- | edit