master_255 Опубликовано 9 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 Может while(true) заменить на while(InternetReadFile(HttpRequest,Buffer,READURL_BUFFER_SIZE,read))Ну и перед началом чтения проверить что HttpRequest>0 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 9 апреля, 2019 Автор Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 Пробуйте с корректировкой от master_255. Также поправил проверку на один из трех адресов новостей: текущий и которые были раньше. Truly_News_Indicator_2.2.76.ex4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
nixxer Опубликовано 9 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 На мой скромный взгляд, правильный вариант должен быть через WebRequest чтобы не было лишних вызовов API string cookie=NULL,headers; char post[],result[]; int res; string news_url="https://cdn-nfs.faireconomy.media/ff_calendar_thisweek.xml"; ResetLastError(); int timeout=5000; res=WebRequest("GET",news_url,cookie,NULL,timeout,post,0,result,headers); if(res==-1) { Print("Ошибка в WebRequest. Код ошибки =",GetLastError()); MessageBox("Необходимо добавить адрес '"+news_url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION); } else { PrintFormat("Файл успешно загружен, Размер файла =%d байт.",ArraySize(result)); int filehandle=FileOpen("news.xml",FILE_WRITE|FILE_BIN); if(filehandle!=INVALID_HANDLE) { FileWriteArray(filehandle,result,0,ArraySize(result)); FileClose(filehandle); } else Print("Ошибка в FileOpen. Код ошибки =",GetLastError()); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
dmitrykirillov Опубликовано 9 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 (изменено) Версия Truly News Indicator 2.2.76 больше не вешает терминал но по-прежнему не работает, пишет File download incomplete!Настройки терминала на скрине, нужно добавить еще какие-то url?Также, возможно ли в настройках сделать поле для URL, на случай новых переездов календаря 8e30ff0299abcd3e823ef6abb3858651.png1dc0431dc1fbe770b94ed40ed48a0e90.png Изменено 9 апреля, 2019 пользователем dmitrykirillov 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 9 апреля, 2019 Автор Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 WebRequest Я WebRequest не стал ставить, чтобы пользователям не нужно было добавлять вручную эти сайты в настройки терминала. Пробовал как с ним, так и без него - у меня ошибок никаких не было. Ссылка на сообщение Поделиться на другие сайты More sharing options...
JoeBl4ck Опубликовано 9 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 Да, ситуация с 2.2.76 аналогичная как у Дмитрия Кириллова. Терминалы не вешает, но и новостной файл не грузит. Ссылка на сообщение Поделиться на другие сайты More sharing options...
nixxer Опубликовано 9 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 (изменено) 0 20:24:43.974 Custom indicator Truly News Indicator 2.2.76 EURUSD,H1: loaded successfully0 20:24:48.129 Truly News Indicator 2.2.76 EURUSD,H1: initialized0 20:24:48.853 Truly News Indicator 2.2.76 EURUSD,H1: Alert: EURUSD 60, ForexFactory-News Error: File download incomplete!0 20:24:49.102 Truly News Indicator 2.2.76 EURUSD,H1: Alert: EURUSD 60, ForexFactory-News Error: File download incomplete!0 20:24:49.104 Truly News Indicator 2.2.76 EURUSD,H1: Error OutputToChart 4052: string function internal error InternetConnectW не может содержать в качестве параметра servername пустую строку. Должно быть SERVERNAME.COM или иное доменное имя. Иначе как функция поймет куда вы подключаетесь? Таким образом, получаем ошибку после вызова,Last Error Value 0x0000007B : "Синтаксическая ошибка в имени файла, имени папки или метке тома." что целиком совпадает с предсказанным поведением функции Изменено 9 апреля, 2019 пользователем nixxer Ссылка на сообщение Поделиться на другие сайты More sharing options...
master_255 Опубликовано 9 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 InternetConnectW вообще выкинуть он тут даже не используется :) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 9 апреля, 2019 Автор Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 На мой скромный взгляд, правильный вариант должен быть через WebRequest чтобы не было лишних вызовов API WebRequest нельзя вызвать в индикаторе.InternetConnectW вообще выкинуть он тут даже не используется Убрал строку вообщеЯ не понимаю, откуда возникла проблема и почему раньше ее не было. Я проверить ее не могу, у меня все окей работает.На всякий случай закомментировал добавленный dll.Перед установкой в папке Files нужно удалить подобный файл "2019-04-07-ForexFactory-News"Прописывать в настройках WebRequest терминала ничего не нужно.Truly_News_Indicator_2.2.77.ex4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MihayZlodey Опубликовано 9 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 Версия Truly News Indicator 2.2.76 больше не вешает терминал но по-прежнему не работает, пишет File download incomplete!Настройки терминала на скрине, нужно добавить еще какие-то url? Вот у меня тоже самое пишет, до недавнего времен всё работало нормально пару лет, только время менял при переходе на летнее и всё....а тут вот такую фигню как у Вас стал писать и не линий с новостями...ни че го.....(((( Ссылка на сообщение Поделиться на другие сайты More sharing options...
JoeBl4ck Опубликовано 9 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 (изменено) 2.2.77 так же как и 2.2.76 терминал не вешает, но download incomplete . Файл 2019-04-07-ForexFactory-News удалял несколько раз, начиная с "висящей" версии - никак не влияет.ERR_STRING_FUNCTION_INTERNAL_ERROR 4052 String function internal error.Версия 2,1,73 не выдаёт ошибку 4052 2277.PNG2173.PNG Изменено 9 апреля, 2019 пользователем JoeBl4ck Ссылка на сообщение Поделиться на другие сайты More sharing options...
dmitrykirillov Опубликовано 9 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 Truly News Indicator 2.2.77 Аналогично, не работает 19c7b953bb1b48d283c41dad50223636.png Ссылка на сообщение Поделиться на другие сайты More sharing options...
nixxer Опубликовано 9 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 9 апреля, 2019 (изменено) Думаю что проблема в отсутствии в поле User-Agent какого-либо осмысленного текста. Сейчас там находится пробел.Также я думаю что код можно упростить до использования URLDownloadToFile из urlmon.dll Изменено 9 апреля, 2019 пользователем nixxer Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 10 апреля, 2019 Автор Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 Думаю что проблема в отсутствии в поле User-Agent какого-либо осмысленного текста. Сейчас там находится пробел. Почитал справку, поправил без пробелов. Спойлер bool DownLoadWebPageToFile(string url) { //new coding replacing old "GrabWeb" coding if(url == "") { Print("-Host is not specified"); return(false); } bool CheckReadInfo = false; string UserAgent="Mozilla"; string nill=""; int HttpOpen = InternetOpenW(UserAgent,OPEN_TYPE_PRECONFIG,nill,nill,0); int HttpRequest = InternetOpenUrlW(HttpOpen, url, NULL, 0, 0, 0); if(HttpRequest > 0) { int read[1]; uchar Buffer[]; ArrayResize(Buffer,READURL_BUFFER_SIZE+1); string NEWS = ""; xmlFileName = GetXmlFileName(); xmlHandle = FileOpen(xmlFileName,FILE_BIN|FILE_READ|FILE_WRITE); if(xmlHandle >= 0) { FileClose(xmlHandle); FileDelete(xmlFileName); } //File exists if FileOpen return >=0. xmlHandle=FileOpen(xmlFileName,FILE_BIN|FILE_WRITE); //Open new XML. Write the ForexFactory page contents to a .htm file. Close new XML. while(InternetReadFile(HttpRequest,Buffer,READURL_BUFFER_SIZE,read)) { string strThisRead = CharArrayToString(Buffer,0,read[0],CP_UTF8); if (read[0] > 0) NEWS = NEWS + strThisRead; else { if(StringLen(NEWS) int end_tag = StringFind(NEWS,"",0); //Find the XML end tag to ensure a complete page was downloaded. //If the end of file tag is not found, a return -1 (or, "end if(end_tag == -1) { Alert(Symbol()," ",Period(),", ForexFactory-News Error: File download incomplete!"); Print("Строка с новостями: " + NEWS + ". Количество символов: " + IntegerToString(StringLen(NEWS))); } else { //Else, set global to time of last update FileWriteString(xmlHandle,NEWS); FileClose(xmlHandle); GlobalVariableSet("Update.FF_Cal",TimeCurrent()); CheckReadInfo = true; } break; } } } if(HttpRequest > 0) InternetCloseHandle(HttpRequest); if(HttpOpen > 0) InternetCloseHandle(HttpOpen); return(CheckReadInfo);} nixxer Подключить Urlmon.dll не получилось, выдает ошибку Cannot find 'URLDownloadToFile' in 'Urlmon.dll'Я не знаю этот язык программирования, соответственно мне сложно в этом все разобраться. Если можешь - накидай корректный код для нее.Вообще сложно искать ошибку, которая появилась из воздуха. У меня ее вообще нет, как ее вызвать не знаю. Проверьте эту версию, уже не знаю, на что смотреть.Truly_News_Indicator_2.2.78.ex4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pavel888 Опубликовано 10 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 у меня все последние индикаторы ув. Rever27 нормально работают в билде 1170... Спойлер Ссылка на сообщение Поделиться на другие сайты More sharing options...
JoeBl4ck Опубликовано 10 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 (изменено) 2.2.78 2019.04.10 11:19:53.765 Truly News Indicator 2.2.78 EURUSD,M30: Alert: EURUSD 30, ForexFactory-News Error: File download incomplete!Но ошибки 4052 не стало.updСкачал FFC.mql c сайта mql5_com/en/forum/94492/page8#comment_11235003, который тоже изначально не грузит xml.Обновил адрес xml по комменту Сергея Голубева на cdn-nfs.faireconomy.media/ff_calendar_thisweek.xmlFFC заработал и в терминале Альпари и в РобофорексеВ нём, кстати, urlmon.dll фигурирует://--- to download the xml#import "urlmon.dll"int URLDownloadToFileW(int pCaller,string szURL,string szFileName,int dwReserved,int Callback);#importНельзя ли сделать так с ТрулиНьюз? Взять 2.1.73 или 74, вставить действующий xml адрес без всяких переборок, или как предложили выше вывести его в настройки. 2278.PNGffc.PNG Изменено 10 апреля, 2019 пользователем JoeBl4ck Ссылка на сообщение Поделиться на другие сайты More sharing options...
dmitrykirillov Опубликовано 10 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 Truly News Indicator 2.2.78 Аналогично, file download incomplete Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 10 апреля, 2019 Автор Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 Скачал FFC.mql c сайта mql5_com/en/forum/94492/page8#comment_11235003, который тоже изначально не грузит xml.Обновил адрес xml по комменту Сергея Голубева на cdn-nfs.faireconomy.media/ff_calendar_thisweek.xmlВ нём, кстати, urlmon.dll фигурирует: Вот это понятный советник к действиям, проверяйтеВерсия 2.3.80- заменен импорт DLL "Wininet.dll" на "urlmon.dll" для сохранения данный новостей в файл.Truly_News_Indicator_2.3.80.ex4 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
JoeBl4ck Опубликовано 10 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 (изменено) 2.3.80 вообще никаких признаков на графике. Нет ни сообщений в алертах, ни надписей на графике, терминал не виснет. Но в журнале какие-то ошибки выдаёт.Даже файла не создаёт на диске. На скрине - это от FFC индикатора. Остальные версии 2,2,75-78 создают пустышку 0кб 2380.PNGno_xml_file.PNG Изменено 10 апреля, 2019 пользователем JoeBl4ck Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 10 апреля, 2019 Автор Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 Еще вариант. Truly_News_Indicator_2.3.80-1.ex4 5 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
JoeBl4ck Опубликовано 10 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 Ура! Заработало! Работает и в альпари и в робофорексе. Ещё не присматривался к времени отображения новостей, сдвигу гмт и алертов не было. Отпишусь, если вдруг возникнут ошибки.Спасибо вам большое. 23801.PNG Ссылка на сообщение Поделиться на другие сайты More sharing options...
nixxer Опубликовано 10 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 Хостер новостей теперь Cloudfront. Что это означает? Стабильность, защита от лишней передачи данных через кэширование и базовая защита от атак.Если кто-то получил файл новостей, далее какое-то время будет код HTTP 304 Not modified вместо 200 OK. Так как сервер будет считать что вам не надо заново качать то, что еще не изменилось. В частности, именно поэтому сложно уловить ошибку тому, кто уже получал успешно документ :-b Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 10 апреля, 2019 Автор Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 Смею предположить, что проблема был а в ссылке https. По совету мудрого человека заменил на http.Все остальные мои телодвижения в предыдущих версиях были лишними. На всякий случай теперь проверяется и http и https. 5 Ссылка на сообщение Поделиться на другие сайты More sharing options...
nixxer Опубликовано 10 апреля, 2019 Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 На самом деле проблема не у нас. Почему cloudfront тупит я не знаю. Решил все таки посмотреть трафик внимательно и пришел к выводу, сервер cloudfront не устанавливает соединение после этапа обмена handshake. TLSv1 и SSLv3 обламываются из-за неверного значения handshake при получении сертификата. Тот же forexfactory установку соединения делает успешно но там в ответе только ответ HTTP 410 Gone. Так что forexfactory можно смело удалять из всех списков источника новостей xml формата. Screenshot_1.png 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 10 апреля, 2019 Автор Поделиться [Новостной индикатор] Truly News Indicator Опубликовано 10 апреля, 2019 Пора TLP мутить свой источник новостей в блек джеком и пруфурсетками :d 4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти