9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MT4からDiscordに通知を送る

Last updated at Posted at 2020-03-27

Discordに通知したいとの要望があったので書きました。

Discordの準備

Discordにログインして通知を受け取るテキストチャンネルを作成して下さい。
作成したら[チャンネルの編集]をクリックします。
image01.png
[ウェブフック]を選択して、[ウェブフックを作成]をクリックします。
image02.png
ダイアログ下部に表示されているウェブフックURLをコピーします。
このウェブフックURLは後ほど使用するので忘れないようにして下さい。
最後に右下の[保存]をクリックしてDiscordの準備は完了です。

MT4の準備

MT4画面上部の[ツール]から[オプション]を選択します。
表示されたウィンドウにて[エキスパートアドバイザ]タブを選択します。
[WebRequestを許可するURLリスト]にチェックを入れます。
[新しいURLを追加、...]にをクリックし、「https://discordapp.com」と入力する。
image03.png

ウィンドウ下部の[OK]をクリックする。

実装

Discordの準備で取得したウェブフックURLを入力するためのパラメーターを用意します。
AlertDiscord関数はMQL4のWebRequest関数を使ってDiscordに通知を行います。
引数としてウェブフックURLとDiscordに通知したい内容を受け取ります。

input string WebhookURL = "";

bool AlertDiscord(const string  url, const string text)
{
    int status_code;
    string headers;
    char data[];
    char result[];
    
    if (IsTesting()) {
        return(false);
    }
    
    StringToCharArray("content=" + text, data, 0, WHOLE_ARRAY, CP_UTF8);
    
    status_code = WebRequest("POST", url, NULL, NULL, 5000, data, 0, result, headers);
   
    if (status_code == -1) {
        Print(GetLastError());
        return(false);
    }
    
    return(true);
}

int OnInit()
{
    AlertDiscord(Webhook, "hoge");

    return(INIT_SUCCEEDED);
}

void OnTick()
{

}

注意点として、WebRequest関数を使用しているのでEAかスクリプトでないとエラーが出ます。

上記のコードを実行するとDiscordに通知が送れます。
image04.png

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?