---
title: "MetaTrader 5 Build 1485: 附加测试模式和标准程序库的图形 - 更新历史"
description: "更改了程序端和MetaEditor日志中的条目顺序。更新之前，首先突出最新的日志条目。现在，日志会最先显示之前的条目。更传统的逆向排列顺序使得阅读日志更加轻松。 此外，现在使用日志快捷菜单还可以隐藏'时间'和'源'所在列。... - 更新历史"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
url: "https://www.metatrader5.com/zh/releasenotes/terminal/1392"
---

# MetaTrader 5 Build 1485: 附加测试模式和标准程序库的图形

## 更改了程序端和MetaEditor日志中的条目顺序。更新之前，首先突出最新的日志条目。现在，日志会最先显示之前的条目。更传统的逆向排列顺序使得阅读日志更加轻松。 此外，现在使用日志快捷菜单还可以隐藏'时间'和'源'所在列。 在锁仓模式，平仓的单号现在会显示在交易历史记录的订单和交易。

24 十一月 2016

### 程序端

1. 更改了程序端和MetaEditor日志中的条目顺序。更新之前，首先突出最新的日志条目。现在，日志会最先显示之前的条目。更传统的逆向排列顺序使得阅读日志更加轻松。

   ![](https://www.metatrader5.com/c/17/0/terminal_1__5.png)

   此外，现在使用日志快捷菜单还可以隐藏'时间'和'源'所在列。
2. 在锁仓模式，平仓的单号现在会显示在交易历史记录的订单和交易。这可以更轻松的查找相关的打开和关闭操作。

   ![](https://www.metatrader5.com/c/17/0/terminal_2__4.png)
3. 修正相同工具下导致从现有持仓到新持仓复制SL/TP的错误。当在锁仓模式使用一键交易功能（例如，从图表或从市场报价窗口）时可能发生该错误。
4. 修正超高清屏幕（4K）下箭头对象的显示。

### MQL5

1. 添加新的打印简单类型和结构到数组日志的[ArrayPrint](https://www.mql5.com/zh/docs/array/arrayprint)功能。

   ```
   void  ArrayPrint(    const void&   array[],             // 输出数组    uint          digits=_Digits,      // 小数位数    const string  separator=NULL,      // 结构字段值之间的分隔符    ulong         start=0,             // 最先显示元素的指数    ulong         count=WHOLE_ARRAY,   // 显示的元素数    ulong         flags=ARRAYPRINT_HEADER|ARRAYPRINT_INDEX|ARRAYPRINT_LIMIT|ARRAYPRINT_ALIGN        );
   ```

   ArrayPrint无法打印全部结构数组字段到日志 – 跳过对象的数组字段和指针字段。如果您想打印全部结构字段，您应该使用所需格式批量打印的定制功能。

   ```
   //--- 显示最近的10个柱形图值    MqlRates rates[];    if(CopyRates(_Symbol,_Period,1,10,rates))      {       ArrayPrint(rates);       Print("Проверка\n[time]\t[open]\t[high]\t[low]\t[close]\t[tick_volume]\t[spread]\t[real_volume]");       for(int i=0;i<10;i++)         {          PrintFormat("[%d]\t%s\t%G\t%G\t%G\t%G\t%G\t%G\t%I64d\t",i,          TimeToString(rates[i].time,TIME_DATE|TIME_MINUTES|TIME_SECONDS),          rates[i].open,rates[i].high,rates[i].low,rates[i].close,          rates[i].tick_volume,rates[i].spread,rates[i].real_volume);         }      }    else       PrintFormat("CopyRates failed, error code=%d",GetLastError()); //--- 日志示例 /*                     [time]  [open]  [high]   [low] [close] [tick_volume] [spread] [real_volume]    [0] 2016.11.09 04:00:00 1.11242 1.12314 1.11187 1.12295         18110       10   17300175000    [1] 2016.11.09 05:00:00 1.12296 1.12825 1.11930 1.12747         17829        9   15632176000    [2] 2016.11.09 06:00:00 1.12747 1.12991 1.12586 1.12744         13458       10    9593492000    [3] 2016.11.09 07:00:00 1.12743 1.12763 1.11988 1.12194         15362        9   12352245000    [4] 2016.11.09 08:00:00 1.12194 1.12262 1.11058 1.11172         16833        9   12961333000    [5] 2016.11.09 09:00:00 1.11173 1.11348 1.10803 1.11052         15933        8   10720384000    [6] 2016.11.09 10:00:00 1.11052 1.11065 1.10289 1.10528         11888        9    8084811000    [7] 2016.11.09 11:00:00 1.10512 1.11041 1.10472 1.10915          7284       10    5087113000    [8] 2016.11.09 12:00:00 1.10915 1.11079 1.10892 1.10904          8710        9    6769629000    [9] 2016.11.09 13:00:00 1.10904 1.10913 1.10223 1.10263          8956        7    7192138000    Check    [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume]    [0] 2016.11.09 04:00:00 1.11242 1.12314 1.11187 1.12295 18110 10 17300175000    [1] 2016.11.09 05:00:00 1.12296 1.12825 1.1193 1.12747 17829 9 15632176000    [2] 2016.11.09 06:00:00 1.12747 1.12991 1.12586 1.12744 13458 10 9593492000    [3] 2016.11.09 07:00:00 1.12743 1.12763 1.11988 1.12194 15362 9 12352245000    [4] 2016.11.09 08:00:00 1.12194 1.12262 1.11058 1.11172 16833 9 12961333000    [5] 2016.11.09 09:00:00 1.11173 1.11348 1.10803 1.11052 15933 8 10720384000    [6] 2016.11.09 10:00:00 1.11052 1.11065 1.10289 1.10528 11888 9 8084811000    [7] 2016.11.09 11:00:00 1.10512 1.11041 1.10472 1.10915 7284 10 5087113000    [8] 2016.11.09 12:00:00 1.10915 1.11079 1.10892 1.10904 8710 9 6769629000    [9] 2016.11.09 13:00:00 1.10904 1.10913 1.10223 1.10263 8956 7 7192138000 */
   ```
2. 修正添加字符串类型S1=S2+S1的错误
3. 更改[ArrayResize](https://www.mql5.com/zh/docs/array/arrayresize)函数的行为。如果 -1作为reserve_size参数传递，如果函数没有增加数组大小，函数仅释放未使用（保留）的内存。 以reserve_size=-1设置新数组大小为0相当于ArrayFree调用。新行为可以优化MQL5程序的内存使用率。

   ```
   void OnStart()   {    int arr[]; //--- 最初使用的内存数量     Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB"); //--- 用于数组大小1的内存数量，保留    ArrayResize(arr,1,1024*1024);    Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB"); //--- 增加数组以后，使用的内存数量因保留而无法更改    ArrayResize(arr,1024*512,1024*1024);    Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB"); //--- 减少数组以后，内存大小也不会改变    ArrayResize(arr,1);    Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB"); //--- 移除储备内存后将释放未使用的内存    ArrayResize(arr,1,-1);    Print("Array size:",ArraySize(arr)," Memory used:",MQLInfoInteger(MQL_MEMORY_USED)," MB");   }
   ```
4. 图表绘制函数已经添加到标准程序库。若要使用新功能，请将 MQL5\Include\Graphics\Graphic.mqh 加入到您的项目。基于三个数据系列使用GraphPlot绘制图表：

   ```
   #include <Graphics/Graphic.mqh> double Func1(double x) { return MathPow(x,2); } double Func2(double x) { return MathPow(x,3); } double Func3(double x) { return MathPow(x,4); } void OnStart()   {    GraphPlot(Func1,Func2,Func3,-2,2,0.05,CURVE_LINES);   }
   ```

   结果：

   ![](https://www.metatrader5.com/c/17/0/terminal_8__5.png)

   基于数据数组使用GraphPlot绘制图表：

   ```
   #include <Math/Stat/Binomial.mqh> #include <Graphics/Graphic.mqh> void OnStart(void)   {    double    vars[101];    double    results[101];    const int N=2000; //---      MathSequence(0,N,20,vars);    MathProbabilityDensityBinomial(vars,N,M_PI/10,true,results);    ArrayPrint(results,4);    GraphPlot(results); //---   }
   ```

   结果：

   ![](https://www.metatrader5.com/c/17/0/terminal_8_2__5.png)
5. 更新标准程序库中处理数学统计的函数。我们已经彻底检查了MQL5版和源R语言所有函数的质量和准确性。若要控制准确度和性能速度，单元测试可以沿着静态库进行分布。它们可以在\MQL5\Scripts\UnitTests\Stat目录取得。

     - TestStat.mq5 — 是测试计算结果的主要测试脚本
     - TestPrecision.mq5 — 计算精度的测试
     - TestBenchmark.mq5 — 测试包括计算测量性能

### Tester

1. 该更新强调了测试期间配置执行延迟的高级设置。现在您可以在多种交易条件下测试您的EA交易，包括无延迟的理想情况和任何自定义设置的延迟。

   ![](https://www.metatrader5.com/c/17/0/terminal_10__5.png)

   在早期版本只提供[随机延迟模式](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#settings)。
2. 修正在'基于高开低收的M1'模式生成柱形图的报价量。
3. 修正锁仓模式交易时订单和持仓建立时间说明提高到毫秒。
4. 修正'真实报价'模式下多货币或多时间周期模式期间可能出现的'旧报价'错误。
5. 改进从位于磁盘的数据库阅读请求报价时的CopyTicks性能速度。

### MetaEditor

1. 导航条和工具箱中的文件快捷菜单现在突出了处理源代码版本库MQL5存储的命令。

   ![](https://www.metatrader5.com/c/17/0/terminal_15__5.png)
2. 修正处理存储中超过1024文件时可能偶尔破坏本地MQL5存储库完整性的错误。
3. 修正MQL5存储文件树的显示。
4. 修正批量文本替换的显示。

更新文档。

**请参阅前面的新闻：**

- [MetaTrader 5 iOS build 1425](https://www.metatrader5.com/zh/releasenotes/iphone/1391)
- [MetaTrader 5平台Build 1455：MQL5 的数学函数库](https://www.metatrader5.com/zh/releasenotes/terminal/1384)
- [MetaTrader 5 网页平台更加快速便捷](https://www.metatrader5.com/zh/releasenotes/terminal/1382)
- [MetaTrader 5 iOS build 1403](https://www.metatrader5.com/zh/releasenotes/iphone/1379)
- [MetaTrader 5 Android build 1372](https://www.metatrader5.com/zh/releasenotes/android/1377)
