文章 "MQL5 对决 QLUA - 为什么在 MQL5 中交易操作速度快达 28 倍?"

 

新文章 MQL5 对决 QLUA - 为什么在 MQL5 中交易操作速度快达 28 倍?已发布:

您可曾想过您的订单是如何迅速传递到交易所, 它的执行速度如何, 而您的终端需要多久才能收到操作结果?我们已经准备好一场交易操作执行速度的比对, 因为从未有人测量过使用 MQL5 和 QLUA 应用时的这些数值。

作者:MetaQuotes Software Corp.

 

请在真实账户上再做一次 MT5 速度测试

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

测试 "CopyTicks

fxsaber, 2016.09.13 11:11 AM

如果通过 OrderSendAsync 在价差内发送两个限价(BuyLimit1_price < BuyLimit2_price),交易所是否会同时(以 1 毫秒的精度)生成两个买入价提高的连续 ticks?


 

仇视政治者对这篇文章的评论

MetaQuotes Software Corp. / Клуб трейдеров sMart-Lab. Мы делаем деньги на бирже.
MetaQuotes Software Corp. / Клуб трейдеров sMart-Lab. Мы делаем деньги на бирже.
  • smart-lab.ru
Мы рады сообщить об интеграции с LMAX Exchange — многосторонней площадкой (Multilateral Trading Facility, MTF) для торговли валютами, драгоценными металлами и индексами. Шлюз MetaTrader 5 к LMAX Exchange предлагает брокерам, фондам и профессиональным трейдерам доступ к потоковой ликвидности с использованием лимитных ордеров, прозрачное...
 
//--- 跳过初始队列清理和预热的第一个刻度点
   tickcounter++;
   if(tickcounter<ExtSkipFirstTicks)
      return;

需要澄清排队和预热对性能的影响。

 

MQL5 语言 本身速度的一个重要结论是: 当我们谈论毫秒甚至微秒时,自动化语言本身的速度开始在延迟中占据重要地位。

如果交易员使用 QLUA/EasyLanguage 等解释型语言,那么他在绑扎时就会损失几毫秒,而自己却浑然不觉。更不用说,他从平台核心接收市场活动通知的程序会出现数百微秒甚至数毫秒的严重延迟。

这就是为什么我们要花费大量精力优化 MQL5,一步步消除瓶颈,赢得几十甚至几百微秒的时间。


最近,我们在 MOEX 上展示了 Quik、MetaTrader 5 和 SmartX 三种终端的数据显示速度。

您应从大约 00:50 开始观看开市情况:赢家立即可见


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

订单执行速度

Renat Fatkhullin, 2016.09.01 20:29

我们拥有纯交易数据交付机制,与基于快照的竞争对手不同。这就是为什么所有单笔交易(ticks 也是交易)都是即时交付,没有延迟。

例如,Quik 的图表基于快照,与刻度线流隔离。这就是为什么与 MetaTrader 相比,Quik 的图表视觉效果较慢。与 MT5 相比,Quick 中的堆栈更新速度要慢 5 倍--我们已经测量过。最有可能的是,更新也是快照,以免终端和基础设施超载。

老实说,我们的所有数据都是交易流式的,没有延迟和快照。


 

Мы записали на видео все три теста одним роликом, чтобы было видно:

  1. 交易操作在同一个真实账户上进行;
  2. 在同一工具 Si-9.16;
  3. 在同一台电脑上;
  4. 交易在同一时间执行
  5. 在相同的市场条件下
  6. 在同一工具和同一时间测量堆栈更新率;
  7. 到 Openreach 服务器的网络延迟为 2 毫秒。

不幸的是,事实并非如此。应该在同一时间进行测量,并在视频中显示出来。

您可以在平静的市场中运行 MT5,也可以在新闻中运行 QUICK。而指标将完全不同。

 
fxsaber:


需要澄清队列和预热对性能的影响。

如果您观看这段视频,就会发现在交易时段 开始前,堆栈会有几次单笔更新。因此,脚本会跳过前 N 个刻度点,以确保堆栈中确实有大量订单。之后才开始计算刻度。


 
fxsaber:

很遗憾,事实并非如此。应该是在同一时间进行测量,并在视频中显示出来。

所有测试都是一次一块依次拍摄的,以保证测量的干净利落。
 
Rashid Umarov:
所有测试都是按顺序逐个进行的,以保持测量的清洁。
这样一来,有关眼镜的结论也就顺理成章地受到质疑了。
 
fxsaber:
那么,关于眼镜的结论也就顺理成章地受到质疑了。
我们提供了代码,任何人都可以自己检查,看看结论是否成立。这里没有问题。
 
Rashid Umarov:

如果您观看这段视频,就会发现在交易时段 开始前,堆栈会有若干单更新。因此,脚本会跳过前 N 个刻度点,以确保堆栈中确实有大量订单。之后才开始计算刻度。


视频显示了会话的开始。文章中的视频显示的是 "汁液"。而

input ulong ExtSkipFirstTicks=10;  // 启动时跳过的刻度数

这个数字对于会话的开始是不够的。请解释一下什么是 "队列 "和 "热身"。