我经常在想, 并在论坛上提问: "选择什么样的电脑可为 MetaTrader 4 和 MetaTrader 5 终端提供最高性能?" 因重点关注 MetaTrader 性能而升级或购置新电脑时, 很多人对这个问题十分感兴趣, 买哪一种更好?Intel 为基础的或是 AMD?应该配置多少以及何种内存?哪块主板?选择哪类数据存储设备: SSD 或 HDD ?
开发者盛赞 МetaТrader 5 终端的性能和超级速度, 但一般的交易者和业余程序员如何自行验证开发者的言论?编写一些代码?但哪些呢?检查什么呢?如何全面比较 МetaТrader 4 和 МetaТrader 5 的性能?
无论如何, 我思考了一阵儿, 决定编写一个测试脚本来检查电脑、MetaTrader 4 和 MetaTrader 5 终端的性能。
部分代码取自 测试 x64 平台的新 MQL5 编译器 - 计算速度提升 2 至 10 倍! 话题。
我所做的一切就是把所有的测试代码到一个脚本里, 并通过一个类添加所有这些代码, 即, 脚本以两种编程方式测试 PC 和终端: 过程和面向对象。我还添加了一些有关的图形对象渲染的测试代码, 它们的置换和删除, 加入 CCanvas 类的处理测试, 加入 CopyRates 函数拷贝 1 000 000 分钟柱线的操作时间测量。总共 45 项测试。
此外, VPS 和 VDS 主机的诚信可以通过脚本进行检查 (通过比较测试期间的结果)。
欢迎您根据我的例子参与您的电脑测试。我在自己的电脑上清空自启动程序, 运行这个测试获得最高性能。
脚本的操作原理: 一旦启动, 脚本按部就班运行测试, 创建并删除测试所需的一切, 最后自行打开一个结果清单。
我的工作 PC:
- 操作系统名称: Windows 10 专业版
- 类型: 基于 64 位的电脑
- CPU: AMD 羿龙(tm) II X6 1100T 处理器, 3311 MHz, 核心: 6, 逻辑处理器: 6
- 内存: 8,00 GB
- 硬盘: SSD 型 OCZ-AGILITY3 90 GB
这是结果:
| MT4 | MT5 | МТ5 的速度倍数 | ||
|---|---|---|---|---|
| ===TERMINAL INFO=== | 0 | 0 | ||
| TERMINAL_BUILD | 902 | 1210 | Build | |
| TERMINAL_CPU_CORES | 6 | 6 | Cores | |
| TERMINAL_DISK_SPACE | 14228 | 14134 | Mb | |
| TERMINAL_MEMORY_PHYSICAL | 8107 | 8107 | Mb | |
| TERMINAL_MEMORY_TOTAL | 4095 | 16214 | Mb | |
| TERMINAL_MEMORY_AVAILABLE | 3737 | 0 | Mb | |
| TERMINAL_MEMORY_USED | 358 | 33245 | Mb | |
| ===TEST=== | 0 | 0 | ||
| Test Ackermann | 2406 | 0 | MilSek | Absolute * |
| Test Ackermann OOP | 2969 | 0 | MilSek | Absolute |
| Test Arrays | 21422 | 297 | MilSek | 72,13 |
| Test Arrays OOP | 7312 | 437 | MilSek | 16,73 |
| Test BubbleSort | 13422 | 672 | MilSek | 19,97 |
| Test BubbleSort OOP | 4297 | 656 | MilSek | 6,55 |
| Test Call | 969 | 0 | MilSek | Absolute |
| Test Call OOP | 906 | 0 | MilSek | Absolute |
| Test Fibo | 2594 | 0 | MilSek | Absolute |
| Test Fibo OOP | 2656 | 0 | MilSek | Absolute |
| Test Float | 2359 | 0 | MilSek | Absolute |
| Test Float OOP | 2516 | 0 | MilSek | Absolute |
| Test Matrix | 20969 | 672 | MilSek | 31,20 |
| Test Matrix OOP | 7984 | 656 | MilSek | 12,17 |
| Test Moments | 7578 | 5578 | MilSek | 1,36 |
| Test Moments OOP | 7266 | 5594 | MilSek | 1,30 |
| Test NestedLoop | 5672 | 0 | MilSek | Absolute |
| Test NestedLoop OOP | 6015 | 0 | MilSek | Absolute |
| Test PiCalculate | 12000 | 3515 | MilSek | 3,41 |
| Test PiCalculate OOP | 11953 | 3500 | MilSek | 3,42 |
| Test QuickSort | 11734 | 2110 | MilSek | 5,56 |
| Test QuickSort OOP | 12782 | 1234 | MilSek | 10,36 |
| Test Random | 3297 | 516 | MilSek | 6,39 |
| Test Random OOP | 3203 | 531 | MilSek | 6,03 |
| Test Sieve | 18828 | 1078 | MilSek | 17,47 |
| Test Sieve OOP | 18890 | 1094 | MilSek | 17,27 |
| Test StrCat | 47 | 1578 | MilSek | 0,03 |
| Test StrCat OOP | 47 | 1766 | MilSek | 0,03 |
| Test String | 250 | 437 | MilSek | 0,57 |
| Test String OOP | 235 | 453 | MilSek | 0,52 |
| Test StrPrep | 5406 | 1922 | MilSek | 2,81 |
| Test StrPrep OOP | 5500 | 1938 | MilSek | 2,84 |
| Test StrRev | 6719 | 4265 | MilSek | 1,58 |
| Test StrRev OOP | 7125 | 4297 | MilSek | 1,66 |
| Test StrSum | 5843 | 3922 | MilSek | 1,49 |
| Test StrSum OOP | 5844 | 3984 | MilSek | 1,47 |
| Test ObjectCreate | 63 | 157 | MilSek | 0,40 |
| Test ObjectMove | 46 | 343 | MilSek | 0,13 |
| Test ObjectDelete | 579 | 0 | MilSek | Absolute |
| Test ObjectCreate OOP | 46 | 125 | MilSek | 0,37 |
| Test ObjectMove OOP | 63 | 328 | MilSek | 0,19 |
| Test ObjectDelete OOP | 547 | 0 | MilSek | Absolute |
| Test CopyRates | 94 | 0 | MilSek | Absolute |
| Test Canvas | 30078 | 28047 | MilSek | 1,07 |
| Test Print(Hello, world!!!) | 1047 | 7453 | MilSek | 0,14 |
| Test Final | 281594 | 89609 | MilSek | 3,14 |
* Absolute — MetaTrader 5 的绝对优势。
// 重要!!!若您不清楚后果, 不建议更改脚本。 // 该脚本旨在评估电脑性能 (平板, 桌面/工作站, VPS/VDS 服务器, 服务器)。 // 该脚本以两种编程类型测试评估电脑的 45 项性能: 面向对象和过程。 // 部分代码取自开源项目 https://www.mql5.com/en/forum/68087 拥有者: Renat Fatkhullin // 程序合并 Vladimir Pastushak https://www.mql5.com/zh/users/voldemar // 主性能指标 - 时间。计算所需的时间越少, 电脑和 МetaТrader 终端的生产力越高。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/14179
TriXCandleSign
一款信号量指标, 使用两条 TriX 指标, 基于价格序列的开盘价和收盘价。
EMVCandleSign
一款信号量指标, 使用两条 EMV 指标, 基于价格序列的开盘价和收盘价。
OsMACandleSign
一款信号量指标, 使用两条 OsMA 指标, 基于价格序列的开盘价和收盘价。
CCICandleSign
一款信号量指标, 使用两条 CCI 指标, 基于价格序列的开盘价和收盘价。