Перейти к содержанию

[Новостной индикатор] Truly News Indicator


Rever27

Рекомендуемые сообщения

[Новостной индикатор] Truly News Indicator Опубликовано

Может while(true) заменить на while(InternetReadFile(HttpRequest,Buffer,READURL_BUFFER_SIZE,read))

Ну и перед началом чтения проверить что HttpRequest>0

Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 149
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Название Индикатора: DaVinci Truly News Indicator Текущая версия: 2.3.98 Сайт продажи: Специально для TradeLikeAPro Источник новостей: ForexFactory Описание: Индикатор информирует о выходе предстоящ

Перейти

centrepro После долгих мучений и поиска решения в инете добавил включение/отключение кнопки авто-торговля Pavel888 После долгих мучений и поиска решения в инете добавил прозрачность панели :d PeePet

Перейти

Версия 2.2.75 - Изменен адрес источника новостей на https://cdn-nfs.faireconomy.media/ff_calendar_thisweek.xml. Советник будет перебирать три адреса начиная с самого свежего в поисках данных.Truly_Ne

Перейти
[Новостной индикатор] Truly News Indicator Опубликовано

Пробуйте с корректировкой от master_255.
Также поправил проверку на один из трех адресов новостей: текущий и которые были раньше.

Truly_News_Indicator_2.2.76.ex4

  • Спасибо 1
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

На мой скромный взгляд, правильный вариант должен быть через 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());
}
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано (изменено)

Версия Truly News Indicator 2.2.76 больше не вешает терминал но по-прежнему не работает, пишет File download incomplete!
Настройки терминала на скрине, нужно добавить еще какие-то url?

Также, возможно ли в настройках сделать поле для URL, на случай новых переездов календаря

8e30ff0299abcd3e823ef6abb3858651.png
1dc0431dc1fbe770b94ed40ed48a0e90.png

Изменено пользователем dmitrykirillov
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

WebRequest


Я WebRequest не стал ставить, чтобы пользователям не нужно было добавлять вручную эти сайты в настройки терминала.
Пробовал как с ним, так и без него - у меня ошибок никаких не было.
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

Да, ситуация с 2.2.76 аналогичная как у Дмитрия Кириллова. Терминалы не вешает, но и новостной файл не грузит.

Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано (изменено)

0 20:24:43.974 Custom indicator Truly News Indicator 2.2.76 EURUSD,H1: loaded successfully
0 20:24:48.129 Truly News Indicator 2.2.76 EURUSD,H1: initialized
0 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 : "Синтаксическая ошибка в имени файла, имени папки или метке тома."	

что целиком совпадает с предсказанным поведением функции Изменено пользователем nixxer
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

На мой скромный взгляд, правильный вариант должен быть через WebRequest чтобы не было лишних вызовов API


WebRequest нельзя вызвать в индикаторе.

InternetConnectW вообще выкинуть он тут даже не используется


Убрал строку вообще

Я не понимаю, откуда возникла проблема и почему раньше ее не было. Я проверить ее не могу, у меня все окей работает.
На всякий случай закомментировал добавленный dll.
Перед установкой в папке Files нужно удалить подобный файл "2019-04-07-ForexFactory-News"
Прописывать в настройках WebRequest терминала ничего не нужно.

Truly_News_Indicator_2.2.77.ex4

Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

Версия Truly News Indicator 2.2.76 больше не вешает терминал но по-прежнему не работает, пишет File download incomplete!
Настройки терминала на скрине, нужно добавить еще какие-то url?



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

[Новостной индикатор] Truly News Indicator Опубликовано (изменено)

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.PNG
2173.PNG

Изменено пользователем JoeBl4ck
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано (изменено)

Думаю что проблема в отсутствии в поле User-Agent какого-либо осмысленного текста. Сейчас там находится пробел.
Также я думаю что код можно упростить до использования URLDownloadToFile из urlmon.dll

Изменено пользователем nixxer
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

Думаю что проблема в отсутствии в поле 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
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

у меня все последние индикаторы ув. Rever27 нормально работают в билде 1170...

Спойлер

Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано (изменено)

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.xml

FFC заработал и в терминале Альпари и в Робофорексе

В нём, кстати, 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.PNG
ffc.PNG

Изменено пользователем JoeBl4ck
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

Скачал 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
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано (изменено)

2.3.80 вообще никаких признаков на графике. Нет ни сообщений в алертах, ни надписей на графике, терминал не виснет. Но в журнале какие-то ошибки выдаёт.

Даже файла не создаёт на диске. На скрине - это от FFC индикатора. Остальные версии 2,2,75-78 создают пустышку 0кб

2380.PNG
no_xml_file.PNG

Изменено пользователем JoeBl4ck
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

Еще вариант.

Truly_News_Indicator_2.3.80-1.ex4

  • Лайк 5
  • Спасибо 1
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

Ура! Заработало! Работает и в альпари и в робофорексе. Ещё не присматривался к времени отображения новостей, сдвигу гмт и алертов не было. Отпишусь, если вдруг возникнут ошибки.
Спасибо вам большое.

23801.PNG

Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

Хостер новостей теперь Cloudfront. Что это означает? Стабильность, защита от лишней передачи данных через кэширование и базовая защита от атак.

Если кто-то получил файл новостей, далее какое-то время будет код HTTP 304 Not modified вместо 200 OK. Так как сервер будет считать что вам не надо заново качать то, что еще не изменилось. В частности, именно поэтому сложно уловить ошибку тому, кто уже получал успешно документ :-b

Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

Смею предположить, что проблема был а в ссылке https. По совету мудрого человека заменил на http.

Все остальные мои телодвижения в предыдущих версиях были лишними. На всякий случай теперь проверяется и http и https.

  • Лайк 5
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

На самом деле проблема не у нас. Почему cloudfront тупит я не знаю.

Решил все таки посмотреть трафик внимательно и пришел к выводу, сервер cloudfront не устанавливает соединение после этапа обмена handshake. TLSv1 и SSLv3 обламываются из-за неверного значения handshake при получении сертификата.
Тот же forexfactory установку соединения делает успешно но там в ответе только ответ HTTP 410 Gone. Так что forexfactory можно смело удалять из всех списков источника новостей xml формата.

Screenshot_1.png

  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

[Новостной индикатор] Truly News Indicator Опубликовано

Пора TLP мутить свой источник новостей в блек джеком и пруфурсетками :d

  • Лайк 4
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...