Индикаторы: Calendar_Investing - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
sky_boy
19
sky_boy  
Automated-Trading:

Ошибка 4024 (Внутренняя ошибка) может появляться при частом вызове функции WebRequest(). Интервал между ее вызовами нужно уменьшить.

Если я Вас(Automated-Trading) правильно понимаю, и исходя из "WebRequest - Документации на MQL4", а именно из последних строк: 
"Функция WebRequest() является синхронной, это означает, что она приостанавливает выполнение программы и ждет ответа от запрашиваемого сервера. Так как задержки при получении ответа на отправленный запрос могут быть большими!"   , 
соответственно если перефразировать формулировку "Интервал между ее вызовами нужно уменьшить"(цитата Automated-Trading) , а заодно и к вопросу коллеги"Пауза между вызовами 10 сек . Это мало?"(цитата vorese)
и далее к слову "Интервал между...." альтернатива "Частоту между...." - это то значение которое необходимо уменьшить, а не увеличить, дабы дать возможность подгрузить данные с сервера. Это навело меня на мысль из следующего, ведь собственно вы, vorese, выше упомянули о том, что:"У меня тоже иногда возникают проблемы с загрузкой календаря. Причем может целый день грузиться без ошибок , а потом 15 раз подряд с ошибками. Возможно ошибаюсь , но думаю , что дело в не качественной связи с Интернетом."
Одно лишь дополню. Коллега  vorese, обладает более "шустрым" инетом в отличие нас "обделённых :( , убогих :)" , (для справки: 3G на скорости 120 kB/s и длинной ping 350-1000 m/s), а посему он(vorese)  более удачлив.
P.S. ни на что не претендую лишь излагаю чисто своё (ИМХО). Если что готов выслушать либо подтверждение, либо опровержение своих соображений по данной теме!
Evgeniy Serov
2625
Evgeniy Serov  
sky_boy:

посему он(vorese)  более удачлив.

    Для проверки  предлагаю советник Calendar investing_2exp , в котором , для загрузки файла , вместо функции WebRequest используются функции из библиотеки "wininet".

    Информацию взял https://www.mql5.com/ru/code/82 .

   Советник работает вместе с индикатором  Calendar investing_ind . В настройках советника нужно разрешить использование DLL.

       Если не затруднит , отпишитесь о результатах. 

WININET_TEST
WININET_TEST
  • голосов: 30
  • 2010.02.24
  • Integer
  • www.mql5.com
Простой пример использования функций библиотеки wininet.dll для загрузки файлов из Internet.
Файлы:
sky_boy
19
sky_boy  
vorese:

    Для проверки  предлагаю советник Calendar investing_2exp , в котором , для загрузки файла , вместо функции WebRequest используются функции из библиотеки "wininet".

    Информацию взял https://www.mql5.com/ru/code/82 .

   Советник работает вместе с индикатором  Calendar investing_ind . В настройках советника нужно разрешить использование DLL.

       Если не затруднит , отпишитесь о результатах. 

Не пойму, а что собственно вас, коллега, не устраивает в функции WebRequest(...) ? И что вы хотите сравнить?
На сколько я понимаю вы желаете выяснить почему не догружается страница с сайта "Investing.com" и соответственно не может обновится в терминале!?
Ну думаю тут просто надо разобраться с самой функцией, ведь на то что вы сослались выше, как альтернатива, то там в комментах один высказался о том что :

Integer | 28 июл 2014 в 08:27
Это уже не актуально. Появилась стандартная функция webrequest
и я пожалуй с этим соглашусь. Так как не зря разработчики пытаются облегчить нам "жизнь", и где то собственно и усложнить порой :)  (это я про двоякое понимание в справочном материале или к вопросу "а можно с этого места поподробней?").

Ну вернёмся к открытой теме данного поста и конкретно вами выложенного эксперта "News_calendar_2exp.mq4".
Давайте разберемся по поводу проблем загрузки страницы и изначально определимся с входными параметрами которые необходимо подобрать исходя из индивидуальных потребностей и потенциальных возможностей(это я про тех кто относится к проблемам как у меня, особому, эксклюзивному случаю).
У меня вопрос  "Что мы ждём от полученной новостной информации и насколько(речь о времени) это ожидание может предопределить наши надежды "заскочить в последний уходящий вагон" тренда?"(вопрос риторический!). Но о времени лишь скажу, что для меня лично, выход важных новостей и вот то самое время которое должно наступить и возможно предполагает некую "суету" на рынке. Так вот запросы посылаемые к новостному серверу, а именно частота или периодичность, на мой взгляд не представляет большого интереса обновлять чаще чем 2 раза в минуту(ИМХО).
А поэтому интервал(частота) между этими запросами во входном параметре "update=10" необходимо увеличить до 30 сек.
Теперь к самой функции WebRequest(...) и внутри неё интересного, таинственного параметра, timeout(определяемое как время отведённое для загрузки самой страницы к нам на комп!), а отсюда и возможно как результат успеха или частичного успеха загрузки страницы.
465 строка кода         //res = WebRequest("GET", investing_url, cookie, NULL,      50,     post, 0, result, headers);    // предыдущая редакция
466 строка кода            res = WebRequest("GET", investing_url, cookie, NULL, timeout, post, 0, result, headers);   // нынешняя редакция с параметром timeout - загрузки файла с сайта
Ниже присоединяю модифицированный файл с некими тест усовершенствованиями. Они на мой взгляд должны помочь определиться с индивидуальными настройками.
Ваш случай это:           update=25,
                                 timeout=200.

