程序库: 日历 - 页 13

 

关于交易、自动交易系统和交易策略测试的论坛

库:日历

TradingProFX, 2024.10.30 13:12

if (MQLInfoInteger(MQL_TESTER)) // 如果在测试仪中工作
{
      Res = Calendar.Load(CALENDAR_FILENAME);
      Print ("SIZE = ", Calendar.Set(NULL,CALENDAR_IMPORTANCE_NONE, 0, 0));
...

为什么在测试器中显示为 0?

零至参数。

 
Set() 方法仅适用于 MT5。如何初始化和下载 MT4 新闻?
 
mbjen #:
Set() 方法仅适用于 MT5。MT4 如何初始化和下载新闻?

MT5 测试器如何操作。

 
Calendar.Load(CALENDAR_FILENAME);
Calendar.FilterByCurrency(Symbol());

加载后得到: CALENDAR{ Events:[197684] }

而在 FilterByCurrency 之后: CALENDAR{ Events:[] }


Symbol() =EURUSD

 
mbjen EURUSD

我完全不明白。附上已编译的 mq4/5。

 
fxsaber #:

我什么都不明白。附上已编译的 mq4/5。

FilterByCurrency 无效。调用 FilterByCurrency() 后收到的是空数组。

代码很简单

#include <Calendar\Calendar.mqh>

#define CALENDAR_FILENAME "Calendar.bin"

CALENDAR                   Calendar;

if(DownloadCalendar())
        {
         Calendar.Load(CALENDAR_FILENAME);
         Calendar.FilterByCurrency(Symbol());
        }

在调试器中 Calendar.Load 之后,我看到 CALENDAR{ Events:[197684] }
而在 Calendar.FilterByCurrency(Symbol()) 之后:CALENDAR{ Events:[] }

 
if(DownloadCalendar())
        {
         Calendar.Load(CALENDAR_FILENAME);
         int size=Calendar.GetAmount();
         Print("size: ", size);
         Calendar.FilterByCurrency(Symbol());
         size=Calendar.GetAmount();
         Print("size: ", size);
        }

2025.04.02 21:59:59.444EURUSD,H1: size: 0
2025.04.02 21:59:56.772 EURUSD,H1: size: 197684

 
mbjen #:

调用 FilterByCurrency() 后会得到一个空数组。

这是按货币而非符号过滤。


在 ME 中打开 Calendar.mqh,然后按 ALT+M。


 
>

这是按货币而不是字符进行筛选。


明白了

 

您好。有可能将日历转移到某个时间吗?

日历是在一个终端(一个时区)上下载的,但将在另一个时区的终端(MT4)上使用。因此有必要以某种方式纠正日历中的时间。