MT5和速度在行动 - 页 86

 
fxsaber:

@Anton,在许多标准函数中,你可以指定NULL而不是一个字符。它是否影响执行的速度?

还是对终端/测试仪没有区别?

Symbol(),_Symbol条目等同于NULL(其中允许用NULL代替符号名称)。

在这种情况下,不需要额外检查当前符号的存在、当前符号在市场观察中的存在以及不必要地调用当前符号的属性,因为当前字符的属性已被缓存。

也就是说,如果你指定一个简单的字符串参数,而不是Symbol()、_Symbol或NULL,那么检查完整的程序,仍然要求属性

 
Slava:

Symbol(),_Symbol条目等同于NULL(其中允许用NULL代替符号名)。

在这种情况下,没有必要检查当前符号的存在,也没有必要检查当前符号在市场观察中的存在,更没有必要调用当前符号的属性,因为当前符号的属性是被缓存的。

斯拉瓦,你能否评论一下:在股票上,符号规范中的tick价格被设置为'0'。而这是支持的说法。

"收到了技术部门的确认。请注意,不可能为股票填写 "勾股价 "参数。该值将被默认为0。
谢谢你与我们联系!"


情况真的是这样吗?在 "符号说明 "中说,股票的勾股价是零?

 
Vladimir Karputov:

斯拉瓦,你能否评论一下:在股票上,符号规范中的tick价格被设置为'0'。而这是支持的说法。

"收到了技术部门的确认。请注意,不可能为股票填写 "Tick价格 "参数。该值将被默认为0。
谢谢你与我们联系!"


情况真的是这样吗?在 "符号说明 "中说,股票的勾股价是零?

是的,有一些细微的差别。

当零被展出时,你必须自己进行计算。向你的经纪人询问有关公式

 
fxsaber:

现在只能通过CopyTicks*来解决获得LATE Ticks而不跳过的问题。对于这个普遍存在的问题,这是一个非常繁琐的机制。

顺便说一下,从今天最新发布的MT5版本的新鲜日志来看。

Time[Main.mqh 162 in ProcessTicks: CopyTicksRange(_Symbol,OldTicks,COPY_TICKS_INFO,LastTickParsed.time_msc)] = 704931 mcs.
Time[Main.mqh 162 in ProcessTicks: CopyTicksRange(_Symbol,OldTicks,COPY_TICKS_INFO,LastTickParsed.time_msc)] = 704684 mcs.
Time[Main.mqh 162 in ProcessTicks: CopyTicksRange(_Symbol,OldTicks,COPY_TICKS_INFO,LastTickParsed.time_msc)] = 704425 mcs.

它在一个符号上挂了3个EA,每个都在自己的图表上。而这个要求每隔一段时间 就会继续下去。这样的峰值当然不常有,但事实上,1次对新刻度的请求,来自最后一个刻度,是700毫秒。

 
Renat Fatkhullin:

并非如此。

在任何节目中,你总是会在任何地方捕捉到随机的延迟。开始记录一切,你会对Windows的现实情况感到惊恐。我已经详细解释过几次了。

有一次,当我们在系统WinAPI函数上抓到60-80毫秒的随机突发,而不是0毫秒时,我们也感到很惊讶。


我们现在正在将我们的大部分Windows解决方案集体迁移到特别脱脂的Windows Server 2019 Core版本,并将.NET Core网络项目迁移到Linux。这带来了巨大的系统资源节约,并严重降低了系统延迟。

撇开MataTrader 5终端的第一步是开始实施一个任务管理器,以记录飞行中的资源消耗。对于我们自己,我们正在收集更多的信息。

已经很清楚,我们是。

  • 预留时间过长,不必要的流量
  • 规模过大
  • 过度扩展缓存。
到下一个版本,我们将逐步解决一些资源问题。

如果也有一个Linux终端,那不是很好吗 ))

 
Slava:

是的,有一些细微的差别。

如果你有零钱,你必须自己去计算。请向你的经纪人询问该公式。

SymbolInfoXXXX 一切都正确。问题是,为什么他们说《规范》中的股份设置为'0'。他们说这是很清楚的--一个刻度等于一分钱。但这并不是在规范中设置'0'的原因?

 
fxsaber:

在函数内部,你仍然要跳到相应的勾号字符。现在是分析字符串变量的时候了。对于NULL,没有必要这样做。

当时 检查了一下,没有看到任何明显的速度差异。你可以自己检查一下

 
Slava:

如果指定了一个普通的字符串参数,而不是Symbol()、_Symbol或NULL,那么就会检查整个程序,同时也会查询属性

谢谢你提供的信息!事实证明,这样做会更好。

// Быстрый SymbolInfoTick.
bool SymbolInfoTickFast( const string &Symb, MqlTick &Tick )
{
  return((Symb == _Symbol) ? SymbolInfoTick(_Symbol, Tick)
                           : SymbolInfoTick(Symb, Tick));
}
 
fxsaber:

谢谢你提供的信息!事实证明,这样做会更好。

即使没有技术细节,我也无法想象你在你的职能中如何做得不同......

这个结构应该如何比标准的SymbolInfoTick()更快?

 
Artyom Trishkin:

这个结构怎么会比标准的SymbolInfoTick()快?

更快。