MQL5でWebRequestエラー4014:代替案についてヘルプが必要です

 
皆さん、こんにちは。

私はMQL5のエキスパートアドバイザを開発しており、トレードシグナルの分析のためにPythonサーバーと通信するためにWebRequestを使用しています。しかし、WebRequestを使用しようとすると、エラー4014「Function is not allowed for call」が発生してしまいます。

すでに以下のことを試しました:
- MT5の設定で許可されたURLのリストにサーバーのURLを追加する
- ファイアウォールとウイルス対策の設定でMT5とPythonがブロックされていないことを確認する 
- localhostの代わりに127.0.0.1を使用する

関連するコードの抜粋は以下の通りです:


int statusCode = WebRequest("POST", url, NULL, NULL, requestData, responseData, responseHeaders);

if(statusCode == 200)
{
    // Parse the JSON response
    jsonResponse.Deserialize(responseData);

    // Get the signal from the response  
    signal = jsonResponse["signal"].ToStr();
}
else
{
    PrintFormat("Error getting signal from server. Status code: %d, Error: %d", statusCode, GetLastError());
}

WebRequestの制限を回避するためにmql-httpのようなライブラリの使用を検討しています。ただ、他に試せる解決策や回避策があるかどうか、まず確認したいと思います。


<netsh コマンド実行後のブラウザでのアクセス結果>

{

  "error": "Internal server error"

}

</netsh コマンド実行: ブラウザでのアクセス結果>

<MT5ジャーナルログ>

2024.09.12 17:38:02.773 MetaTester 5 started on 127.0.0.1:3000

2024.09.12 17:38:02.781 cloud network mode is off

2024.09.12 17:38:02.781 initialization finished

2024.09.12 17:38:02.853 login (build 4476)

2024.09.12 17:38:03.493 12832 bytes of account info loaded

2024.09.12 17:38:03.493 1478 bytes of tester parameters loaded

2024.09.12 17:38:03.493 5316 bytes of input parameters loaded

2024.09.12 17:38:03.499 12577 bytes of symbols list loaded (1479 symbols)

2024.09.12 17:38:03.499 expert file added: Experts\LWSwiftTrendNavigator_AUDUSD\LWSwiftTrendNavigator_AUDUSD.ex5. 53125 bytes loaded

2024.09.12 17:38:03.619 6053 Mb available, 75 blocks set for ticks generating

2024.09.12 17:38:03.619 initial deposit 3000.00 USD, leverage 1:100

2024.09.12 17:38:03.620 successfully initialized

2024.09.12 17:38:03.620 68 Kb of total initialization data received

2024.09.12 17:38:03.621 Intel Core i7-10510U  @ 1.80GHz, 16147 MB

2024.09.12 17:38:03.648 AUDUSD: symbol to be synchronized

2024.09.12 17:38:03.648 AUDUSD: symbol synchronized, 3880 bytes of symbol info received

2024.09.12 17:38:03.652 AUDUSD: history synchronization started

2024.09.12 17:38:03.653 AUDUSD: load 27 bytes of history data to synchronize in 0:00:00.001

2024.09.12 17:38:03.654 AUDUSD: history synchronized from 2020.01.02 to 2023.12.29

2024.09.12 17:38:03.657 AUDUSD: ticks synchronization started

2024.09.12 17:38:03.658 AUDUSD: load 34 bytes of tick data to synchronize in 0:00:00.000

2024.09.12 17:38:03.658 AUDUSD: history ticks synchronized from 2021.01.04 to 2023.12.27

2024.09.12 17:38:03.796 AUDUSD,H4: history cache allocated for 3033 bars and contains 2998 bars from 2022.01.03 00:00 to 2023.12.01 20:00

2024.09.12 17:38:03.796 AUDUSD,H4: history begins from 2022.01.03 00:00

2024.09.12 17:38:03.818 AUDUSD,H4 (XMTrading-MT5 3): generating based on real ticks

2024.09.12 17:38:03.818 testing with execution delay 50 milliseconds