А мой случай это:       update=200,
                                 timeout=4500.

В изменённом файле я вынес выше параметры во внешние переменные для настройки при установки эксперта в окно инструмента терминала. Так же попробовал применить автоматическое наращивание паузы тем самым предоставляя возможность добраться до желаемого результата.
За результатами загрузки файла(как успех) или наращивания интервала, или паузы меж запросами, смотрите во вкладке там же(Эксперты).
Ниже картинка моего случая, где начал с timeout=3400(3,4 сек.) и достиг успеха с длительностью загрузки =5100(5,1 сек.) , а соответственно, хуже инет и результат будет достигнут чуть дальше
Так же установил лимиты, чтоб в разнос не пошло, а то до бесконечности может наращивать.


Попробуйте и отпишитесь о результатах. Удачи вам!
 Даа... и чуть не забыл! Не совсем я понял разделение таблицы по цвету. Что означает первая и последующая зелёная часть, какая логика заложена?(спрашиваю в виду некорректного оформления и возможной путаницы с часовыми поясами). На мой взгляд там логическая ошибка со знаком....!?


Файлы:
Evgeniy Serov
2625
Evgeniy Serov  
sky_boy:
Не пойму, а что собственно вас, коллега, не устраивает в функции WebRequest(...) ? И что вы хотите сравнить?
На сколько я понимаю вы желаете выяснить почему не догружается страница с сайта "Investing.com" и соответственно не может обновится в терминале!?
Ну думаю тут просто надо разобраться с самой функцией, ведь на то что вы сослались выше, как альтернатива, то там в комментах один высказался о том что :

Integer | 28 июл 2014 в 08:27
Это уже не актуально. Появилась стандартная функция webrequest
и я пожалуй с этим соглашусь. Так как не зря разработчики пытаются облегчить нам "жизнь", и где то собственно и усложнить порой :)  (это я про двоякое понимание в справочном материале или к вопросу "а можно с этого места поподробней?").

Ну вернёмся к открытой теме данного поста и конкретно вами выложенного эксперта "News_calendar_2exp.mq4".
Давайте разберемся по поводу проблем загрузки страницы и изначально определимся с входными параметрами которые необходимо подобрать исходя из индивидуальных потребностей и потенциальных возможностей(это я про тех кто относится к проблемам как у меня, особому, эксклюзивному случаю).
У меня вопрос  "Что мы ждём от полученной новостной информации и насколько(речь о времени) это ожидание может предопределить наши надежды "заскочить в последний уходящий вагон" тренда?"(вопрос риторический!). Но о времени лишь скажу, что для меня лично, выход важных новостей и вот то самое время которое должно наступить и возможно предполагает некую "суету" на рынке. Так вот запросы посылаемые к новостному серверу, а именно частота или периодичность, на мой взгляд не представляет большого интереса обновлять чаще чем 2 раза в минуту(ИМХО).
А поэтому интервал(частота) между этими запросами во входном параметре "update=10" необходимо увеличить до 30 сек.
Теперь к самой функции WebRequest(...) и внутри неё интересного, таинственного параметра, timeout(определяемое как время отведённое для загрузки самой страницы к нам на комп!), а отсюда и возможно как результат успеха или частичного успеха загрузки страницы.
465 строка кода         //res = WebRequest("GET", investing_url, cookie, NULL,      50,     post, 0, result, headers);    // предыдущая редакция
466 строка кода            res = WebRequest("GET", investing_url, cookie, NULL, timeout, post, 0, result, headers);   // нынешняя редакция с параметром timeout - загрузки файла с сайта
Ниже присоединяю модифицированный файл с некими тест усовершенствованиями. Они на мой взгляд должны помочь определиться с индивидуальными настройками.
Ваш случай это:           update=25,
                                 timeout=200.

