I post an alternative way to launch web requests - with the help of graph objects, which use a template with an expert assistant. It can be used from both experts and indicators. Dependencies are the same as in the article. The files of the new implementation:
multiwebobjectworker.mqh - header file with common classes;
multiwebobjectworker.mq5 is a working expert performing web requests inside graph objects;
multiwebindicator.mq5 - unbuffered indicator showing the launch of web requests;
An object is created for each request, an expert assistant is created in it, and at the end of the request, the object is deleted. The exchange of query data and results, as in the article, is done through resources.
Judging by the logs, this mechanism does not provide full-fledged query execution parallelism, since the objects probably share a common event queue. Example log:
After a little analysis I found that the wyker does not receive the URL. Instead it receives a null value
What exactly programmes/libraries were used (you can just attach them)? Specific logs are also needed. MT5 version. Try in other earlier versions of MT5.
Everything is simple. I downloaded the archive from the site and ran in the diagnostic mode described in the text, changing only the sites, instead of three, specified only google.com prescribed in the webquest of the terminal.
version 5 build 2085 is not the latest at the moment. before this version I don't remember, it was also the latest at that moment.
from logs
2019.07.04 14:11:31.882 multiwebclient (AUDUSD,M5)> > > > Standard WebRequest 1 calls finished in 141ms
2019.07.04 14:11:31.882 multiwebclient (GBPUSD,M5) Pool manager transfers taQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::AUDUSD_PERIOD_M5_1_131797648225084732
2019.07.04 14:11:31.883 multiwebclient (AUDUSD,M5) Accepted: taQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::AUDUSD_PERIOD_M5_1_131797648225084732 after 0 retries
Everything is simple. I downloaded the archive from the site and ran in the diagnostic mode described in the text, changing only the sites, instead of three, specified only google.com prescribed in the webquest of the terminal.
Version 5 build 2085 is not the latest at the moment. I don't remember the version before, it was also the latest at that moment.
from logs
2019.07.04 14:11:31.882 multiwebclient (AUDUSD,M5)> > > > Standard WebRequest 1 calls finished in 141ms
2019.07.04 14:11:31.882 multiwebclient (GBPUSD,M5) Pool manager transfers taQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::AUDUSD_PERIOD_M5_1_131797648225084732
2019.07.04 14:11:31.883 multiwebclient (AUDUSD,M5) Accepted: taQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::AUDUSD_PERIOD_M5_1_131797648225084732 after 0 retries
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для совершения торговых операций на рынках, а вторые — для анализа котировок и выявления закономерностей в их изменении. При этом индикаторы могут использоваться непосредственно в роботах, образуя полноценную...
Nice article, thanks. How about WinINet Asynchronous mode?
I don't have plans to implement such a thing, sorry.
In the Russian discussion of the article one may find further investigation of the approach and an alternative implementation based on chart objects.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Многопоточный асинхронный WebRequest на MQL5 своими руками"
Stanislav Korotky, 2018.11.14 14:20
I post an alternative way to launch web requests - with the help of graph objects, which use a template with an expert assistant. It can be used from both experts and indicators. Dependencies are the same as in the article. The files of the new implementation:
An object is created for each request, an expert assistant is created in it, and at the end of the request, the object is deleted. The exchange of query data and results, as in the article, is done through resources.
Judging by the logs, this mechanism does not provide full-fledged query execution parallelism, since the objects probably share a common event queue. Example log:
I'm attaching the sources here as well.
Also please check for updated versions of include files from fxsaber, which are used in dependencies - they may contain bugfixes and speedups.
Absolutely amazingly incredible article !!!
Congratulations and thank you, @marketeer !
I can't get it to run.
Error 4002.
After a little analysis I found that the wyker does not receive the URL. Instead it receives a null value
I can't get it to work.
Error 4002.
After a little analysis I found that the wyker does not receive the URL. Instead it receives a null value
What exactly programmes/libraries were used (you can just attach them)? Specific logs are also needed. MT5 version. Try in other earlier versions of MT5.
Everything is simple. I downloaded the archive from the site and ran in the diagnostic mode described in the text, changing only the sites, instead of three, specified only google.com prescribed in the webquest of the terminal.
version 5 build 2085 is not the latest at the moment. before this version I don't remember, it was also the latest at that moment.
from logs
Replaced Resource date as it was in the comments above the situation has not changed.
In principle you can repeat it yourself and check how it works.....
Everything is simple. I downloaded the archive from the site and ran in the diagnostic mode described in the text, changing only the sites, instead of three, specified only google.com prescribed in the webquest of the terminal.
Version 5 build 2085 is not the latest at the moment. I don't remember the version before, it was also the latest at that moment.
from logs
Replaced the Resource date as it was in the comments above the situation has not changed.
In principle you can repeat it yourself and check how it works.....
Could not reproduce. Here is the log from running on build 2093:
Look for a problem in your settings or system.
I confirm that on default settings the script does not work - I get the same"WebRequest error code 4002...".
MetaTrader 5
Version: 5.00 build 2093
02 Jul 2019
===cut here===
2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) Accepted: aQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::USDJPY_PERIOD_H1_2_128968169154443359 after 0 retries
===cut here===
I confirm that on default settings the script does not work - I get the same"WebRequest error code 4002"....
MetaTrader 5
Version: 5.00 build 2093
02 Jul 2019
===cut here===
2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) Accepted: aQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::USDJPY_PERIOD_H1_2_128968169154443359 after 0 retries
===cut here===
Please write more details - OS version, antivirus, etc. I'm on Win 7, MT5 build 2093 works fine as shown above.
Basically, the question is for MQ, because the error is related to an "internal call", but I don't believe in help - support is closed.
The source code of the article is open source, so try to solve the problem on the machine where the error is reproduced.