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

[open source] [Скрипт] для скачки всей истории новостей с Forexfactory + Индикатор для проверки


mmortall

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

[open source] [Скрипт] для скачки всей истории новостей… Опубликовано (изменено)
Название скрипта: history_downloader.py
Текущая версия: 1.1 (9.10.2016)
Название индикатора: TimeZoneAndNews
Описание:
Думаю все знают как важно учитывать новости при торговле. Было бы хорошо учитывать их также при тестировании советников на истории или
в советниках, торгующих на новостях.
Я нашел скрипт который качает и парсит новосные данные с сайта Forexfactory. Есть возможность на данный момент получить данные с 01.01.2007. На более ранние периоды сайт возвращает невалидные данные.
Я дописал этот скрипт немного (поправил разные мелочи и баги) и хочу поделиться им. Также принимаются идеи и предложения по его доработке.
Также я добавил индикатор для отображения данных из файла на графике. Индикатор не качает данные. Это только для теста содержимого файла.
Все необходимые файлы в аттаче к посту.

Параметры индикатора:
GMTOffset - Для Альпари = 3, для Oanda = 2.
FileName - имя файла с данными. Файл дожен лежать в папке MQL4/Files
CurrencyName1 - валюта по которой показывать новости (по умолчанию берется первая валюта из названия инструмента)
CurrencyName2 - вторая валюта по которой показывать новости (по умолчанию берется вторая валюта из названия инструмента)
ProcessBars = 10000 - колчество баров которые обрабатываются индикатором

Индикатор показывает новости только на барах, которые совпадают по времени с временем новости. Поэтому используйте его на периоде M15, а лучше на М1.
Я это поправлю в будущем


Пример работы индикатора:
http://fxpics.ru/image/GWT1

Описание формата:
Дата Время; Валюта; Важность(L,M,H); Название; Actual; Forecast; Previous; ALL-DAY или пустая строка
Пример вывода скрипта:

29.09.2016 01:50;JPY;L;Retail Sales y/y;-2.1%;-1.7%;-0.2%;
29.09.2016 02:00;USD;M;FOMC Member George Speaks;;;;
29.09.2016 00:00;EUR;M;German Prelim CPI m/m;0.1%;0.0%;0.0%;ALL-DAY
29.09.2016 08:35;JPY;H;BOJ Gov Kuroda Speaks;;;;
29.09.2016 09:00;EUR;M;Spanish Flash CPI y/y;0.3%;0.1%;-0.1%;
29.09.2016 09:55;EUR;M;German Unemployment Change;1K;-5K;-6K;
29.09.2016 10:30;GBP;M;Net Lending to Individuals m/m;4.5B;4.0B;3.8B;
29.09.2016 10:30;GBP;L;M4 Money Supply m/m;;0.8%;1.2%;


Тут кроме обычных событий есть события ALL-DAY (весь день). У этого события нет конкретного времени.
По этому у себя в советниках вы должны обрабатывать его отдельно (учитывать его или игнорировать).

Как парсить файл в MQL4:
Спойлер



int ReadNewsFile(string fileName)
{
int handle = FileOpen(fileName,FILE_READ);
if(handle == -1)
{
return -1;
}

if(FileSize(handle)==0)
{
FileClose(handle);
return -2;
}

while(!FileIsEnding(handle))
{
datetime time = FileReadDatetime(handle);
string currName = FileReadString(handle);
string severity = FileReadString(handle);
string newsName = FileReadString(handle);
double actual = FileReadNumber(handle);
double forecast = FileReadNumber(handle);
double previous = FileReadNumber(handle);
string comment = FileReadString(handle);

time = time + GMTOffset*3600;

int sevInt = 0;
if(severity == "L")
sevInt = 1;
if(severity == "M")
sevInt = 2;
if(severity == "H")
sevInt = 3;

//you code here
}
FileClose(handle);

return 0;
}



Как запускать скрипт:
Спойлер


Проверял только в Windows 10 но должно работать и на остальных системах.
Нужно устанавить Python 2.7 (не 3.2), библиотеки mechanize ( mechanize-0.2.5 ) и lxml (lxml-3.4.0.win32-py2.7.exe) для Python 2.7
Затем запускаете скрипт командой в консоли. Два параметра указывают начальный и конечные год. Пример:


python history_downloader.py 2007 2016



В атаче также файл с историей всех новостей с 2007 по 2016 год (до 08.10.2016). Время по гринвичу.
Имейте в виду что бывает что сайт закрывает соединение с ошибкой. Тогда загрузка обрывается.
Я пока не реализовал обработку этой ситуации в скрипте.

В этой теме я также могу выкладывать свежие файлы с историей.

TimeZoneAndNews.mq4
history_downloader.zip
events2007-2016.zip

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

[open source] [Скрипт] для скачки всей истории новостей… Опубликовано

В архиве с данными огромные дыры по инструментам, размером год - полтора.
https://gyazo.com/b298eca1c510727dd1562422d57e3312
Непонятно, результат ли это сбоя в работе парсера или такие данные хранятся в источнике.

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

[open source] [Скрипт] для скачки всей истории новостей… Опубликовано (изменено)


В архиве с данными огромные дыры по инструментам, размером год - полтора.
https://gyazo.com/b298eca1c510727dd1562422d57e3312
Непонятно, результат ли это сбоя в работе парсера или такие данные хранятся в источнике.



Это индикатор. Там стоит показ новости по времени бара. Если нет бара по вермени, собпадающему с временем новости, то эта новость показана не будет.
В индикаторе еще стоит ограничение на 10 000 баров чтобы он не тормозил.
Просто я его написал на скорую руку.

С архивом все впорядке.

update
Я добавил в описание этот момент. Спасибо что нашли ошибку. Исплользейте его пока на М15. Идеально думаю на М1. Тогда точно можно видеть все новости.
Изменено пользователем mmortall
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти
×
×
  • Создать...