Обсуждение статьи "Веб-скрапинг данных о доходности облигаций"

 

Опубликована статья Веб-скрапинг данных о доходности облигаций:

С автоматическим сбором данных о процентных ставках вы сможете улучшить работу своего торгового советника.

При разработке систем автоматической торговли мы почти всегда используем данные технических индикаторов, которые анализируют прошлое, чтобы предсказать будущее поведение цены. Но без учета фундаментальных сил, движущих рынки, мы будем очевидно в менее выгодном положении по сравнению с теми, кто при принятии торговых решений дополнительно учитывает фундаментальные данные. Работу торгового советника может улучшить индикатор, основанный на автоматически собираемых фундаментальных данных. Наиболее сильное влияние на курсы соответствующих валют оказывает, пожалуй, информация о процентных ставках. Ставки центральных банков, как правило, гораздо менее волатильны, чем доходность государственных облигаций, таких как, например, 10-летние казначейские облигации в США. При этом колебания на мировых рынках облигаций наблюдаются на всех таймфреймах. Доходность отражает ожидания рынка относительно будущих ставок центрального банка. Доходность облигаций часто является опережающим индикатором изменения процентных ставок и обменных курсов. На форексе применительно к валютной паре анализируют дифференциал процентных ставок, дельту или изменение процентного дифференциала на разных таймфреймах. На рисунке 1 показан случай, когда движение процентного дифференциала в базовых пунктах в положительном направлении стало опережающим индикатором движения валютной пары EURUSD в том же направлении. В этой статье мы рассмотрим, как собирать данные о доходности облигаций из интернета и как получить на основе этих данных значения процентного дифференциала и дельту.


Опережающий индикатор дифференциала процентных ставок

Рис 1. Индикатор процентного дифференциала на часовом графике EURUSD.

Автор: Steven Brown

 

Вот что я получаю, когда подключаю скрипт05

и ничего не выводится ни на график, ни на индикатор...

что я упускаю?


2019.04.14 17:11:18.623 Скрипты скрипт облигаций (EURUSD,Daily) загружен успешно

2019.04.14 17:11:18.984 Скрипты скрипт облигаций (EURUSD,Daily) удален



 
jimjack:

Вот что я получаю, когда прикрепляю скрипт05

и ничего не выводится ни на график, ни на индикатор...

что я упускаю?


2019.04.14 17:11:18.623 Скрипты script bonds (EURUSD,Daily) загружены успешно

2019.04.14 17:11:18.984 Скрипты скрипт облигаций (EURUSD,Daily) удален



ScraperBot06.mq4 работает нормально в MT5, и делает то же самое, что и ScraperBot05.mq5. Разница в том, что ScraperBot05 использует WebRequest(), а ScraperBot06 использует функции из WinINet.dll, которые кажутся более надежными, чем WebRequest(). Я изучу проблему и посмотрю, можно ли заставить работать ScraperBot05.mq5, использующий WebRequest(). Когда я отправлял статью в октябре 2018 года, она работала нормально.

Редактировать: Вызов WebRequest() в ScraperBot05.mql и других скриптах будет работать, только если сервер, указанный в веб-запросе, разрешен в опциях Metatrader. Это объясняется в статье.

 
ScraperBot06.mq5, прикрепленный к этому сообщению, такой же, как ScraperBot05.mq5, но использует функции из WinINet.dll вместо WebRequest(). Я загрузил ScraperBot06.mq5, потому что WebRequest() в ScraperBot05.mq5 теперь возвращает код ошибки -1, после чего GetLastError() возвращает код 4014,

ERR_FUNCTION_NOT_ALLOWED

4014

Функция не разрешена для вызова

Возможно, в Metatrader 5 изменилась реализация WebRequest() с момента отправки статьи в октябре 2018 года, но документация по WebRequest() не изменилась.

Редактировать: проблема решилась на моем компьютере после разрешения запросов к веб-серверу "https://api.wsj.net" в опциях Metatrader. Видимо, разрешение было удалено обновлением Metatrader.

Файлы:
 
Steven Brown:
ScraperBot06.mq5, прикрепленный к этому сообщению, такой же, как ScraperBot05.mq5, но использует функции из WinINet.dll вместо WebRequest(). Я загрузил ScraperBot06.mq5, потому что WebRequest() в ScraperBot05.mq5 теперь возвращает код ошибки -1, после чего GetLastError() возвращает код 4014,

ERR_FUNCTION_NOT_ALLOWED

4014

Функция не разрешена для вызова

Возможно, в Metatrader 5 изменилась реализация WebRequest() с тех пор, как я отправил статью в октябре 2018 года, но документация по WebRequest() не изменилась.




Спасибо за ответ.

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

В терминале по-прежнему ничего не видно. dll разрешена.

Нужны ли еще какие-нибудь пакеты от microsoft, .net и т.д.?


спасибо



 
ВАЖНО! Вызов WebRequest() в ScraperBot04.mq5 и ScraperBot05.mq5 будет работать только в том случае, если сервер, указанный в веб-запросе, разрешен в опциях Metatrader. Чтобы разрешить веб-сервер, нажмите Tools\Options и в появившемся диалоговом окне перейдите на вкладку Expert Advisors. Установите флажок "Разрешить веб-запрос для указанного URL", нажмите "Добавить новый URL" и введите базовый URL веб-сервера. В случае со ScraperBot05 этот URL -"https://api.wsj.net". Если этого не сделать, вызов WebRequest() завершится неудачей, сообщив коды ошибок -1 и 4014. Эта необходимость специально разрешать веб-сервер упоминается в статье под заголовком "ScraperBot04". Я написал: "Чтобы WebRequest работал, базовый URL сервера, в данном случае'https://api.wsj.net', должен быть включен в список разрешенных серверов в разделе "Tools\Options\Expert Advisors" в платформе MetaTrader".

В моей копии Metatrader 5 был разрешен веб-сервер"https://api.wsj.net", но он был удален из списка при обновлении до новой версии Metatrader 5. Этого не должно происходить, и, похоже, это ошибка, которая должна быть исправлена компанией Metaquotes. Если веб-сервер разрешен, он должен оставаться разрешенным и после обновлений.
 
jimjack:




Спасибо за ваш ответ.

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

в терминале ничего не видно. dll разрешена.

Нужны ли еще какие-нибудь пакеты от microsoft, .net и т.д.?


спасибо



Предупреждения компилятора о потере данных можно игнорировать, поскольку они являются результатом использования типа float вместо типа double. Я решил использовать тип float, потому что точность типа double не требуется в данном приложении. После предупреждений компиляция проходит успешно с нулевыми ошибками. Вы загрузили, скомпилировали и попробовали сценарий, который я прикрепил к своему ответу, под названием ScraperBot06.mq5? В нем вместо WebRequest() используется WinINet.dll. Что касается неудачного вызова WebRequest() в ScraperBot05, включен ли у вас веб-сервер в опциях Metatrader? См. мое предыдущее сообщение, которое начинается сослов "ВАЖНО!". В статье я написал, что WebRequest() не сработает, если веб-сервер не разрешен в опциях.
 

хммм..,

давайте я переустановлю metatrader, потому что url был разрешен с самого начала. да, я разрешил wininet.dll и проверил мои каталоги win (10)... он там.

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