2024.09.12 17:38:03.819 AUDUSD,H4: testing of Experts\LWSwiftTrendNavigator_AUDUSD\LWSwiftTrendNavigator_AUDUSD.ex5 from 2023.12.04 00:00 to 2023.12.10 00:00 started with inputs:

2024.09.12 17:38:03.819   =

2024.09.12 17:38:03.819   InpServerURL=http://127.0.0.1:5000/analyze

2024.09.12 17:38:03.819   InpToken=

2024.09.12 17:38:03.819   =

2024.09.12 17:38:03.819   InpVolumeSize=0.01

2024.09.12 17:38:03.819   InpMagicNumber=202305

2024.09.12 17:38:03.819   InpSlippage=5

2024.09.12 17:38:03.819   =

2024.09.12 17:38:03.819   InpTradeTimeframe=16388

2024.09.12 17:38:03.819   InpHigherTimeframe=16408

2024.09.12 17:38:03.930 AUDUSD : real ticks begin from 2021.01.04 00:00:00

2024.09.12 17:38:04.083 AUDUSD,Daily: history cache allocated for 511 bars and contains 505 bars from 2022.01.03 00:00 to 2023.12.01 00:00

2024.09.12 17:38:04.095 AUDUSD,Daily: 1 bar from 2023.12.04 00:00 added

2024.09.12 17:38:04.095 AUDUSD,Daily: history begins from 2022.01.03 00:00

2024.09.12 17:38:04.095 2023.12.04 00:00:02   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:05.368 2023.12.04 04:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:06.444 2023.12.04 08:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:07.975 2023.12.04 12:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:09.467 2023.12.04 16:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:11.935 2023.12.04 20:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:12.839 2023.12.05 00:00:30   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:13.797 2023.12.05 04:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:15.032 2023.12.05 08:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:16.557 2023.12.05 12:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:18.099 2023.12.05 16:00:01   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:20.812 2023.12.05 20:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:21.599 2023.12.06 00:00:31   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:22.558 2023.12.06 04:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:23.488 2023.12.06 08:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:24.838 2023.12.06 12:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:26.277 2023.12.06 16:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:28.227 2023.12.06 20:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:28.991 2023.12.07 00:01:35   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:29.738 2023.12.07 04:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:30.864 2023.12.07 08:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:32.568 2023.12.07 12:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:34.285 2023.12.07 16:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:36.944 2023.12.07 20:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:38.036 2023.12.08 00:00:51   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:39.145 2023.12.08 04:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:40.390 2023.12.08 08:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:41.988 2023.12.08 12:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:43.934 2023.12.08 16:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:47.019 2023.12.08 20:00:00   Error getting signal from server. Status code: -1, Error: 4014

2024.09.12 17:38:47.932 final balance 3000.00 USD

2024.09.12 17:38:47.936 AUDUSD,H4: 373544 ticks, 30 bars generated. Environment synchronized in 0:00:00.154. Test passed in 0:00:44.292 (including ticks preprocessing 0:00:00.094).

2024.09.12 17:38:47.936 AUDUSD,H4: total time from login to stop testing 0:00:44.446 (including 0:00:00.154 for history data synchronization)

2024.09.12 17:38:47.937 399 Mb memory used including 0.94 Mb of history data, 64 Mb of tick data

2024.09.12 17:38:47.937 log file "C:\Users\foro3\AppData\Roaming\MetaQuotes\Tester\C4171FD2B38378D6406D5C84412B5F20\Agent-127.0.0.1-3000\logs\20240912.log" written

2024.09.12 17:38:47.938 test Experts\LWSwiftTrendNavigator_AUDUSD\LWSwiftTrendNavigator_AUDUSD.ex5 on AUDUSD,H4 thread finished

2024.09.12 17:38:47.962 prepare for shutdown

2024.09.12 17:38:47.962 shutdown finished

</MT5ジャーナルログ>

<MT5ストラテジーテスター:操作ログ>

2024.09.12 17:37:12.896 Tester Cloud servers switched off

