MetaTrader 5平台Beta Build 1995:经济日历,MQL5应用程序服务以及R语言API

 

更新的MetaTrader 5平台测试版已于2019年2月15日发布。我们邀请交易者加入测试,评估更新平台的功能,以及帮助开发者修正出现的错误。

若要将MetaTrader 5平台更新到build 1995,请转到帮助\检查桌面版更新\最新测试版:


新版MetaTrader 5平台的最终版将在公开测试版结束后发布。

新版将有以下变化:


MetaTrader 5 客户端 build 1995

  1. 程序端:完全修正了内置经济日历。

    经济日历是我们专有的解决方案。在这里,您将看到600+财经新闻和与美国、欧盟、日本、英国、加拿大、澳大利亚、中国等,全球13个大型经济体相关的指标。相关数据都是从开放资源实时收集。

    新版本具有更新的内容和高级的事件过滤器:按照时间、优先级、货币和国家来分类。

    从MQL5程序访问日历数据也将很快实现。




  2. 程序端:一种新的MQL5应用程序类型 —— 服务。这个新类型可以为程序端创建自定义价格源,即,可以实时提供来自外部系统的价格,如同直接在交易商交易服务器上实现。

    与EA交易、指标和脚本不同,服务并不链接特定的图表。这些应用程序在后台运行,当程序端启动时自动启动(除非被强制停止)。

    服务可以从“导航”窗口的一个新部分进行管理:





    如何创建服务
    若要创建服务模板,请使用对应的MQL5向导条目。服务有一个Onstart切入点,类似于脚本。在这个点,您可以使用网络函数来实现无限的数据接收和处理循环。

    如何启动服务
    要使用不同的参数运行多个EA交易或指标副本,您应该在不同图表上启动它们。在这种情况下,将创建不同的程序实例,然后彼此独立操作。服务没有链接到图表,因此形成了一种创建服务实例的特殊机制。

    从“导航”选择一个服务,并在快捷菜单中点击“添加服务”。这将打开一个标准的MQL5程序对话框,您可以在其中启用/禁用交易和对信号的访问,以及设置参数。




    可以使用对应的实例菜单启动和停止服务实例。要管理所有实例,请使用服务菜单。

  3. 程序端:学习方案已实施。

    现在,初学者可以很容易地学习如何使用这个平台。我们已经添加了100+关于平台主要功能的互动提示。

    • 这些提示可以在工具栏的进度条上直接显示,因而并不会分散用户的注意力。
    • 这些提示仅针对您在平台上从未执行的操作显示。
    • 所有提示都包含交互式链接,使用这些链接您可以导航到相关的界面元素。例如,可以从提示中直接打开带有所需程序的交易对话框或菜单。

    每当您执行对应操作以及继续学习时,进度条的填充区域将会增加。




  4. 程序端:交易账户历史记录可以显示为持仓。平台收集与持仓相关的成交数据(开仓、交易量增加、部分或全部平仓)并将这些信息组合成一条记录。因此,您可以访问持仓的详细信息:开仓时间和平仓时间、交易量、价格和结果。这种便利的显示格式现在也出现在可导出到文件的历史报告中。




  5. 程序端:通过使用R语言的应用程序,增加MetaTrader 5程序端数据的新API启用请求。

    我们准备了一个特定的MetaTraderR软件包。它包含用于R和MetaTrader 5程序端之间互动的DLL、文档和辅助r文件。我们正在CRAN存储库中完成软件包注册,之后就可以下载和安装。




    软件包可以使用特殊命令来安装:
    R CMD INSTALL --build MetaTraderR
    现提供以下与数据请求有关的命令:

    • MT5Initialize初始化并建立与MetaTrader 5程序端的连接。如果需要,可在命令执行期间启动程序端。
    • MT5Shutdown去初始化并与MetaTrader 5断开连接。
    • MT5Version获得MetaTrader 5程序端版本。
    • MT5TerminalInfo获得到交易商服务器的程序端连接的状态和参数(账号和服务器地址)。
    • MT5WaitTerminal为MetaTrader 5程序端连接到交易商服务器设置2分钟等待时间。
    • MT5CopyTicksFrom(symbol, from, count, flags)从指定日期开始复制指定报价数。该日期从1970.01.01开始,以毫秒指定。
    • MT5CopyTicksRange(symbol, from, to, flags)从指定周期内复制报价。这些日期从1970.01.01开始,以毫秒指定。
    • MT5CopyRatesFrom(symbol, timeframe, from, count)从指定日期开始复制指定的一分钟柱数量。该日期从1970.01.01开始,以秒指定。
    • MT5CopyRatesFromPos(symbol, timeframe, start_pos, count)从相对于最后柱形图的指定持仓复制一分钟柱形图。
    • MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to)从指定周期内复制柱形图。这些日期从1970.01.01开始,以秒指定。

    支持的命令列表将进一步扩展。

  6. 程序端:优化用于反向平仓的Close By对话框。现在,这个对话框即使您有大量持仓也不会变慢。
  7. 程序端:修正了导致跳过数据的合成交易品种的计算错误。
  8. 程序端:当自定义交易品种被删除时,现在存储其报价和柱形图历史的文件也被删除。这可以避免在硬盘上积累不用的数据。
  9. MQL5:有关报价和柱形图历史的修正和操作速度的改进。
  10. MQL5:有关自定义交易品种的报价和柱形图更改函数CustomTicks*CustomRates*的修正和操作速度显著提高。
  11. MQL5:新增数据转化漏斗模型。

    CharArrayToStruct将uchar数组复制到POD结构。
    bool  CharArrayToStruct(
       void&         struct_object,    //结构
       const uchar&  char_array[],     // 数组
       uint          start_pos=0       // 数组中的开始位置
       );

    StructToCharArray将POD结构复制到uchar数组。
    bool  StructToCharArray(
       const void&  struct_object,     //结构
       uchar&       char_array[],      //数组
       uint         start_pos=0        // 数组中的开始位置
       );

  12. 添加MathSwap函数,用于更改ushort、uint和ulong值中的字节顺序。
    ushort MathSwap(ushort value);
    uint   MathSwap(uint   value);
    ulong  MathSwap(ulong  value);

  13. MQL5:添加网络函数,用于通过系统套接创建TCP与远程主机的连接:

    • SocketCreate创建具有指定标识的套接并返回其句柄
    • SocketClose关闭套接
    • SocketConnect连接到服务器,使用超时控制
    • SocketIsConnected检查套接当前是否已连接
    • SocketIsReadable获得可以从套接读取的字节数
    • SocketIsWritable检查在当前时间是否可以将数据写入该套接
    • SocketTimeouts为系统套接对象设置数据接收和发送超时
    • SocketRead从套接读取数据
    • SocketSend将数据写入套接
    • SocketTlsHandshake使用TLS Handshake协议启动与指定主机的安全TLS (SSL)连接
    • SocketTlsCertificate接收有关用于安全网络连接的证书的信息
    • SocketTlsRead读取来自安全TLS连接的数据
    • SocketTlsReadAvailable读取来自安全TLS连接的所有可用数据
    • SocketTlsSend使用TLS连接发送数据

    使用网络函数建立连接的主机地址必须明确添加到程序端设置中的可允许地址列表中。

    需要为网络函数的操作添加新错误代码

    • ERR_NETSOCKET_INVALIDHANDLE (5270):传递给函数的套接句柄无效
    • ERR_NETSOCKET_TOO_MANY_OPENED (5271):打开套接过多(最多128)
    • ERR_NETSOCKET_CANNOT_CONNECT (5272):连接远程主机时出错
    • ERR_NETSOCKET_IO_ERROR (5273):从套接发送/接收数据时出错
    • ERR_NETSOCKET_HANDSHAKE_FAILED (5274):安全连接建立错误 (TLS Handshake)
    • ERR_NETSOCKET_NO_CERTIFICATE (5272):没有用于安全连接的证书数据

  14. MQL5:添加用于字符串操作的新函数

    StringReserve为字符串保留指定大小的内存缓存区。
    bool  StringReserve(
       string&        string_var,          // 字符串
       uint           new_capacity         // 字符串的缓冲区大小
       );
    StringSetLength设置字符中指定的字符串长度。
    bool  StringSetLength(
       string&        string_var,          //字符串
       uint           new_length           //新字符串长度
       );

  15. MQL5:为数组操作添加新函数

    ArrayRemove从数组中移除从指定索引开始的指定元素数。
    bool  ArrayRemove(
       void&         array[],              // 任何类型的数组
       uint          start,                // 要开始移除的索引
       uint          count=WHOLE_ARRAY     // 元素数
       );
    ArrayInsert 从指定索引开始,向接收方数组插入源数组中指定元素数。
    bool  ArrayInsert(
       void&         dst_array[],          // 接收方数组
       const void&   src_array[],          // 源数组
       uint          dst_start,            // 在要插入的接收方数组位置的索引
       uint          src_start=0,          // 要开始复制的源数组索引
       uint          count=WHOLE_ARRAY     // 插入元素数
       );
    ArrayReverse从指定索引开始,在数组中反转指定元素数。
    bool  ArrayReverse(
       void&         array[],              // 任何类型的数组
       uint          start=0,              // 开始反转的索引
       uint          count=WHOLE_ARRAY     // 元素数
       );

  16. MQL5:新"uint count"参数已被添加到CustomRatesUpdateCustomRatesReplaceCustomTicksAddCustomTicksReplace函数中。它可以指定传递数组中要使用的元素数量。WHOLE_ARRAY值默认用于参数。这意味着将使用整个数组。
  17. MQL5:添加CustomBookAdd函数,以传递自定义交易品种的市场深度的状态。该函数可以推广市场深度,类似于价格从交易商服务器到达。
    int  CustomBookAdd(
       const string        symbol,            // 交易品种名称
       const MqlBookInfo&  books[]            // 带有DOM元素描述的数组
       uint                count=WHOLE_ARRAY  // 要使用的元素数
       );
  18. MQL5:添加CustomSymbolCreate函数重载。它可以基于现有交易品种创建一个自定义交易品种。创建之后,可以使用对应的函数编辑任何交易品种的属性。
    bool  CustomSymbolCreate(
       const string        symbol_name,       //自定义交易品种名称
       const string        symbol_path="",    // 将在其中创建交易品种的组名
       const string        symbol_origin=NULL // 将基于其创建自定义交易品种的交易品种名称
       );
    已创建自定义交易品种属性的复制源的交易品种名称在"symbol_origin"参数中指定。

  19. 将带有日期/时间的字符串转换为datetime值的StringToTime函数已经更新。现在,它支持以下日期格式:

    • yyyy.mm.dd [hh:mi]
    • yyyy.mm.dd [hh:mi:ss]
    • yyyymmdd [hh:mi:ss]
    • yyyymmdd [hhmiss]
    • yyyy/mm/dd [hh:mi:ss]
    • yyyy-mm-dd [hh:mi:ss]

  20. MQL5:ENUM_TERMINAL_INFO_INTEGER枚举中的TERMINAL_VPS新属性;它显示程序端正在MetaTrader虚拟主机服务器上运行 (MetaTrader VPS)。如果应用程序在主机服务器上运行,您可以禁用其所有可视化功能,因为虚拟服务器没有图形用户界面。
  21. MQL5:ENUM_SYMBOL_INFO_INTEGER枚举中的SYMBOL_EXIST新属性,意味着同名交易品种已存在。
  22. MQL5:修正使用模板函数预声明时的输入。
  23. MQL5:添加更改交易账户时重新初始化指标的功能。
  24. MQL5:优化StringSplit函数。
  25. MQL5:修正标准程序库操作中的错误。
  26. Tester:新增TesterStop函数 — 测试代理上EA交易的例行早期关闭。现在,达到指定数量的亏损交易、预设的下跌水平或任何其他标准后,您可以强制停止测试。

    使用此函数完成的测试被视为成功测试。函数调用之后,测试期间获得的交易历史和所有交易统计数据将被传递到程序端。

  27. Tester:禁止在实时报价模式下通过MQL5云网络测试和优化EA交易的功能。这个模式只能在本地代理和本地网络上使用。
  28. Tester:改进了可视化测试过程中的指标使用。现在,价格图表和指标线同步绘制,甚至包括最大的可视化速度。
  29. Tester:优化并显著增加了测试和优化的速度。
  30. Tester:修正了关于历史数据的指标调试。现在,可以正确地调试OnInit和OnDeinit指标函数。
  31. Tester:在测试多货币EA交易时,更快访问历史数据。
  32. Tester:修正在调试历史数据期间可视化测试器的偶尔冻结问题。
  33. Tester:当通过代理处理任务包时,更快启动优化传递。
  34. Tester:更改了向测试代理分发任务包的策略。任务包大小增加,从而大大减少网络操作上的资源损耗。
  35. Tester:更改了选项行为,允许使用本地、网络和云代理。现在,当您关闭这些选项时,代理将完成接收任务的处理,且不再向其提供新任务。在早期版本中,该行为类似于“禁用”命令,该命令可以立即停止代理操作。




  36. MetaEditor:在调试器中添加了对非ANSI字符的支持。现在,即使使用斯拉夫字母指定变量名称,表达式仍可以正确显示。
  37. 添加克罗地亚语的用户界面翻译。
  38. 文档已更新。

更新将通过实时更新系统提供。

 
这版更新干货比较多。