程序库: AccurateTimer - 页 2

 
Maxim Kuznetsov:

以上都是不同的计时器。在已加载的机器上,差异将是显著而自然的。

使用 bibilio 库则不会出现差异。

 
Maxim Kuznetsov:

以上都是不同的计时器。在加载的机器上,差异将是显著而自然的

矛盾在哪里?

编写程序库就是为了消除这些 "自然 "的差异。

 
Andrey Khatimlianskii:

有什么矛盾吗?

编写图书馆就是为了消除这些 "自然 "差异。

它们测量的是不同的东西。
 
Maxim Kuznetsov:
它们衡量的是不同的东西。

以某种股票代码为基准。例如,你的手表。看看一小时后你电脑上的时间(根据股票代码)与基准会有多大不同。当然会有差异。

但差异是通过比较得出的。再用一秒计时器或 100 毫秒计时器。看看标准时间 3600 "秒 "后和计时器 3600 "秒 "后与标准时间的差异。

 
Maxim Kuznetsov:
他们测量的是不同的东西。

它们测量的东西有什么区别?

有一项任务要求每 X 毫秒执行一次操作,但由于普通定时器实现方式的特殊性,您无法使用它来完成这项任务。

而定时器库可以弥补这一缺陷。

 
Andrey Khatimlianskii:

他们测量的结果有什么区别?

有一项任务--每隔 X 毫秒执行一次操作,而普通定时器由于其实现方式的特殊性,是无法完成这项任务的。

有了这个库,您就可以缩小这个差距。

来吧)首先,他们发明了一个问题,然后英勇地解决了它。根本就没有这个问题。

 
Rashid Umarov:

来吧)他们先是发明了一个问题,然后又英勇地解决了这个问题。根本就没有问题。

没有


 
更新后即可使用

Frame-режим

在收集优化结果帧模式下的 智能交易系统会忽略智能交易系统正常工作 的以下标准 事件:Init(初始)、Deinit(退出)、NewTick(新点数)、Trade交易)、TradeTransaction(交易交易)、BookEvent(簿记事件)和Timer(定时器)。只有ChartEvent 仍是工作事件。

不过,该库也可以在 EA 运行模式下启用定时器,为此,应在调用该库前写入以下一行。

#define  ACCURATETIMER_FRAME_MODE // 使在框架模式下工作的顾问的计时器正常工作

请注意,必须在源 EA 中写入 OnChartEvent(即使为空),相应的Frame 漏洞会 在 OnTimer 上开始传播。

附有这样一个智能交易系统的示例

// 演示 EA 定时器在帧模式下的操作

#define  ACCURATETIMER_FRAME_MODE // 使在框架模式下工作的顾问的计时器正常工作 
#include <AccurateTimer.mqh>     // 提高标准计时器的精度

sinput uint Range = 1; // 优化的输入参数

#define  SETRANGE(A, START, STEP, END) ParameterSetRange(#A, true, A, START, STEP, END)

void OnTesterInit() { SETRANGE(Range, 0, 1, Range); }

void OnTesterDeinit() { EventSetTimer(1); } // 在优化结束时设置计时器

// 注意 Frame 漏洞!-https://www.mql5.com/ru/forum/170952/page71#comment_6626688
void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam ) {}
void OnTimer()
{
  static const bool IsFrame = MQLInfoInteger(MQL_FRAME_MODE);
  
  if (IsFrame)
    Print("Hello World!");
}
 

fxsaber:

框架模式

优化结果框架收集模式下的智能 交易系统忽略 以下 正常工作 的标准事件 InitDeinitNewTickTradeTradeTransactionBookEventTimer。只有 ChartEvent 仍是工作事件

我认为这种说法部分 正确。我们已经讨论过 这个问题。

 
Dennis Kirichenko:

我认为,这种说法部分 正确。已经讨论过了

没有注意到偏颇之处。正如我所说。