2024.09.12 17:38:02.072 Tester "LWSwiftTrendNavigator_AUDUSD\LWSwiftTrendNavigator_AUDUSD.ex5" 64 bit

2024.09.12 17:38:02.326 Tester AUDUSD: preliminary downloading of history ticks started, it may take quite a long time

2024.09.12 17:38:02.326 Tester AUDUSD: preliminary downloading of history ticks completed

2024.09.12 17:38:02.326 Tester AUDUSD: ticks data begins from 2021.01.04 00:00

2024.09.12 17:38:02.326 Tester AUDUSD: preliminary downloading of history ticks started, it may take quite a long time

2024.09.12 17:38:02.326 Tester AUDUSD: preliminary downloading of history ticks completed

2024.09.12 17:38:02.326 Tester AUDUSD: ticks data begins from 2021.01.04 00:00

2024.09.12 17:38:02.331 Core 1 agent process started on 127.0.0.1:3000

2024.09.12 17:38:02.331 Core 1 connecting to 127.0.0.1:3000

2024.09.12 17:38:02.842 Core 1 connected

2024.09.12 17:38:02.855 Core 1 authorized (agent build 4476)

2024.09.12 17:38:02.858 Tester AUDUSD,H4 (XMTrading-MT5 3): visual testing of Experts\LWSwiftTrendNavigator_AUDUSD\LWSwiftTrendNavigator_AUDUSD.ex5 from 2023.12.04 00:00 to 2023.12.10 00:00

2024.09.12 17:38:03.622 Core 1 common synchronization completed

2024.09.12 17:38:03.658 Core 1 AUDUSD: ticks synchronized already [43 bytes]

2024.09.12 17:38:47.962 Core 1 connection closed

</MT5ストラテジーテスター:操作ログ>

<MT5 logs>

MO 0 13:33:08.698 Terminal XM Trading MT5 x64 build 4476 started for Tradexfin Limited

OD 0 13:33:08.698 Terminal Windows 11 build 22631, 8 x Intel Core i7-10510U  @ 1.80GHz, AVX2, 7 / 15 Gb memory, 483 / 939 Gb disk, UAC, GMT+9

DD 0 13:33:08.698 Terminal C:\Users\foro3\AppData\Roaming\MetaQuotes\Terminal\C4171FD2B38378D6406D5C84412B5F20

DJ 0 13:33:11.207 Experts expert LWSwiftTrendNavigator_AUDUSD (AUDUSD,H4) loaded successfully

JO 0 13:33:11.278 Experts expert LWSwiftTrendNavigator_AUDUSD (AUDUSD,H4) loaded successfully

RQ 0 13:33:11.800 Network '75171169': authorized on XMTrading-MT5 3 through Access Server JP 8 (ping: 162.69 ms, build 4260)

PL 0 13:33:11.800 Network '75171169': previous successful authorization performed from 217.178.206.250 on 2024.09.09 07:11:02

CS 0 13:33:12.643 Network '75171169': terminal synchronized with Tradexfin Limited: 0 positions, 0 orders, 1479 symbols, 0 spreads

IL 0 13:33:12.643 Network '75171169': trading has been enabled - hedging mode

MF 0 13:33:12.714 Trades use MetaTrader VPS Hosting Service to speed up the execution: 4.12 ms via 'MQL5 London LD4 17' instead of 162.69 ms

OK 0 13:33:13.892 Network '75171169': scanning network for access points

FP 0 13:33:13.950 MQL5.community activated for 'forofx358', balance: 0.00

HQ 0 13:33:16.634 MQL5.chats activated for 'forofx358'

MJ 0 13:33:17.238 Network '75171169': scanning network finished

CS 1 16:04:42.467 Network '75171169': connection to XMTrading-MT5 3 lost

LJ 0 16:04:42.836 Network '75171169': authorized on XMTrading-MT5 3 through Access Server JP 8 (ping: 164.09 ms, build 4260)

KG 0 16:04:42.836 Network '75171169': previous successful authorization performed from 217.178.206.250 on 2024.09.12 07:33:12

