Скрипт + индикатор для скачивания новостей Forexfactory

От mmortall, 8 октября, 2016 в Скрипты

Автор#1

Название скрипта: 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.mq437 скач.
history_downloader.zip42 скач.
events2007-2016.zip30 скач.

Изменено 31 июля, 2025 пользователем alllexxx

#2

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

Автор#3


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



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

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

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

Изменено 8 октября, 2016 пользователем mmortall

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

Перейти к списку тем
Форум · 2.0.20260627.0025