---
title: "MetaTrader 5 build 1525: 以持仓形式展示交易历史并改进测试器 - 更新历史"
description: "现在可以按照持仓的形式展示交易历史。程序端收集持仓相关交易的数据（开仓，额外交易量，部分和全部平仓），然后将数据组合为一个包含以下细节的记录： 分别由第一笔和最后一笔交易决定的开仓和平仓的时间 持仓交易量。 - 更新历史"
image: "https://www.metatrader5.com/c/17/0/terminal_2__16.png"
url: "https://www.metatrader5.com/zh/releasenotes/terminal/1403"
---

# MetaTrader 5 build 1525: 以持仓形式展示交易历史并改进测试器

## 现在可以按照持仓的形式展示交易历史。程序端收集持仓相关交易的数据（开仓，额外交易量，部分和全部平仓），然后将数据组合为一个包含以下细节的记录： 分别由第一笔和最后一笔交易决定的开仓和平仓的时间 持仓交易量。

27 一月 2017

### 程序端

1. 现在可以按照持仓的形式展示交易历史。程序端收集持仓相关交易的数据（开仓，额外交易量，部分和全部平仓），然后将数据组合为一个包含以下细节的记录：

     - 分别由第一笔和最后一笔交易决定的开仓和平仓的时间
     - 持仓交易量。如果部分平仓，该记录会包含平仓交易量和源交易量
     - 加权平均持仓价及其平仓价
     - 持仓相关交易的总财务结果

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

    有关锁仓账户，其新的历史记录显示形式类似于MetaTrader 4中使用的账户历史形式。

   ![](https://www.metatrader5.com/c/17/0/terminal_1_2__7.png)
2. 添加允许在交易品种图表显示交易的新命令。

     - 如果您需要显示选定持仓/交易品种的交易，请点击"添加 [交易品种名称] 交易"。相应的交易将会显示在选定交易品种当前全部打开的图表上。如果该交易品种没有打开的图表，那么将会打开一个新图表。
     - 点击"添加全部交易"，显示来自账户历史的全部交易品种的交易。相关交易品种的交易将被添加到全部打开的图表。

   ![](https://www.metatrader5.com/c/17/0/terminal_2__16.png)
3. 添加在合约规范中交易品种的国际名称显示，以及在交易品种管理对话框搜索国际名称。

   ![](https://www.metatrader5.com/c/17/0/terminal_3__6.png)
4. 添加设置程序端窗口分辨率的命令。该功能非常有助于制作视频。菜单提供了不同视频服务所使用的最流行的分辨率选项，例如[YouTube](https://www.youtube.com/channel/UCIr5Y_-R5naPpYQA6hFUSEA)。

   ![](https://www.metatrader5.com/c/17/0/terminal_4__6.png)
5. 图表模板和概况已从[Terminal Data Folder\Profiles]迁移到[Terminal Data Folder\MQL5\Profiles]。现在您可以轻松添加模板到[MQL5 存储](https://www.metatrader5.com/en/metaeditor/help/mql5storage)并通过任何一台PC机进行访问。

### MQL5

1. 添加支持资源变量。使用这种变量可以显著推进一些程序的开发。例如，您可以在独立的CL文件中编写一个OpenCL程序的代码，然后将其作为字符串加入到您的MQL5程序资源。更新之前，这种代码需要描述为一个大型字符串变量。**资源变量声明**

   ```
   #resource path_to_resource_file as type_of_resource_variable name_of_resource_variable
   ```

   **特性**

     - 基于BOM（标题）自动确定字符串文件的编码。如果BOM不存在，那么编码将由文件内容定义。支持ANSI，UTF-8 和 UTF-16。全部字符串都转换为Unicode。
     - 这种资源的数据只能通过变量来处理。不可使用"::<resource name>"自动解决。
     - 特殊的位图资源变量类型表明资源为图像的编译器。在这种情况下，资源变量为单位类型。
     - 当使用24位图像时，阿尔法通道组件对全部图像像素设置为255。
     - 当使用没有阿尔法通道的32位图像时，阿尔法通道组件对全部图像像素也设置为255。
     - 当加载包含阿尔法通道的32位图像时，不以任何方式处理像素。
     - 位图类型数组资源变量可能有两种维度。在这种情况下，数组大小定义为[image_height ][ image_width ]。
     - 如果指定了一维数组，元素数量等同于image_height*image_width。
     - 如果资源文件大小不是数组元素大小的乘积，将会剪切剩余数据。例如，如果文件大小为14个字节，对于整型数组，元素数量将等于3而其他两个字节（14 - sizeof(int)*3）将会舍弃。

   **使用示例**

   ```
   #resource "data.bin" as int ExtData[]             // 声明包含data.bin文件数据的数值数组 #resource "data.bin" as MqlRates ExtData[]        // 声明包括data.bin文件数据的简单结构数组 #resource "data.txt" as string ExtCode            // 声明包含data.txt文件数据的字符串 #resource "data.txt" as string ExtCode[]          // 声明包含data.txt文件数据的字符串 #resource "image.bmp" as bitmap ExtBitmap[]       // 声明包含BMP文件位图文件的一维数组，数组大小 = width * height #resource "image.bmp" as bitmap ExtBitmap2[][]    // 声明包含BMP文件位图文件的二维数组，数组大小[hight][width]
   ```
2. 新属性CHART_SHOW可以禁用图表显示。函数[ChartGetInteger](https://www.mql5.com/en/docs/chart_operations/chartgetinteger) 和[ChartSetInteger](https://www.mql5.com/en/docs/chart_operations/chartsetinteger) 用于获得和设置属性。false的情况下，禁止绘制任何价格图表属性，消除图表边界全部缩进，包括时间价格比，快速导航条，日历活动标签，交易标签，指标和工具提示条，指标子窗口，交易量直方图等。禁止使用图形[资源](https://www.mql5.com/ru/docs/runtime/resources)为创建自定义程序界面绘制完美解决方案。无论CHART_SHOW属性值是多少都可随时绘制[图形对象](https://www.mql5.com/ru/docs/objects)。
3. 新CHART_KEYBOARD_CONTROL属性可以通过键盘("Home"，"End"，"PageUp"，"+"，"-"，"Up arrow"等)启用/禁用图表控制。设置CHART_KEYBOARD_CONTROL为false在保留接收[OnChartEvent()](https://www.mql5.com/en/docs/basis/function/events#onchartevent)事件按键的完整能力时禁止图表滚动和缩放。函数[ChartGetInteger](https://www.mql5.com/en/docs/chart_operations/chartgetinteger)和[ChartSetInteger](https://www.mql5.com/en/docs/chart_operations/chartsetinteger)允许获得和设置属性。
4. 添加使用OpenCL的新函数。**处理内存的新属性**通过[CLGetInfoIntegrer](https://www.mql5.com/en/docs/opencl/clgetinfointeger)可以获得4个新属性：

     - CL_DEVICE_MAX_WORK_GROUP_SIZE — 可用于OpenCL设备的本地工作组总数。
     - CL_KERNEL_WORK_GROUP_SIZE — 可用于OpenCL程序的本地工作组总数。
     - CL_KERNEL_LOCAL_MEM_SIZE — OpenCL程序使用的，用于解决一组中全部平行任务的本地内存字节大小。使用CL_DEVICE_LOCAL_MEM_SIZE 接收可用最大值。
     - CL_KERNEL_PRIVATE_MEM_SIZE — OpenCL程序内核中，每个任务可用的最低私有内存大小（以字节为单位）。

   **bool CLExecutionStatus(int kernel)**返回OpenCL程序执行状态。OpenCL程序内核处理作为参数传递。**bool CLSetKernelArgMemLocal(int kernel_handle,int arg_index,ulong local_mem_size)**设置本地缓冲作为内核函数参数。OpenCL程序内核处理，OpenCL函数参数数量和缓冲大小都作为参数传递。
5. 添加TRADE_RETCODE_LIMIT_POSITIONS新资源代码。同时显示在账户上的持仓数可以通过服务器设置进行限制。到达限制后，若再尝试下单，服务器会返回TRADE_RETCODE_LIMIT_POSITIONS错误。限制的操作根据持仓账户类型而有所不同：

     - 单边账户类型 — 考虑持仓数量。到达限制后，平台会禁止生成可能增加持仓数量的新订单。实际上，平台仅允许为已有持仓的交易品种下单。不会考虑当前挂单，因为挂单的执行可能会改变当前持仓但不会增加持仓数量。
     - 锁仓账户类型 — 会同时考虑挂单和持仓，因为激活挂单也会导致生成新的持仓。到达限制时，平台禁止生成持仓的新市价单和挂单。
6. 修正可能偶尔引起报价历史跳价的错误。
7. 修正间接的模板打字错误。
8. 更新数学统计函数的程序库。

### 市场

1. 修正下载模拟版时打开产品页面。

### Tester

1. 完成优化后，结果会按照"结果"列自动排序。
2. 优化结果标签的快捷菜单中的新命令"切换到优化结果"可以在优化完成时自动打开结果。
3. 开始单次测试后，策略测试现在仍停留在优化模式。在早期版本中，如果从优化结果标签启动一次测试，策略测试会切换到单次测试模式。优化模式需要在设置中启用以便执行进一步优化。
4. 除了traditional .set文件以外，现在输入参数的设置可以保存为本地策略测试设置，以便于从快捷菜单访问。

   ![](https://www.metatrader5.com/c/17/0/terminal_18__6.png)
5. 添加蒙古语，匈牙利语，罗马尼亚语和乌尔都语的UI翻译。

### MetaEditor

1. 添加在调试窗口更改已读表达式顺序的功能。可以使用鼠标拖拽表达式到所需位置。

   ![](https://www.metatrader5.com/c/17/0/terminal_20__6.png)
2. 修正确定源文件编码。
3. 修正在UTF-8编码中搜索文件。
4. 修正如果文本包含标签，通过鼠标选择文本。
5. 添加匈牙利语和罗马尼亚语的UI翻译。

更新文档。

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

- [MetaTrader 5 Android build 1506：交易筛选和排序](https://www.metatrader5.com/zh/releasenotes/android/1402)
- [MetaTrader 5 Build 1495：改善MQL5处理自定义图形的功能](https://www.metatrader5.com/zh/releasenotes/terminal/1398)
- [MetaTrader 5 网页平台：双重认证及更改密码](https://www.metatrader5.com/zh/releasenotes/terminal/1396)
- [MetaTrader 5 Build 1485: 附加测试模式和标准程序库的图形](https://www.metatrader5.com/zh/releasenotes/terminal/1392)
- [MetaTrader 5 iOS build 1425](https://www.metatrader5.com/zh/releasenotes/iphone/1391)
