MetaTrader 5 build 1525: 以持仓形式展示交易历史并改进测试器

MetaTrader 5新功能

27 一月 2017

程序端

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

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




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




  2. 添加允许在交易品种图表显示交易的新命令。

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




  3. 添加在合约规范中交易品种的国际名称显示,以及在交易品种管理对话框搜索国际名称。




  4. 添加设置程序端窗口分辨率的命令。该功能非常有助于制作视频。菜单提供了不同视频服务所使用的最流行的分辨率选项,例如YouTube



  5. 图表模板和概况已从[Terminal Data Folder\Profiles]迁移到[Terminal Data Folder\MQL5\Profiles]。现在您可以轻松添加模板到MQL5 存储并通过任何一台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可以禁用图表显示。函数ChartGetIntegerChartSetInteger 用于获得和设置属性。

    false的情况下,禁止绘制任何价格图表属性,消除图表边界全部缩进,包括时间价格比,快速导航条,日历活动标签,交易标签,指标和工具提示条,指标子窗口,交易量直方图等。

    禁止使用图形资源为创建自定义程序界面绘制完美解决方案。

    无论CHART_SHOW属性值是多少都可随时绘制图形对象

  3. 新CHART_KEYBOARD_CONTROL属性可以通过键盘("Home","End","PageUp","+","-","Up arrow"等)启用/禁用图表控制。设置CHART_KEYBOARD_CONTROL为false在保留接收OnChartEvent()事件按键的完整能力时禁止图表滚动和缩放。

    函数ChartGetIntegerChartSetInteger允许获得和设置属性。

  4. 添加使用OpenCL的新函数。

    处理内存的新属性
    通过CLGetInfoIntegrer可以获得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文件以外,现在输入参数的设置可以保存为本地策略测试设置,以便于从快捷菜单访问。




  5. 添加蒙古语,匈牙利语,罗马尼亚语和乌尔都语的UI翻译。

MetaEditor

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




  2. 修正确定源文件编码。
  3. 修正在UTF-8编码中搜索文件。
  4. 修正如果文本包含标签,通过鼠标选择文本。
  5. 添加匈牙利语和罗马尼亚语的UI翻译。

更新文档。