
MQL4MQL5 出力・通知・状態
WebRequest()
- できること
- Web サーバーに HTTP リクエストを送る
- 対応
- MQL4・MQL5
WebRequest() とは
Web サーバーに HTTP の GET・POST リクエストを送り、応答を受け取る関数です。外部の API からデータを取ったり、LINE・Discord などに通知を送ったりするときに使います。
WebRequest() の書式と引数
MQL4 の場合MT4
引数の組み合わせが違う 2 通りの書き方があります。
int WebRequest(
const string method,
const string url,
const string cookie,
const string referer,
int timeout,
const char &data[],
int data_size,
char &result[],
string &result_headers
)
int WebRequest(
const string method,
const string url,
const string headers,
int timeout,
const char &data[],
char &result[],
string &result_headers
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
method | const string | 必須 | "GET" または "POST"。 |
url | const string | 必須 | リクエスト先の URL。 |
cookie | const string | 必須 | Cookie の文字列。 |
referer | const string | 必須 | Referer ヘッダーの値。 |
timeout | int | 必須 | タイムアウト(ミリ秒)。 |
data | const char &[] | 必須 | 送信するデータ(POST の本文)。 |
data_size | int | 必須 | 送信するデータのサイズ。 |
result | char &[] | 必須 | 応答の本文を受け取る配列。 |
result_headers | string & | 必須 | 応答のヘッダーを受け取る変数。 |
headers | const string | 必須 | リクエストヘッダー("Content-Type: application/json\r\n" のように改行で区切る)。 |
戻り値(MQL4)
HTTP のステータスコード(200 など)。失敗したら -1(GetLastError() で理由を確認)。
MQL5 の場合MT5
引数の組み合わせが違う 2 通りの書き方があります。
int WebRequest(
const string method,
const string url,
const string cookie,
const string referer,
int timeout,
const uchar &data[],
int data_size,
uchar &result[],
string &result_headers
)
int WebRequest(
const string method,
const string url,
const string headers,
int timeout,
const uchar &data[],
uchar &result[],
string &result_headers
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
method | const string | 必須 | "GET" または "POST"。 |
url | const string | 必須 | リクエスト先の URL。 |
cookie | const string | 必須 | Cookie の文字列。 |
referer | const string | 必須 | Referer ヘッダーの値。 |
timeout | int | 必須 | タイムアウト(ミリ秒)。 |
data | const uchar &[] | 必須 | 送信するデータ(POST の本文)。 |
data_size | int | 必須 | 送信するデータのサイズ。 |
result | uchar &[] | 必須 | 応答の本文を受け取る配列。 |
result_headers | string & | 必須 | 応答のヘッダーを受け取る変数。 |
headers | const string | 必須 | リクエストヘッダー("Content-Type: application/json\r\n" のように改行で区切る)。 |
戻り値(MQL5)
HTTP のステータスコード(200 など)。失敗したら -1(GetLastError() で理由を確認)。
WebRequest() の使い方(コード例)
MQL4
char data[], result[];
string headers;
int code = WebRequest("GET", "https://example.com/", "", 5000, data, result, headers);
if(code == -1)
Print("WebRequest 失敗 error=", GetLastError(), "(URL を許可リストに登録しましたか?)");
else
Print("HTTP ", code, " ", CharArrayToString(result, 0, 200, CP_UTF8));MQL5
uchar data[], result[];
string headers;
int code = WebRequest("GET", "https://example.com/", "", 5000, data, result, headers);
if(code == -1)
Print("WebRequest 失敗 error=", GetLastError(), "(URL を許可リストに登録しましたか?)");
else
Print("HTTP ", code, " ", CharArrayToString(result, 0, 200, CP_UTF8));OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
WebRequest() の注意点
- 事前に「ツール」→「オプション」→「エキスパートアドバイザー」で「WebRequest を許可する URL」に URL を登録しておく必要があります。登録していないとエラーになります(MT4 は4060、MT5 は4014)。
- インジケーターでは使えません。EA とスクリプトで使います。ストラテジーテスターでも使えません。
- 応答を待つ間 EA の処理が止まるので、timeout は短めにします。
MQL4 と MQL5 の違い
MQL4 は送受信のデータに char 型の配列、MQL5 は uchar 型の配列を使います。移植するときは配列の型を変えます。