HH 0 16:04:44.938 Network '75171169': terminal synchronized with Tradexfin Limited: 0 positions, 0 orders, 1479 symbols, 0 spreads

FG 0 16:04:44.938 Network '75171169': trading has been enabled - hedging mode

RP 1 16:17:49.708 Network '75171169': connection to XMTrading-MT5 3 lost

NG 0 16:17:50.578 Network '75171169': authorized on XMTrading-MT5 3 through Access Server JP 8 (ping: 164.09 ms, build 4260)

FJ 0 16:17:50.578 Network '75171169': previous successful authorization performed from 217.178.206.250 on 2024.09.12 10:04:44

EE 0 16:17:52.747 Network '75171169': terminal synchronized with Tradexfin Limited: 0 positions, 0 orders, 1479 symbols, 0 spreads

GJ 0 16:17:52.747 Network '75171169': trading has been enabled - hedging mode

MQ 0 16:23:21.132 OpenCL opencl.dll successfully loaded

NF 0 16:23:21.235 OpenCL device #0: GPU 'Intel UHD Graphics' with OpenCL 3.0 (24 units, 1150 MHz, 6458 Mb, version 30.0.100.9864, rating 425)

IF 0 16:24:22.195 Experts expert LWSwiftTrendNavigator_AUDUSD (AUDUSD,H4) loaded successfully

DJ 0 17:08:17.577 Experts expert LWSwiftTrendNavigator_AUDUSD (AUDUSD,H4) loaded successfully

DR 0 17:36:51.545 Experts expert LWSwiftTrendNavigator_AUDUSD (AUDUSD,H4) removed

KL 0 17:36:59.663 Experts expert LWSwiftTrendNavigator_AUDUSD (AUDUSD,H4) removed

HI 0 17:36:59.664 Experts expert LWSwiftTrendNavigator_AUDUSD (AUDUSD,H4) removed

EL 0 17:37:01.241 Terminal exit with code 0

RD 0 17:37:01.245 Network '75171169': disconnected from XMTrading-MT5 3

DS 0 17:37:01.408 Terminal stopped with 0

IJ 0 17:37:01.437 Terminal shutdown with 0

CO 0 17:37:11.065 Terminal XM Trading MT5 x64 build 4476 started for Tradexfin Limited

GD 0 17:37:11.066 Terminal Windows 11 build 22631, 8 x Intel Core i7-10510U  @ 1.80GHz, AVX2, 6 / 15 Gb memory, 483 / 939 Gb disk, UAC, GMT+9

OD 0 17:37:11.066 Terminal C:\Users\foro3\AppData\Roaming\MetaQuotes\Terminal\C4171FD2B38378D6406D5C84412B5F20

NJ 0 17:37:13.168 Experts expert LWSwiftTrendNavigator_AUDUSD (AUDUSD,H4) loaded successfully

CN 0 17:37:13.240 Experts expert LWSwiftTrendNavigator_AUDUSD (AUDUSD,H4) loaded successfully

CQ 0 17:37:13.997 Network '75171169': authorized on XMTrading-MT5 3 through Access Server JP 8 (ping: 164.09 ms, build 4260)

QL 0 17:37:13.997 Network '75171169': previous successful authorization performed from 217.178.206.250 on 2024.09.12 10:17:51

JS 0 17:37:14.691 Network '75171169': terminal synchronized with Tradexfin Limited: 0 positions, 0 orders, 1479 symbols, 0 spreads

DM 0 17:37:14.691 Network '75171169': trading has been enabled - hedging mode

LF 0 17:37:14.744 Trades use MetaTrader VPS Hosting Service to speed up the execution: 3.43 ms via 'MQL5 London LD4 25' instead of 164.09 ms

II 0 17:37:14.844 MQL5.community activated for 'forofx358', balance: 0.00

DH 0 17:37:15.172 MQL5.chats activated for 'forofx358'

LF 0 17:37:21.482 Experts expert LWSwiftTrendNavigator_AUDUSD (AUDUSD,H4) loaded successfully

</MT5 logs>


ご提案やご見解をいただければ幸いです。よろしくお願いいたします。

