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

 
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===


Для WebRequest разрешены только порты 80 (http) и 443 (https).
 

Файл в примере multiwebclient  отправлят только 1 раз при клике на график. при нескольких кликах запрос на http сервер не шлется. (повникаю в исходники ваши) Возможно надо предварительно создать не в INIT а каждый раз создавать по CLICK на графике. 

Думал что объект удаляется после закрытия графика или закрытия терминала.

 А у вас нет примера чтобы отправлялся json сообщение ? Также не лишним кому- то чтобы была проверка на закрытие графиков.

ПО JSON

Например создать класс json и при сеттерах заполнять его. Добавление массивов, добавление элементов, типов данных(своих не простых).

 И пример, прям рабочий советник, чтобы можно было делать отправку из своей функции, например при появлении нового бара слался JSON запрос.

Многим было бы это полезно.

 
Sergei Poliukhov #:

Файл в примере multiwebclient  отправлят только 1 раз при клике на график. при нескольких кликах запрос на http сервер не шлется. (повникаю в исходники ваши) Возможно надо предварительно создать не в INIT а каждый раз создавать по CLICK на графике. 

Думал что объект удаляется после закрытия графика или закрытия терминала.

 А у вас нет примера чтобы отправлялся json сообщение ? Также не лишним кому- то чтобы была проверка на закрытие графиков.

ПО JSON

Например создать класс json и при сеттерах заполнять его. Добавление массивов, добавление элементов, типов данных(своих не простых).

 И пример, прям рабочий советник, чтобы можно было делать отправку из своей функции, например при появлении нового бара слался JSON запрос.

Многим было бы это полезно.

Все 100% работало как описано, на момент написания статьи, т.е. по клику параллельно отправлялось 3 запроса на указанные по-умолчанию 3 сервера. Для поиска проблем нужны настройки и логи. Закрытие графиков обрабатывается и менеджеру отправляется уведомление - посмотрите код.

void OnDeinit(const int reason)
{
  if(manager)
  {
    Print("WebRequest Pool Manager closed, ", ChartID());
    for(int i = 0; i < pool.size(); i++)
    {
      if(CheckPointer(pool[i]) == POINTER_DYNAMIC)
      {
        // let know workers they are not needed anymore
        EventChartCustom(pool[i].getChartID(), TO_MSG(MSG_DEINIT), ChartID(), 0.0, NULL);
      }
    }
    GlobalVariableDel(GVTEMP);
  }
  else
  {
    Print("WebRequest Worker closed, ", ChartID());
    // let know the manager that this worker is not available anymore
    EventChartCustom(ManagerChartID, TO_MSG(MSG_DEINIT), ChartID(), 0.0, NULL);
    ObjectDelete(0, OBJ_LABEL_NAME);
    ChartClose(0);
  }
  Comment("");
}

После выхода статьи в обсуждении был выложен улучшенный вариант запуска через объекты-чарты.

По json есть много материалов на сайте, а свои наработки по "чистому" json я не публиковал и сейчас у меня нет времени этим заниматься.

Обсуждение статьи "Многопоточный асинхронный WebRequest на MQL5 своими руками" - Запустите WebRequest с помощью объектов-графиков, в которых применяется шаблон с экспертом-помощником.
Обсуждение статьи "Многопоточный асинхронный WebRequest на MQL5 своими руками" - Запустите WebRequest с помощью объектов-графиков, в которых применяется шаблон с экспертом-помощником.
  • 2018.11.12
  • Реter Konow
  • www.mql5.com
потому что не получается передать в них параметр при запуске - похоже. по аналогии с экспертами - похоже на счастливый случай. Выкладываю альтернативный вариант запуска веб-запросов - с помощью объектов-графиков