MT5和速度在行动 - 页 91

 
Anton:

ObjectGetInterger的刹车是常态吗?

 
fxsaber:

ObjectGetInterger的刹车是常态吗?

获取方法已经是同步的了,所以它们会等待。与对象的工作 是通过一个特殊的命令队列完成的,而不是通过对对象的直接访问。

对于信息,强烈建议不要混合使用Set和Get方法。最好先用复数写,再用复数读。或者反之亦然。

 
Renat Fatkhullin:

获取方法已经是同步的了,所以它们在等待。对象 是由一个特殊的命令队列来处理 的,而不是直接访问对象。

对于信息,不建议混合使用Set和Get方法。最好是先写集,再读集。或反之亦然。

不幸的是,我对它有意见。由上面的代码显示。

谢谢你的澄清。

 
在某些情况下把它弄出来了。

一个真实账户 上运行所附脚本的结果。

2021.03.29 17:18:55.280 TradesID_Example (EURUSD,M1)    HistoryDealsTotal() = 99663
2021.03.29 17:18:55.280 TradesID_Example (EURUSD,M1)    HistoryOrdersTotal() = 174307

2021.03.29 17:24:15.862 TradesID_Example (EURUSD,M1)    GetSumByPositionsID(PositionsID,GetSumByPositionID) = 29906412.60837016
2021.03.29 17:24:15.862 TradesID_Example (EURUSD,M1)    Alert: Bench_Stack = 0, 1 <= Time[GetSumByPositionsID(PositionsID,GetSumByPositionID))] = 320581370 mcs.

2021.03.29 17:24:16.057 TradesID_Example (EURUSD,M1)    GetSumByPositionsID(PositionsID,GetSumByPositionID2) = 29906412.60837016
2021.03.29 17:24:16.057 TradesID_Example (EURUSD,M1)    Alert: Bench_Stack = 0, 1 <= Time[GetSumByPositionsID(PositionsID,GetSumByPositionID2))] = 195526 mcs.
2021.03.29 17:24:16.170 TradesID_Example (EURUSD,M1)    GetSumByPositionsID(PositionsID,GetSumByPositionID2) = 29906412.60837016
2021.03.29 17:24:16.170 TradesID_Example (EURUSD,M1)    Alert: Bench_Stack = 0, 1 <= Time[GetSumByPositionsID(PositionsID,GetSumByPositionID2))] = 112839 mcs.

库的速度比通常的实现快了~2500倍。只有替代方法可以在合理的时间内进行一些计算。

 

为了强迫终端分配内存,你可以运行这个脚本

void OnStart()
  {
   short arr[];
   ArrayResize(arr,INT_MAX);
   ArrayInitialize(arr,0);
   Print(ArraySize(arr));
   Sleep(5000);
  }

根据你的RAM大小调整阵列大小

 
Rorschach:

为了强迫终端分配内存,你可以运行这个脚本

根据你的RAM大小调整阵列大小

有什么想法?

 
fxsaber:

有什么想法?

显然,将终端置于内存不足 的情况下会触发内部机制来释放它。

 
traveller00:

显然,如果你把终端放在内存不足 的条件下,内存释放的内部机制将发挥作用。

是的,终端的内存用完了,开始重置缓存的数据

 

出现了一种非标准的情况。专家顾问根据指标信号进行截图,如果过滤器通过,则给出开仓/平仓的命令。
截图的名称包含时间:日、时、秒,例如,CHFJPY_d29_h10_m24_s17。时间取自TimeCurrent()函数。

在终端有28个专家顾问的实例在运行。在某些时候,在44分钟内,终端似乎冻结了,在10:27,它又开始正常工作。以下是终端日志本身的部分内容。


看不到连接中断的情况。欧元兑美元在10:27的第一个条目是交易历史中的10:14 sl收盘。

以下是EA的部分日志。你可以从上面的红框中看到,记录的时间和截图名称中的TimeCurrent()几乎一样。
而在较低的帧中,差异为半小时。


在CHFJPY符号上,形成一张带有开盘信号的截图发生在10:12,而第二张带有信号的截图则形成于10:24。但开/关和新的开盘在一分钟内发生,时间为10:27。

总之,这样的怪事发生在9:43到10:27 :
1) TimeCurrent()工作,获得了实际的服务器时间,专家顾问从指标中收到了正确的信号。
2) 日志是在10:27才写的。截图在10:27写到我的硬盘的Files文件夹中,新的订单(基于旧的信号)在10:27打开。

也许有人遇到过这种情况,这种打嗝或减速的原因可能是什么?请告知应该使用什么函数来检测原因?自4月以来,这种情况已经多次出现。

 
Vasiliy Pushkaryov:

你能告诉我用什么函数来捕捉原因吗?

监测TimeLocal和TimeCurrent 之间的差异。