MT5和速度在行动 - 页 90

 

关于交易、自动交易系统和交易策略测试的论坛

MT5和速度在行动

fxsaber, 2021.03.10 14:53

一个明显的例子是,市场观察的速度减慢了。

看一下处理器一栏中的数值(从右数第二个)。


也许市场概览应该由显卡来处理?

 
BillionerClub:

也许市场概况应该由显卡来处理?

特别是如果MT是在一个虚拟机中(不是一个不常见的情况)。

 
BillionerClub:

也许市场概况应该由显卡来处理?

终端中没有FPS(每秒帧数)限制。在市场观察中,它可以是300 fps或更高。

在交易终端中,任何fps>50的可视化都是对计算资源 的浪费。

 
BillionerClub:

也许市场概况应该由显卡来处理?

宁愿不基于SysListView32,因为它本身并不快,但要有自己的元素来渲染,但要有实现滚动、排序等的所有 "魅力"。另一个问题--在这种形式下工作时有必要吗?然后在工作期间关闭它将是解决这个问题的一个选择(如果它是一个问题)。

 
发现图形对象的属性缓存丢失。
#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnStart()
{
  const string Name = "ObjectName";
  
  ObjectCreate(0, Name, OBJ_BITMAP_LABEL, 0, 0, 0);
  
  for (int i = 0; i < 10; i++)
    _B(::ObjectGetInteger(0, Name, OBJPROP_COLOR), 100); // Повторное обращение к тому же объекту должно быть быстрым, но этого не происходит.
    
  ObjectDelete(0, Name);
  
  Print(::ObjectSetInteger(0, Name, OBJPROP_COLOR, 0)); // true для удаленного объекта!
}


结果。

Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 9361 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 396 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 1399 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 987 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 1111 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 1040 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 639 mcs.
Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 555 in OnStart: ::ObjectGetInteger(0,Name,OBJPROP_COLOR)] = 796 mcs.
true


非常昂贵,而且还有一个ObjectSet函数错误。

搜索字符串:Oshibka 026。

 
fxsaber:

还有一个ObjectSet函数错误。

搜索字符串:Oshibka 026。

异步处理对象

 
Andrey Khatimlianskii:

对象处理是异步的

事实证明,ObjectSet总是要返回true。

 
fxsaber:

事实证明,ObjectSet总是要返回true。

阅读帮助。

https://www.mql5.com/ru/docs/objects/objectsetinteger

返回的值

只有当改变图形对象属性的命令被成功发送到图形时才返回真,否则返回假。要获得更多的错误信息,请调用GetLastError()。


Документация по MQL5: Графические объекты / ObjectSetInteger
Документация по MQL5: Графические объекты / ObjectSetInteger
  • www.mql5.com
ObjectSetInteger - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:

事实证明,ObjectSet总是要返回true。

我无法用逻辑得出同样的结论。

 
Andrey Khatimlianskii:

安东

false - 只有在ChartID 错误的情况下。对于自己的ChartID(零),它总是真实的。

你必须非常努力才能造成虚假。