程序库: 日历

 

日历:

日历 - 历史和实时基本面分析。

日历

Author: fxsaber

 
大师已经开始打基础了。好极了!伟大的变革即将到来)
 
Aleksey Mavrin:
大师已经开始打基础了。好极了!伟大的变革即将到来)

还没有什么变化。图书馆。

 
在初次发布时,源代码中不小心出现了垃圾。更新了代码。
 
对我自己来说,我用它来提醒自己。
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/zh/code/32430

int OnInit()
{
  return(!EventSetTimer(1));
}

void OnTimer()
{
  CALENDAR Calendar;
  
  string Currencies[2];
  
  // 获取当前字符的货币。
  Currencies[0] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE);
  Currencies[1] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT);
    
  // 按符号货币显示即将发生的重要事件。
  Calendar.Set(Currencies);
  
  Comment(Calendar.ToString(0, 5, true)); // 打印出来。
}

错过重要新闻的可能性大大降低。


这种从零开始的斧式调用在 0.6 毫秒内即可执行。当然,也有可能减少到零消耗。

 

事件日历 是写在更远的未来。因此,您也可以在 MT4 中通过保存 MT5 数据文件(例如提前一个月)来使用提醒功能。

我在 MT4 中就是这么做的。

 
在我看来,还缺少更详细的文档。很明显,你可以研究代码,但这样你就可以写自己的代码,而不是分析别人的代码;-)。尤其不清楚的是,是否可以在不执行 Set 的情况下调用 Get,以及是否可以回滚过滤器(据我所知是不可以的)。从上述示例中还不清楚是否有更方便的方法来跟踪事件的发生--特别是,如果我理解正确的话,我们应该比较 change_id,而不是TimeCurrent 的发生,因为数据更新并不一定与事件开始的时间完全一致。
 

Stanislav Korotky:
ИМХО, все же не хватает более подробной документации. Понятно, что можно заглянуть в код, но тогда вместо разбирания в чужом коде можно и свой написать ;-).

在 mqh 中按 ALT+M。这些方法的名称似乎很合理。

尤其不清楚的是,是否可以在不执行 Set 的情况下调用 Get,以及是否可以回滚过滤器(据我所知,不可以)。

Set - 用事件填充对象。对它的访问就像访问数组中的元素 一样。

从上述示例中,我们还不清楚是否有更方便的方法来跟踪事件的发生--特别是,如果我理解正确的话,您需要比较 change_id,而不是 TimeCurrent 的发生,因为数据更新并不一定与事件开始的时间完全一致。

如果我们谈论的是回溯测试,就没有也不可能有 change_id。

至于实时性,这一功能将在稍后的库中添加。


过滤器回滚与其他地方一样:在过滤器之前复制一个对象。

 

在结构上,它可以以解析器的形式嵌入其他数据源。为此,甚至还有一个 EVENT::Source 字段,现在只等于一个值 "MetaTrader5"。

因此,有了堆叠日历的功能。假设它从多个来源获取数据,然后将它们合并到一个地方。

 
fxsaber:

如果我们说的是回溯测试,那么就没有也不可能有 change_id。

这是一个值得商榷的细微差别:在现实生活中,事件会发生变化,如果测试人员(通过库)不能重现历史变化,测试的充分性就会下降。这里的一些主题已经提到过类似的话题:事件中的在线指标是相同的,然后它们会被修正。如果我们使用修正后的值进行测试,就无法获得专家 "即时 "分析的结果。好吧,或者是我误解了获取更新的情况。

 
Stanislav Korotky:

这是一个值得商榷的细微差别:在现实生活中,事件会发生变化,如果测试人员(通过库)不能重现历史变化,测试的充分性就会下降。这里的一些主题已经提到过类似的话题:事件中的在线指标是相同的,然后它们会被修正。如果我们使用修正后的值进行测试,就无法获得专家 "即时 "分析的结果。好吧,或者是我误解了获取更新的情况。

日历包含每个事件的四个值:

  • 当前(实际)--新闻发布后收到的第一个值。
  • 预测值--新闻发布前的预测值(由谁预测?
  • 前值--上次发布同一日历新闻后最先收到的值。即等于前一次的实际值:Previous[i] = Actual[i-1]。
  • 修订值 - 上一次实际值的调整值。日历中不存储此次更新的时间(和次数)。

在所有 HTML 日历中(包括标准 日历和终端日历),三重(实际值、预测值、上一个 值)= (实际值、预测值、修订 值)。因此,在下一个相关事件发生之前,不能在历史记录中使用已修订字段。其他字段可以使用。

没有(也不可能有)关于接收实际值的滞后值的信息,或者更准确地说,没有关于特定 交易服务器和新闻源不同步的信息。这就是为什么在回溯测试中不考虑它的原因。这一细微差别是显而易见的。


考虑到上述情况,在回溯测试中将 TimeTradeServer 与事件发生时间进行比较是完全合法的。使用事件发生前的(前值, 预测值,修正), 以及事件发生后的 (实际 , 预测值,前值)。