Обсуждение статьи "Многопоточный асинхронный WebRequest на MQL5 своими руками" - страница 4

 
Someone Else:

Чо то не получается запустить.

Пишет ошибку 4002.

После небольшого анализа нашел что вёкер не получает URL. Вместо него приходит нулевое значение

Какие именно программы/библиотеки использовались (можно просто приложить)? Также нужны конкретные логи. Версия МТ5. Попробуйте в других более ранних версиях МТ5.

 

Все просто. Скачал с сайта архив и запустил в режиме диагностики описаные в тексте, изменив только сайты, вместо трех, указал только гугл.ком прописанный в вебреквест терминала.

версия 5 билд 2085 не текущий момент последняя. до этого версию не помню, тоже была на тот момент последняя. 

из логов 

2019.07.04 14:11:31.882 multiwebclient (AUDUSD,M5) > > > Standard WebRequest 1 calls finished in 141ms

2019.07.04 14:11:31.882 multiweb (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

2019.07.04 14:11:31.883 multiweb (GBPUSD,M5) 131797648225084729: Reading request taQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::AUDUSD_PERIOD_M5_1_131797648225084732

2019.07.04 14:11:31.883 multiweb (GBPUSD,M5) 131797648225084729: Got 0 bytes in request

2019.07.04 14:11:31.883 multiweb (GBPUSD,M5) 131797648225084729:    0 

2019.07.04 14:11:31.883 multiwebclient (AUDUSD,M5) WebRequest error code 4002

2019.07.04 14:11:31.890 multiweb (GBPUSD,M5) Result code from 131797648225084729: 4002, now idle

2019.07.04 14:11:31.890 multiweb (GBPUSD,M5) 131797648225084729: Failed with code 4002


Заменил Ресурс дата как было в коментариях выше ситуация не изменилась.

В принцепи можете сами повторить и проверить как оно работает....

 
Someone Else:

Все просто. Скачал с сайта архив и запустил в режиме диагностики описаные в тексте, изменив только сайты, вместо трех, указал только гугл.ком прописанный в вебреквест терминала.

версия 5 билд 2085 не текущий момент последняя. до этого версию не помню, тоже была на тот момент последняя. 

из логов 

2019.07.04 14:11:31.882 multiwebclient (AUDUSD,M5) > > > Standard WebRequest 1 calls finished in 141ms

2019.07.04 14:11:31.882 multiweb (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

2019.07.04 14:11:31.883 multiweb (GBPUSD,M5) 131797648225084729: Reading request taQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\multiwebclient.ex5::AUDUSD_PERIOD_M5_1_131797648225084732

2019.07.04 14:11:31.883 multiweb (GBPUSD,M5) 131797648225084729: Got 0 bytes in request

2019.07.04 14:11:31.883 multiweb (GBPUSD,M5) 131797648225084729:    0 

2019.07.04 14:11:31.883 multiwebclient (AUDUSD,M5) WebRequest error code 4002

2019.07.04 14:11:31.890 multiweb (GBPUSD,M5) Result code from 131797648225084729: 4002, now idle

2019.07.04 14:11:31.890 multiweb (GBPUSD,M5) 131797648225084729: Failed with code 4002


Заменил Ресурс дата как было в коментариях выше ситуация не изменилась.

В принцепи можете сами повторить и проверить как оно работает....

Не смог воспроизвести. Вот лог от запуска на билде 2093:

2019.07.06 23:13:31.313 multiweb (EURUSD,H1)    OnInit 132069173221452536
2019.07.06 23:13:31.313 multiweb (EURUSD,H1)    WebRequest Pool Manager started in 132069173221452536
2019.07.06 23:13:32.810 multiweb (EURUSD,H1)    OnInit 132069176123428674
2019.07.06 23:13:32.810 multiweb (EURUSD,H1)    WebRequest Worker started in 132069176123428674; manager in 132069173221452536
2019.07.06 23:13:32.998 multiweb (EURUSD,H1)    OnInit 132069176125768678
2019.07.06 23:13:32.998 multiweb (EURUSD,H1)    WebRequest Worker started in 132069176125768678; manager in 132069173221452536
2019.07.06 23:13:33.169 multiweb (EURUSD,H1)    OnInit 132069176127796682
2019.07.06 23:13:33.169 multiweb (EURUSD,H1)    WebRequest Worker started in 132069176127796682; manager in 132069173221452536
2019.07.06 23:14:36.159 multiwebclient (GBPJPY,H1)      > > > Standard WebRequest 3 calls finished in 874ms
2019.07.06 23:14:36.159 multiweb (EURUSD,H1)    Pool manager transfers \Experts\multiwebclient.ex5::GBPJPY_PERIOD_H1_1_132069176509557415
2019.07.06 23:14:36.159 multiweb (EURUSD,H1)    132069176123428674: Reading request \Experts\multiwebclient.ex5::GBPJPY_PERIOD_H1_1_132069176509557415
2019.07.06 23:14:36.159 multiwebclient (GBPJPY,H1)      Accepted: \Experts\multiwebclient.ex5::GBPJPY_PERIOD_H1_1_132069176509557415 after 0 retries
2019.07.06 23:14:36.159 multiweb (EURUSD,H1)    Pool manager transfers \Experts\multiwebclient.ex5::GBPJPY_PERIOD_H1_2_132069176509557415
2019.07.06 23:14:36.159 multiwebclient (GBPJPY,H1)      Accepted: \Experts\multiwebclient.ex5::GBPJPY_PERIOD_H1_2_132069176509557415 after 0 retries
2019.07.06 23:14:36.159 multiweb (EURUSD,H1)    132069176125768678: Reading request \Experts\multiwebclient.ex5::GBPJPY_PERIOD_H1_2_132069176509557415
2019.07.06 23:14:36.159 multiweb (EURUSD,H1)    132069176123428674: Got 64 bytes in request
2019.07.06 23:14:36.159 multiweb (EURUSD,H1)    132069176123428674: GET https://google.com/ User-Agent: n/a 5000 
2019.07.06 23:14:36.159 multiweb (EURUSD,H1)    132069176125768678: Got 60 bytes in request
2019.07.06 23:14:36.159 multiweb (EURUSD,H1)    132069176125768678: GET https://ya.ru User-Agent: n/a 5000 
2019.07.06 23:14:36.174 multiweb (EURUSD,H1)    Pool manager transfers \Experts\multiwebclient.ex5::GBPJPY_PERIOD_H1_3_132069176509557415
2019.07.06 23:14:36.174 multiwebclient (GBPJPY,H1)      Accepted: \Experts\multiwebclient.ex5::GBPJPY_PERIOD_H1_3_132069176509557415 after 0 retries
2019.07.06 23:14:36.174 multiweb (EURUSD,H1)    132069176127796682: Reading request \Experts\multiwebclient.ex5::GBPJPY_PERIOD_H1_3_132069176509557415
2019.07.06 23:14:36.174 multiweb (EURUSD,H1)    132069176127796682: Got 72 bytes in request
2019.07.06 23:14:36.174 multiweb (EURUSD,H1)    132069176127796682: GET https://www.startpage.com/ User-Agent: n/a 5000 
2019.07.06 23:14:36.283 multiwebclient (GBPJPY,H1)      132069176509557415: Result code 200
2019.07.06 23:14:36.283 multiwebclient (GBPJPY,H1)      132069176509557415: Reading result \Experts\multiweb.ex5::WRR_132069176125768678
2019.07.06 23:14:36.283 multiweb (EURUSD,H1)    132069176125768678: Done in 125ms
2019.07.06 23:14:36.283 multiweb (EURUSD,H1)    Result code from 132069176125768678: 200, now idle
2019.07.06 23:14:36.283 multiwebclient (GBPJPY,H1)      132069176509557415: Got 17664 bytes in response
2019.07.06 23:14:36.283 multiwebclient (GBPJPY,H1)      GET https://ya.ru
2019.07.06 23:14:36.283 multiwebclient (GBPJPY,H1)      Received 4043 bytes in header, 13540 bytes in document
2019.07.06 23:14:36.439 multiwebclient (GBPJPY,H1)      132069176509557415: Result code 200
2019.07.06 23:14:36.439 multiwebclient (GBPJPY,H1)      132069176509557415: Reading result \Experts\multiweb.ex5::WRR_132069176123428674
2019.07.06 23:14:36.439 multiweb (EURUSD,H1)    Result code from 132069176123428674: 200, now idle
2019.07.06 23:14:36.439 multiweb (EURUSD,H1)    132069176123428674: Done in 281ms
2019.07.06 23:14:36.439 multiwebclient (GBPJPY,H1)      132069176509557415: Got 12744 bytes in response
2019.07.06 23:14:36.439 multiwebclient (GBPJPY,H1)      GET https://google.com/
2019.07.06 23:14:36.439 multiwebclient (GBPJPY,H1)      Received 736 bytes in header, 11927 bytes in document
2019.07.06 23:14:36.455 multiwebclient (GBPJPY,H1)      132069176509557415: Result code 200
2019.07.06 23:14:36.455 multiwebclient (GBPJPY,H1)      132069176509557415: Reading result \Experts\multiweb.ex5::WRR_132069176127796682
2019.07.06 23:14:36.455 multiweb (EURUSD,H1)    Result code from 132069176127796682: 200, now idle
2019.07.06 23:14:36.455 multiweb (EURUSD,H1)    132069176127796682: Done in 280ms
2019.07.06 23:14:36.471 multiwebclient (GBPJPY,H1)      132069176509557415: Got 32520 bytes in response
2019.07.06 23:14:36.471 multiwebclient (GBPJPY,H1)      GET https://www.startpage.com/
2019.07.06 23:14:36.471 multiwebclient (GBPJPY,H1)      Received 956 bytes in header, 31482 bytes in document
2019.07.06 23:14:36.471 multiwebclient (GBPJPY,H1)      > > > Async WebRequest workers [3] finished 3 tasks in 312ms

Ищите проблему у себя в настройках или в системе.

 

Подтверждаю, что на дефолтовых настройках скрипт не работает - получаю ту же самую "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

2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) WebRequest error code 4002

===cut here===


Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для совершения торговых операций на рынках, а вторые — для анализа котировок и выявления закономерностей в их изменении. При этом индикаторы могут использоваться непосредственно в роботах, образуя полноценную...
 
Igor K:

Подтверждаю, что на дефолтовых настройках скрипт не работает - получаю ту же самую "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

2019.07.23 00:47:37.182 multiwebclient (USDJPY,H1) WebRequest error code 4002

===cut here===


Пишите больше подробностей - версию ОС, антивирус и пр. Я меня на Win 7, MT5 сборка 2093 работает нормально, как показано выше.

В принципе, вопрос к MQ, потому что ошибка связана с "внутренним вызовом", но в помощь слабо верится - support то закрыт.

Исходники статьи - открытые, так что постарайтесь разобраться с проблемой на той машине, где ошибка воспроизводится.

 

Попробовал в отключенным файрволом и дефендером - результат тот же.

Win 10 Home. Антивирусов нет, ибо "разборчив в связях"

 

Добрый день,

Статья очень заинтересовала.

Если позволите брошу свой камешек...

В связи с введением разработчиками большого количества функций работы с календарем, запрос по http становится менее востребованным (я не думаю что широко применяли запрос других данных). Меня в первую очередь заинтересовала возможность параллельного запуска алгоритма оптимизации (периодически, по параметру просадки и др., неважно).

Если возможно, ответьте, возможен ли подобный механизм (с выполнением в отдельном потоке) на Сервисах?

С уважением к проделанной автором работе

 
Олег Миронов:

В связи с введением разработчиками большого количества функций работы с календарем, запрос по http становится менее востребованным (я не думаю что широко применяли запрос других данных). Меня в первую очередь заинтересовала возможность параллельного запуска алгоритма оптимизации (периодически, по параметру просадки и др., неважно).

Если возможно, ответьте, возможен ли подобный механизм (с выполнением в отдельном потоке) на Сервисах?

Встроенный календарь - довольно общий, так что полезной профильной информации для скачивания из сторонних источников по-прежнему остается много. Причем, это не только новости, но и сигналы, и котировки с криптовалютных бирж и пр. Задумка по поводу использования параллельных потоков для вычислений, а не веб-запросов, есть, но пока не реализована. Но я не понял про сервисы. Имеются в виду сервисы как программы MQL5? MQ не предоставила для них никакой двусторонней связи с другими программами (невозможно переслать туда "задание" на расчет и получить результат). Так что эти сервисы отпадают.

 

Выложил в кодебазу пример индикатора, который запрашивает долгие параллельные вычисления в экспертах-вычислителях, которые автоматически помещаются в объекты-чарты на текущий график (окно).

Индикатор без буферов - только для демонстрации возможности запрашивать тяжелые вычисления в других потоках. Из экспертов так тоже конечно можно. Для реализации нужно писать свои упаковщики и распаковщики параметров как на стороне вызывающей MQL-программы, так и эксперта-вычислителя.

Code Base

Pseudo-Indicator with Asynchronous Multi-Threaded Calculations Demo

Stanislav Korotky, 2020.01.16 20:13

This is an indicator w/o buffers which demonstrates parallel multi-threaded calculations in chart objects hosting worker expert adviser.

Примеры логов

4 задачи на 1 ядро:

4 tasks execution on 1 core (thread)

4 задачи на 2 ядра (в 2 раза быстрее):

4 tasks execution on cores (threads)

 
Stanislav Korotky:

Выложил в кодебазу пример индикатора, который запрашивает долгие параллельные вычисления в экспертах-вычислителях, которые автоматически помещаются в объекты-чарты на текущий график (окно).

Индикатор без буферов - только для демонстрации возможности запрашивать тяжелые вычисления в других потоках. Из экспертов так тоже конечно можно. Для реализации нужно писать свои упаковщики и распаковщики параметров как на стороне вызывающей MQL-программы, так и эксперта-вычислителя.


а потом тот тем индикатором ещё и ЕА тычут :-)

Причина обращения: