2

如何获取经济公告的最新发布值,用于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 = 1x = 3(或任何其他数字),脚本可以正常工作。我只是想知道是否extern int是一种合适的方法来获取一个值并将其转换为一个数字,以便我可以通过x > yor比较它们x < y

我从另一个网站上找到了一个 SLOC,有人想将整个经济日历导入他们的算法(尽管我只需要一个单一的最新值),我认为将其包含在这个问题中可能有点有用。它从.csv文件中导入数据,所以也许我也可以尝试这种方法。SLOC:

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

我知道延迟将是这种方法的一个突出问题,但这是否可能实现?

4

1 回答 1

3

可以实现吗?是的:

如何?

1.找到稳定可靠的已发布数据来源(延迟发布、数据有效性)

2.检查,他们如何/如果他们操作某种技术传播或远程访问宏观数据的手段(-数据RSS馈送,不仅仅是新闻线,平面/“ondulated”普通html网络表格,静态命名的文件更新ETC。 )

3.实现一个代理扫描器,它将(2)自主地实现MetaTrader Terminal其内部代码执行单元的外部操作。

4.配备(3)与协议无关的、多平台的、与MT4进程的在线通信的集成就绪方式(ZeroMQ, nanomsg, 等)

5.实现代码以包括快速高效的通信交换和空闲握手。MT4 ExpertAdvisorproxy-scanner (3)

工具?

经过多年在大规模系统集成中这样做,最有效的方法包括快速原型开发(2+3+4)apython-2.x是这样做的合理选择,ZeroMQnanomsg 提供合理广泛的移植框架(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&cad=true&nzd=true&cny=true&high=true&medium=true&low=true

_ parse-able html-table 作为所需值的来源:

<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)重新开始重新设计、重新实现和重新测试步骤。

于 2016-08-26T15:17:15.623 回答