MQL4: Как получить значение события экономического календаря?

Как я могу получить последнее опубликованное значение экономического объявления с помощью MQL4 для сравнения с другой переменной с именем x?

Мне нужно сравнить полученные данные (переменная x) с введенным вручную значением переменной y 170000.

Если x > y, выполняется функция, а если x < y - другая функция.

extern int x = 170000;

extern int y = ...; //Fetch latest value of economic announcement 
                    //to compare to extern int x

void OnStart()
  {

  if(x>y){ 
      //Executes a function
  } 

  else 
  if (x<y){
      //Executes a different function
  }

  }

Используя extern int, если я устанавливаю x = 1 и x = 3 (или любые другие числа) вручную, скрипт работает правильно. Мне просто интересно, будет ли extern int подходящим методом для получения значения и преобразования его в число, чтобы я мог сравнить их оба через x > y или x < y?

Я нашел SLOC с другого веб-сайта, где кто-то хотел импортировать весь экономический календарь в свой алгоритм (несмотря на то, что мне нужно только одно последнее значение), которое, как я подумал, может быть полезно включить в этот вопрос. Он импортирует данные из файла .csv, так что, возможно, я мог бы попробовать и этот метод. SLOC:

extern string HtmlAdress = "http://www.dailyfx.com/calendar/Dailyfx_Global_Economic_Calendar.csv";

Я понимаю, что задержка будет серьезной проблемой при использовании этого метода, но возможно ли это, тем не менее, достичь?


person p.luck    schedule 25.08.2016    source источник


Ответы (1)


Достижимо? ДА:

Как?

1. найти стабильный и надежный источник опубликованных данных (задержка публикации, достоверность данных)

2. проверьте, используют ли они какие-либо средства технического распространения или удаленного доступа к макроданным (RSS - поток данных, а не только ленту новостей, плоский / "ondulated" простые html веб-таблицы, обновления файлов со статическими именами и т. д.)

3. Реализуйте прокси-сканер, который будет внедрять (2) автономно для внешних операций терминала MetaTrader и его внутренних блоков исполнения кода.

4. Оборудуйте (3) готовыми к интеграции средствами для независимого от протокола многоплатформенного онлайн-взаимодействия с процессами MT4 (ZeroMQ, nanomsg, и другие )

5. Внедрите код MT4 ExpertAdvisor, чтобы включить быстрый и эффективный обмен данными и установление связи в режиме ожидания с proxy-scanner (3).

Инструменты?

после многих лет такой интеграции крупномасштабных систем наиболее эффективным подходом является быстрое создание прототипа. (2+3+4) a python-2.x - разумный вариант для этого, а ZeroMQ или nanomsg обеспечивают достаточно широкую портированную структуру для <сильного > (4+5)


Пример? ДА:

https://www.dailyfx.com/calendar/index_iframe.html?tz=2&sort=date&week=today&eur=true&usd=true&jpy=true&gbp=true&chf=true&aud=true=true&chf=true&aud=true&rue&rue&cadny&true&rue&cadny&cadny&true&cadny&true&cadny=true&news=true

Предоставляет алгоритмически анализируемую html-таблицу в качестве источника необходимых значений:

<tr class ="e-cal-row" id ="eventrow10" onClick ="commentOnOff('...xml',10,'english')"> <td></td> <td> 10:00 </td> <td><div class="flag-32-eur"></div></td> <td width="100%"> EUR German IFO - Expectations (AUG) </td> <td class="evImportance medium"><span></span></td> <td style="color:red" nowrap="nowrap"> <span style="color:red"> 100.1 </span></td> <td nowrap="nowrap"> 102.4 </td> <td style="color:red" nowrap="nowrap"> <span style="color:red"> 102.2 </span></td> <td align="right"><div class="arrow"></div></td> </tr>

Рискованно? ДА:

  • больше компонентов означает больше мест для реализации стратегий устранения ошибок

  • решение в конечном итоге зависит от состояния (2) (возможна реализация источника обновлений 1 + 1)

  • наконец, любое крошечное изменение в (2) заставляет вашу линию обработки останавливаться и заставляет вашу реализацию вернуться к (2) и перезапускам повторная -инжиниринг, повторная реализация и повторное тестирование.

person user3666197    schedule 26.08.2016
comment
Спасибо за ваш ответ. Я думаю, что, возможно, нашел способ сделать это, импортировав данные с веб-сайта, который предоставляет вызовы API формата CSV, которые я получу с помощью функции MQL4 WebRequest (). - person p.luck; 31.08.2016
comment
Это было бы хорошо вписаться в (2). Но следует также отметить, что в случае, если такая ссылка для файла с объявлениями о фундаментальных данных действительно существует и работает (указанная выше не работает), файл .CSV требует синтаксического анализа содержимого и дополнительной обработки для получения индивидуального значения. Функция WebRequest() ни в коем случае вам не поможет, для взаимодействия httpServer требуются другие порты, кроме port# == { 80 | 443 }. - person user3666197; 31.08.2016