Akira Iseki.
AUDUSD - Australian Dollar vs US Dollar - 今日の為替レート - 外国為替レート
AUDUSD - Australian Dollar vs US Dollar - 今日の為替レート - 外国為替レート
  • 2024.09.12
  • www.mql5.com
AUDUSD - Australian Dollar vs US Dollar - 最も人気のある通貨ペアチャートです。以下のフィルターを使用して、必要な為替レートを選択してください。各チャートには、呼び値(売買とも)と毎日の伸びが示されています。
 

どこに接続して、何をしようとしているんですか?

ログを見ると、InpMagicNumberとかInpVolumeSizeなど注文データのようなものがありますが、注文サーバーに接続しているんですか?


※この質問は「 エキスパートアドバイザーと自動取引 」のセクションに投稿すべきです。

MQL5フォーラム: エキスパートアドバイザーと自動取引
MQL5フォーラム: エキスパートアドバイザーと自動取引
  • www.mql5.com
このセクションは自動取引プロセスのために使われるカスタムエキスパートアドバイザーについてのディスカッションを目的としています。
 
- MT5の設定で許可されたURLのリストにサーバーのURLを追加する


int  WebRequest( 

  const string     method,           // HTTP メソッド  

  const string     url,             // URL 

...

過去に遭遇した「4014」のエラーは、WebRequestの引数「url」が、URLリストに追加されていない事に起因する事が多かったです。

引数の値とリストが一致しているかどうかを、再確認されることをお勧めします。

「エキスパートアドバイザを開発」とおっしゃっていますので、「インジケータ」という事はないですね。

 
Shino Unada #:

どこに接続して、何をしようとしているんですか?

ログを見ると、InpMagicNumberとかInpVolumeSizeなど注文データのようなものがありますが、注文サーバーに接続しているんですか?


※この質問は「 エキスパートアドバイザーと自動取引 」のセクションに投稿すべきです。

Shino Unada様、

ご指摘ありがとうございます。私のプロジェクトについて説明させていただきます。

このEAはMT5とPythonを連携させ、Pythonサーバーからトレードシグナルを受け取る設計になっています。InpMagicNumberやInpVolumeSizeはEAの設定パラメータで、Pythonサーバーには接続していません。

サーバーへの接続にはWebRequest()関数を使用しています。現在、ストラテジーテスターでの実行時にエラーが発生しており、その解決に取り組んでいます。

ご指摘の通り、この質問は「エキスパートアドバイザーと自動取引」セクションにより適していたかもしれません。今後は適切なセクションに投稿するよう気をつけます。

貴重なアドバイスをありがとうございました。
 
Yutaka Okamoto #:


int  WebRequest( 

  const string     method,           // HTTP メソッド  

  const string     url,             // URL 

...

過去に遭遇した「4014」のエラーは、WebRequestの引数「url」が、URLリストに追加されていない事に起因する事が多かったです。

引数の値とリストが一致しているかどうかを、再確認されることをお勧めします。

「エキスパートアドバイザを開発」とおっしゃっていますので、「インジケータ」という事はないですね。

Yutaka Okamoto様、

貴重なアドバイスをありがとうございます。

ご指摘の通り、WebRequestのURL引数とMT5の許可URLリストの不一致がエラーの原因である可能性が高いです。以下のURLを使用しています:

input string InpServerURL = "http://127.0.0.1:5000/analyze";

このURLがMT5の許可リストに正確に追加されているか再確認します。また、エキスパートアドバイザーの開発中であることも確認いたします。

「4014」エラーの一般的な原因について教えていただき、ありがとうございます。この情報は非常に役立ちます。

今後はドキュメントをより注意深く読み、質問する前に十分な調査を行うよう心がけます。

ご指導いただき、誠にありがとうございました。
 

forofx358 #:

input string InpServerURL = "http://127.0.0.1:5000/analyze";

たしか、ポート指定は出来なかったと思います。

ローカルホストで起動されている、webサービス側の設定で80番を開いた方が、解決が早いかもしれません。