MT5和速度在行动 - 页 70

 
请添加所需的功能。

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

新版本的MetaTrader 5 build 2650:图表的背景加载和MQL5代码分析器的改进

fxsaber, 2020.11.04 16:50

不幸的是,他们并没有增加最小化图表、终端、市场观察等窗口的功能。早前有证据表明,最小化这些窗口可以减少CPU的负荷。

当终端窗口不可见时,停止在市场观察窗口和其他窗口显示数据。例如,当当前的应用程序(如浏览器)处于活动状态并被最大化时。


胡子的需求是确定当前选择的是哪个图表。人们被迫使用硬壳的WinAPI解决方案

Активный график (ID активного графика)
Активный график (ID активного графика)
  • 2014.10.20
  • www.mql5.com
Доброго времени суток! Нужно элементарно определить ID активного графика (того что выбран в данный момент...
 

是的,MetaTrader VPS与主机供应商 的普通VPS相比,具有数量级更低的延迟(延迟的排放)和多倍的所有资源。

这已经解释过很多次了,为什么。

保证执行线程的零延迟不可能存在于当前(所有)的处理器架构中。关于" 实时系统操作系统"的传说仍然是神话,你不需要提到它们。

 
fxsaber:

我明白单次弹射是怎么回事了,谢谢你的详细解释。不过,在这一点上,我们讨论的不是SymbolInfoTick,而是不同性质的滞后,它几乎在每一个tick 上都很急。

这只是关于你的单一排放测量 - 它们不再被接受或考虑。你的整个分析完全建立在排放上。

只有在一条评论中清楚、全面地描述了情景,没有 "实际上是指其他评论",没有滚动到单指令计量的 情况下,才能考虑其他问题。

 
Renat Fatkhullin:

只有在单一评论中明确和充分地描述了情景,没有 "实际上是指其他评论",并且没有滚动到单一指令计量的 情况下,才能考虑其他问题。

这里的链接是细节,包括源代码中的评论。

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

MT5和速度在行动

fxsaber, 2020.11.05 07:42

谁在使用MQ的VPS,请在那里分享以下程序的结果。

  1. 捕捉OnTick/OnBook滞后的专家顾问
  2. 专家顾问,用旧的时间抓取蜱虫。
  3. 一个测量Sleep(1)平均执行时间的脚本
 

有一个叫deltix的平台(不是在做广告)。当我与开发人员交谈时(我想在一段时间前连接它进行套利),他们对单次延迟的解释是一样的,这是正常的,你需要看一下平均数。

顺便说一下,这是在没有任何石头的情况下,对任何人的破坏。

 

由于单一的异常值不可避免地会出现,因此,有规律的函数返回整个市场观察的数组和所有当前头寸/订单 的数组是合乎逻辑的。与MarketBookGet相似。

现在必须要运行周期。这是很昂贵的。

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

MT5和速度在行动

fxsaber, 2020.10.07 12:41

实际的需要使你这样写。

// Возвращает время Обзора рынка в миллисекундах.
long TimeCurrentMsc()
{
  long Res = 0;
  
  MqlTick Tick;
  
  for (int i = SymbolsTotal(true); i >= 0; i--) 
  {
    const string Symb = SymbolName(i, true);
    
    if (SymbolInfoTick(Symb, Tick) && (Tick.time_msc > Res))
      Res = Tick.time_msc;
  }

  return(Res);
}

我从来没有尝试把EA放到MQL5中,也没有尝试把它添加到MQL5中。

 
Slava:

将不会有加速。提出你的计算结果,至少要有粗略的数字,证明多个加速器。

争夺资源?不受控制地创造新的流?无所事事的冲突?

你想要不明原因的减速吗?

在基于事件的模型中,所有的事件总是以编队的方式进行,一次一个。嚼碎了 - 嚼碎了。

在异步架构中,没有对事件处理 进行加速?你是认真的吗?
速处理用户程序,特别是其处理程序。这就是我所说的。
我理解你正试图尽量减少螺纹的使用。但其中一个选择是在一个单独的线程中运行每个处理程序。
没有不受控制地创建线程。在一个用户程序中,只有几个处理程序,每个处理程序都应该在程序开始时在自己的线程中启动。
你用互斥或其他方式在处理程序之间同步事件。

但是,如果线程对你来说是一种痛苦,正如你所提到的,有一个事件模型可以让你在一个单线程中工作。事件处理,在一个有任务运行的事件循环中。
该事件循环虽然是按顺序运行的,但该循环中的任务是平行处理的!
这就是我的意思,程序中的所有处理程序都在这个事件循环中运行,那么所有的事件都将是异步的,同时实时到达。
也就是说,OnTradeOnBook中的相同事件将被匹配。
,请问事件循环在其他语言中如何运作。
如果事件循环 在终端已经存在,只需将其应用于程序中的处理程序。这就是全部。
 
Roman:
每个处理程序应该在一个单独的线程中运行

这个问题没有得到任何解决。如果不同的线程对内部变量进行读写,例如,MQL程序将变得更加复杂。

 
fxsaber:

这个问题没有得到任何解决。如果从不同的线程对内部变量进行读/写访问,例如,MQL-程序将变得更加复杂,是一个数量级。

MQL-程序不会变得更复杂,这只是一个让开发者头痛的同步问题。当然,他们并不愿意解决这个问题。
或者是项目的初始架构陷入僵局,没有为这种模式设计。
当然,也没有人会为了一个新的模型而重写项目。
事件循环模型 更适合于处理程序。这就是我想说的。
而这种模式很可能已经 在终端中存在了一段时间,只是没有被应用到处理程序中。

 
Roman:

MQL程序将不会变得更复杂...

我建议这就是理论研究的结束,它永远不会与这里的实践相交。