自定义符号。误差、错误、问题、建议。 - 页 26

 
Roman:

谢谢你,现在我知道原因是什么了。
系统定时器的步长仍然是15.625的倍数

已添加。
但我改变了wine api函数timeBeginPeriod(1)的系统定时器周期。
即系统定时器现在被递增到1毫秒。
而系统定时器的步骤应该是1毫秒,对吗?
为什么评论中的计数器仍然冻结?
https://rsdn.org/forum/winapi/4159851.1
 
而在Wine下的Linux上,评论中的计数器运行起来没有任何障碍,即使使用EventSetMillisecondTimer(1)也是如此。
但是处理器的负载增长到40%,有八个线程的处理器。
一般来说,关闭主题,偏离主题))。
 
Roman:
而在Wine下的Linux上,评论中的计数器运行起来没有任何障碍,即使有EventSetMillisecondTimer(1); 但CPU负载增加到40%,有8个CPU线程。

这就是我所说的...
为什么是每秒64次?
,我想这样你就可以在屏幕上显示各种信息。这个频率已经足够了。更加频繁地展示它是没有意义的,而且会太昂贵。
我想知道OnChartEvent、OnCalculate和OnTick是否也被每秒触发64次。- 我想是的,是的。

 
Nikolai Semko:

这就是我所说的...
为什么是每秒64次?
,我想这样你就可以在屏幕上显示各种信息。这个频率已经足够了。更加频繁地展示它是没有意义的,而且会太昂贵。
我想知道OnChartEvent、OnCalculate和OnTick是否也是每秒钟产生64次。

这里的重点不在于加载,而在于OnTimer()处理程序的能力
,事实证明,Windows限制了这些能力,而Linux则没有。

问题,OnChartEvent、OnCalculate和OnTick的生成频率也不超过每秒64次?
也许最好是等待开发商的答复。

 
Roman:

对于这个问题,OnChartEvent、OnCalculate和OnTick也是每秒产生不超过64次吗?
也许最好是等待开发商的答复。

用鼠标检查了OnChartEvent
我得到的最大频率是124赫兹。没有了。我想知道为什么它不是128。

附加的文件:
 
Nikolai Semko:

用鼠标检查了OnChartEvent。
最大频率为124赫兹。仅此而已。很奇怪,为什么不是128。

改变了一下算法。没有考虑到这个评论会吃掉很多时间。我得到了127赫兹。
,这已经符合逻辑了。1赫兹的误差已经可以用程序本身来解释,所以它有点偏离128。

所以OnChartEvent 的最大频率是128Hz。

附加的文件:
 
是否有可能使用MQL5获得合成价差?
在航站楼内本身就有合成物的价差。
 
Aidas Geguzis:
是否有可能使用MQL5获得合成价差?
在航站楼内本身就有合成物的价差。

对于第三方程序来说,自定义符号 与原始符号的差别很小。所以不应该有任何障碍。

 
如果通过终端界面创建了一个自定义工具,并且自定义符号 有一个负值
在自定义符号的界面中,你必须允许负的价格。
如果你不指定这个设置,就不会为创建的符号计算历史记录,图表只从当前时刻开始显示。
很久以来,我都不明白为什么不计算历史记录,因为日志中没有显示应启用负数价格的警告。
如果在日志里有这样的警告就好了。
 

在一个空的新的自定义符号上添加一对一的ticks(特别是来自MQ Demo上的EURUSD)会出现错误5310(不是立即出现,而是在一个任意日期的循环中)。

input int Limit = 10000;
input datetime Start = D'2020.06.01';

int fillArray(ulong &_start)
{
  MqlTick array[];
  int size = CopyTicks(_Symbol, array, COPY_TICKS_ALL, _start, Limit);
  if(size > 0)
  {
    _start = array[size - 1].time_msc + 1;
    if(CustomTicksAdd(symbolName, array) == -1)
    {
      Print("Error:", GetLastError());
      return -1;
    }
  }
  return size;
}

...
{
  ulong startMsc = (ulong)Start * 1000;
  while(fillArray(startMsc) > 0);
}

怎么了?我如何知道哪些具体的蜱虫被骂?输出数组到日志--那里没有违反时间顺序。