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

 

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

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-программы, так и эксперта-вычислителя.


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

 

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

Затем пользователь закрывает окно с чартом-менеджером. Клиенты посылают запросы окну, которое больше не существует. 

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

 
Алексей Барбашин:

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

Затем пользователь закрывает окно с чартом-менеджером. Клиенты посылают запросы окну, которое больше не существует. 

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

В статье предложена технология и её минимальная реализация. Проверка на все возможные проблемные ситуации выходила за рамки статьи. Клиенты могут проверять существование чарта по его ID (доступен через pool.getManagerID). Все исходные коды открыты.

Обращаю внимание, что в процессе развития идеи, изложенной в статье, была разработана схема упрощенной многопоточной обработки запросов с помощью объектов. Там указанной проблемы нет "by design". Исходники также приложены в этой ветке. Так что рекомендуется пользоваться ими.

 
Stanislav Korotky:

В статье предложена технология и её минимальная реализация. Проверка на все возможные проблемные ситуации выходила за рамки статьи. Клиенты могут проверять существование чарта по его ID (доступен через pool.getManagerID). Все исходные коды открыты.

Обращаю внимание, что в процессе развития идеи, изложенной в статье, была разработана схема упрощенной многопоточной обработки запросов с помощью объектов. Там указанной проблемы нет "by design". Исходники также приложены в этой ветке. Так что рекомендуется пользоваться ими.

Я видел развитие темы )) Но к сожалению использование объектов "чарт" доступно, как и было указано, только в МТ5.

 
Stanislav Korotky:

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

Спасибо. По сервисам Вы все правильно поняли. Эксперты-вычислители и явились прямым ответом. Чрезвычайно интересно. Еще раз Спасибо.
 
Какое смещение (input int MessageBroadcast) для пользовательских событий должно быть, если в программе используются элементы UI из стандартной библиотеки (Include\Controls\)? Как это можно узнать?