А мой случай это:       update=200,
                                 timeout=4500.

В изменённом файле я вынес выше параметры во внешние переменные для настройки при установки эксперта в окно инструмента терминала. Так же попробовал применить автоматическое наращивание паузы тем самым предоставляя возможность добраться до желаемого результата.
За результатами загрузки файла(как успех) или наращивания интервала, или паузы меж запросами, смотрите во вкладке там же(Эксперты).
Ниже картинка моего случая, где начал с timeout=3400(3,4 сек.) и достиг успеха с длительностью загрузки =5100(5,1 сек.) , а соответственно, хуже инет и результат будет достигнут чуть дальше
Так же установил лимиты, чтоб в разнос не пошло, а то до бесконечности может наращивать.


Попробуйте и отпишитесь о результатах. Удачи вам!
 Даа... и чуть не забыл! Не совсем я понял разделение таблицы по цвету. Что означает первая и последующая зелёная часть, какая логика заложена?(спрашиваю в виду некорректного оформления и возможной путаницы с часовыми поясами). На мой взгляд там логическая ошибка со знаком....!?


  

    Вот такой результат я получил , экспериментируя с  модифицированным советником. Полагаю , что параметр timeout "определяемое как время отведённое для загрузки самой страницы к нам на комп!"

таковым не является , да и Яндекс переводчик говорит , что timeout-это время ожидания. А вот , что ожидает этот параметр , думаю , могут объяснить только разработчики. (Возможно, как и мы -ожидает ответа )       По поводу цвета , не видя картинку, сказать ни чего не могу . Возможно в выходные такая беда происходит. Если не трудно , пришлите скрин и укажите значение параметра mck_local_times                                            Вспомнил: что бы не было разноцветия в выходные , я немного изменил код и выложил обновленные файлы . Попробуйте скачать и переустановить советник. Удачи!!!







sky_boy
19
sky_boy  
vorese:

  

    Вот такой результат я получил , экспериментируя с  модифицированным советником. Полагаю , что параметр timeout "определяемое как время отведённое для загрузки самой страницы к нам на комп!"

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


 Ах жаль что ваш скриншот не оказался на фоне терминального окна валютной пары GPBUSD , чтоб предметно можно было наблюдать что в итоге вывело в экран, ну да и ладно! Как говорится: "что имеем то и имеем" :) .

Давайте разбираться что мы видим как результат работы во вкладке "Эксперты".

1. что я заметил так это то что "News_calendar_2exp.mq4" даже в последней модифицированной версии претерпел очередной редакции и стал "News_calendar_202exp.mq4" .

2. благо нам то, что разработчики предоставили такую возможность как передавать номер строки кода в функции Alert, Print, Comment и т.д. где в результате мы можем предметно говорить о конкретном месте кода где эти функции были вызваны!!!

   А из данного скрина(картинки) мы видим что вызвана в строке=480 , то есть после прохождения выражения(строка=478)  if(ArraySize(result)>100000) где сравнивается результат того что было загружено с сайта с неким "мифическим" числом=100000(постоянным значением - константой).

  Не я писал изначально код программы и возьмусь предположить, что кто то из писавших его, опытным путём установил, что размер загруженного файла должен быть не меньше 100 килобайт=100000 и всё что выше считается что файл загружен полностью! Поэтому и начал писать этот      коммент с тех слов "Ах жаль ......" и в качестве итога реального что мы должны и хотели бы видеть в виде самих меняющихся новостей в валюте инструмента(на экране). В нашем случае сам результат строки=480 говорит что:

"Файл успешно загружен, Размер файла = 209745 байт. update = 5  timeout = ... "      

что собственно больше чем 100 килобайт=100000, а соответственно считается как успех!

 Поскольку картинки о самих экономических новостей, их него прихода либо отсутствия в экране, мы не видим то тут к вам вопрос, что то получилось или пока непонятки??? Но вот ещё один момент может статься! Дело в том, что сейчас выходные, а соответственно инфа в эконом-новостях может и не меняться! Так что пробуем в Рабочие дни.

3. Теперь поговорим о входных параметрах и о первой строке после инициализации(установки Эксперта) . Из неё видно что вы во входных параметрах установили: update=5,  timeout=0. то есть вы предположили что частота обращений к новостному серверу =5 сек это нормально!? А соответственно слева(зелёным) отмечено время вызова начиная с 22:27:00(чч:мм:сс) и заканчивая 22:29:00 и каждый вызов происходит через update=5 сек.(синим), но на каждом последующем шаге(вызове) лишь только увеличился timeout  предыдущее значение на +5 .  Так как при первом же вызове  и timeout=5 у вас получилось загрузить с сервера размер файла соответствующего размера, а это более 100000 байт(а у нас в отчёте 209760 байт) то согласно условия уравнения выше результат считается, что "Файл успешно загружен"!


  И судя по отчёту из скрина(из картинки) то у вас всё должно быть хорошо, так как Размер файла = 209745(209 килобайт)! Но это только вы можете теперь подтвердить на предмет того, что вы должны наблюдать динамически меняющуюся информацию равно изменению её на самом первоисточнике "Investing.com" и лучше если это будет после выходных!

