MT5和速度在行动 - 页 85

 
Anton:

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

SymbolInfoTick(NULL, Tick);

SymbolInfoTick(_Symbol, Tick);

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

 
fxsaber:

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

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

我不能确定,但凭直觉,我从不在任何地方写NULL。

从理论上讲,这不应该有什么区别。我认为在编译时NULL会变成一个正常的值,我不喜欢用眼睛看到无法理解的东西。

 
Alexey Viktorov:

我不能确定,但凭直觉,我从不在任何地方写NULL。

理论上,它应该没有影响。我认为NULL在编译时变成了一个正常的值,我不喜欢看到那些在我眼中没有意义的东西。

这也是事实。但我担心的是速度问题。

 

我不明白SymbolInfoTicks 在周末的时候怎么会在一个秒级计时器里慢下来!我不知道。

2021.02.28 21:33:02.993 ::SymbolInfoTick(_Symbol,Tick) = 171 mcs.

20张不同符号的图表,每张图表上都有一个EA在运行,它只在第二个计时器中取其符号的一个刻度。

休息日有什么好慢的呢!?


截图中的SZY 3374 MB - 这是一个小时前要求的本周蜱。像这样节约资源。

 
fxsaber:

我不明白SymbolInfoTicks 在周末的时候怎么会在一个秒级计时器里慢下来!我不知道。

20张不同符号的图表,每张都有一个EA在上面运行,在第二个定时器中只取其符号的一个刻度。

在周末的日子里,有什么可放慢的呢!?

你有。

  1. 缺乏信息
  2. 几十个专家顾问线程在4个核心上并行运行(有超线程的8个可以忽略不计)。
  3. 又发现了一个漫长等待中的单个异常点?
  4. 又是单一的随机系统延迟,任由线程管理器摆布?


 
Renat Fatkhullin:

你有。

  1. 缺乏信息
  2. 几十个专家线程在4个核心上并行运行(有超线程的8个核心可以不考虑)。
  3. 又发现了一个长期待机的单个离群点?
  4. 又是单一的随机系统延迟,任由线程管理器摆布?

我在想,为什么SymbolInfoTick 是一个对延迟有如此高选择性的函数?

 
fxsaber:

我在想,为什么SymbolInfoTick 是这样一个被选中的制动函数?

并非如此。

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

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


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

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

已经有人透露,我们。

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

理论上,它应该没有影响。我认为NULL在编译时变成了一个正常的值,我不喜欢用眼睛看到不可理解的东西。

理论上它应该有影响,但它不会,因为

SymbolInfoTick(_Symbol, Tick);

_符号不是通过值传递的(如帮助中的描述),而是通过引用 传递的。

 
Renat Fatkhullin:

并非如此。

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

谢谢,我会去看看的。


请考虑这样的功能。

int SymbolInfoTicks( const string Symb, MqlTick &Ticks[] ); // Возвращает свежие тики (не более сотни), пришедшие с предыдущего вызова этой функции.


现在只能通过CopyTicks*来解决获得LATE Ticks而不跳过的问题。对于这项广泛的任务,这是一个非常繁琐的机制。这就像用大炮打鸟。

因此,刹车,保留巨大的缓存,等等。

 
A100:

理论上它应该有影响,但它没有,因为在

_Symbol不是通过值传递的(如帮助中的描述),而是通过引用 传递的。

在函数内部,我们仍然需要传递给适当的打勾字符。这是分析字符串-变量所需的时间。对于NULL来说,这是没有必要的。