Жёлтым я выделил в какой(из какой) строке(и) было вызвано, а в нашем случае это строка = 480. То есть из одной и той же. Исходя из отчёта то всё у вас должно быть отлично с инетом, а вот предметно с инфой сайта подождём рабочих дней, чтоб убедиться в достоверности корректной работы!


Хотел бы вернуться к вашему высказыванию по поводу timeout:   "Полагаю , что параметр timeout "определяемое как время отведённое для загрузки самой страницы к нам на комп!"

таковым не является , да и Яндекс переводчик говорит , что timeout-это время ожидания. А вот , что ожидает этот параметр , думаю , могут объяснить только разработчики."  

И тут я вас не понял. Просто хочу уточнить, надеюсь мы говорим об одном и том же!?  Выше я привёл две редакции строк(предыдущей и текущей), дублирую их ниже:

465 строка кода         //res = WebRequest("GET", investing_url, cookie, NULL,      50,     post, 0, result, headers);    // предыдущая редакция
466 строка кода            res = WebRequest("GET", investing_url, cookie, NULL, timeout, post, 0, result, headers);   // нынешняя редакция с параметром timeout - загрузки файла с сайта
Так вот тут хочу уточнить, вы ссылаетесь в своём высказывании на timeout  на переменную которая так инициализирована первоначальным "=0" значением, а далее в коде на основе ошибок от сервера повышается на заданную величину "=5" , или всё ж как сам параметр находящийся в самой функции WebRequest();  ???  В предыдущей редакции(строка кода = 465) таймаут имеет постоянное значение в виде константы, а именно =50 !   В строке кода = 466 я заменил на переменную задав ей произвольное имя - "timeout"(к стати можно было бы назвать как угодно например "sleep") которая может увеличивать своё значение на заданную величину, в данном случае это +5. Прошу прошение за дотошность! Лишь хотелось бы избежать двоякого понимания или разногласий по данному вопросу!
из материала справки на функцию : 

WebRequest

Отправляет HTTP-запрос на указанный сервер.

int  WebRequest(
   const string      method,           // метод HTTP
   const string      url,              // url-адрес
   const string      cookie,           // cookie
   const string      referer,          // referer
   int               timeout,          // таймаут
   const char        &data[],          // массив тела HTTP-сообщения
   int               data_size,        // размер массива data[] в байтах
   char              &result[],        // массив с данными ответа сервера
   string            &result_headers   // заголовок ответа сервера
   );

Параметры

method

[in]  Метод HTTP.

url

[in]  URL-адрес.

cookie

[in]  Значение Cookie.

referer

[in]  Значение заголовка Referer HTTP-запроса.

timeout

[in]  Таймаут в миллисекундах.

data[]

[in]  Массив тела HTTP-сообщения.

data_size

[in]  Размер массива data[] в байтах.

result[]

[out]  Массив с данными ответа сервера.

result_headers

[out]  Содержимое заголовка ответа сервера.

Возвращаемое значение

Код ответа HTTP-сервера, либо -1 в случае ошибки.

Примечание

Для использования функции WebRequest() следует добавить адреса серверов в список разрешенных URL во вкладке "Советники" окна "Настройки".

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

Функцию можно вызывать только из экспертов и скриптов, так как они работают в собственном потоке выполнения. При вызове из индикатора GetLastError() вернет ошибку 4060 – "Функция не разрешена".

При работе в тестере стратегий функция WebRequest() не выполняется.




GetLastError - Документация на MQL4
  • docs.mql4.com
GetLastError - Документация на MQL4
Alexander Ashikhmin
157
Alexander Ashikhmin  
А нельзя ли брать новости с forexfactory.com ??? если можно, какой адрес вписать ???
Evgeniy Serov
2625
Evgeniy Serov  
4444:
А нельзя ли брать новости с forexfactory.com ??? если можно, какой адрес вписать ???
Нет нельзя, только investing com.
wazaap3
1
wazaap3  

Ребят поправьте пожалуйста, не фурычит

 

Evgeniy Serov
2625
Evgeniy Serov  
wazaap3:

Ребят поправьте пожалуйста, не фурычит

 

 News trading v.3.0
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий