MetaTrader 5平台build 1860:改进MQL5柱形图操作和策略测试功能

MetaTrader 5新功能

15 六月 2018

程序端

  1. 重新设计了开户对话框。现在,您可以从列表中选择一个交易商,然后选择想要的账户类型。这一更新使交易商列表更加集中,因为现在它只显示公司名,而不会显示所有可用的服务器。

    公司logo也在列表中显示,使搜索更加轻松,更有效率。如果想要的交易商没有显示在列表中,请在搜索框中输入公司名或服务器地址,然后点击“查找交易商”。




    在对话框中还添加了账户类型的描述,帮助初级投资者选择正确的账户。此外,为了与一般数据保护条例(GDPR)保持一致,更新后的对话框可能包含交易商协议和数据保护政策的链接:




    明显提高了开设真实账户的可能性。之前只存在于移动端的上传ID和地址确认文档的功能,现在也可以在桌面版中使用了。现在,MiFID监管的交易商可以要求所需的任何客户身份识别数据,包括关于就业、收入、交易经验等信息。新功能将帮助交易者更快更容易地开设真实账户,而无需不必要的繁琐程序。




  2. 交易历史现在显示了止损值和止盈值。根据发起这些交易的订单的止损和止盈来设置进入和逆转交易的止损值和止盈值。平仓时对应持仓的止损值和止盈值被用于退出交易。后者可以保存和显示平仓时持仓的止损和止盈信息。这个信息并没有存储在早期版本中,因为平仓之后持仓会消失,而程序端的持仓历史则根据交易产生。




  3. 持仓历史现在显示了止损值和止盈值。打开和关闭相应持仓的交易的止损值和止盈值是为这种持仓指定的。




  4. 现在,图表上显示挂单的当前交易量,而不是最初请求的交易量。




  5. 更新后的程序端优化并快速渲染了扩展模式下的市场深度特性,并启用了点差显示。
  6. 对交易请求执行结果进行了优化。这种优化在某些情况下可以实现更快处理。
  7. 修正追踪止损操作中的错误,该错误偶尔可能导致对同一持仓发送多个止损更改的请求。
  8. 修正最小和最大交易量的设置,以及自定义交易品种设置中的交易量步骤。
  9. 修正了在将模板应用到交易品种图表时,忽略“修正比例”选项可能导致的错误。
  10. 修正了报价历史的偶尔错误积累。

MQL5

  1. 由于在编译过程中实行的额外的源代码优化,MQL5应用程序的速度也得到了大幅度提升。在新版MetaEditor重新编译您的程序,使其运行得更快。
    遗憾的是,由于这个额外的优化功能,新程序将无法与以前的程序端版本兼容。使用MetaEditor 1860版本编译的程序,之后无法在低于1860版本的程序端中启用。使用早期的MetaEditor版本编译的程序则可以在新版程序端中运行。

  2. 新函数:iTime、iOpen、iHigh、iLow、iClose、iVolume、iBars、iBarShift、iLowest、iHighest、iRealVolume、iTickVolume、iSpread等。这些函数类似于MQL4中使用的函数。这些函数提供了更轻松地将交易应用程序代码传输到第五代交易平台。

    在此之前,通过这些函数执行的大部分任务都可以使用Copy*函数实行。但是,用户不得不执行他们自己的函数以便在图表上找到最高/最低值,和根据他们的时间搜索柱形图。现在,这些任何可以使用iHighest、iLowest和iBarShift函数来轻松执行。

    iTime
    返回对应的图表上柱形图的开盘时间(通过'shift'参数表示)。
    datetime  iTime(
       string       symbol,     //交易品种
       ENUM_TIMEFRAMES  timeframe,    // 周期
       int         shift      //转移
       );

    iOpen
    返回对应的图表上柱形图的开盘价(通过'shift'参数表示)。
    double  iOpen(
       string       symbol,     // 交易品种
       ENUM_TIMEFRAMES  timeframe,    // 周期
       int         shift       // 转移
       );

    iHigh
    返回对应的图表上柱形图的最高价(通过'shift'参数表示)。
    double  iHigh(
       string       symbol,     //交易品种
       ENUM_TIMEFRAMES  timeframe,    // 周期
       int         shift      //转移
       );

    iLow
    返回对应的图表上柱形图的最低价(通过'shift'参数表示)。
    double  iLow(
       string       symbol,     //交易品种
       ENUM_TIMEFRAMES  timeframe,    // 周期
       int         shift      //转移
       );

    iClose
    返回对应的图表上柱形图的收盘价(通过'shift'参数表示)。
    double  iClose(
       string       symbol,     //交易品种
       ENUM_TIMEFRAMES  timeframe,    // 周期
       int         shift      //转移
       );

    iVolume
    返回对应的图表上柱形图的报价量(通过'shift'参数表示)。
    long  iVolume(
       string       symbol,     //交易品种
       ENUM_TIMEFRAMES  timeframe,    // 周期
       int         shift      //转移
       );

    iBars
    返回在历史记录中可用的对应交易品种和周期的柱形图数量。
    int  iBars(
       string       symbol,     //交易品种
       ENUM_TIMEFRAMES  timeframe     // 周期
       );

    iBarShift
    根据时间搜索柱形图。这个函数返回与指定时间对应的柱形图指数。
    int  iBarShift(
       string       symbol,    // 交易品种
       ENUM_TIMEFRAMES  timeframe,   // 周期
       datetime      time,     // 时间
       bool        exact=false  // 模式
       );

    iLowest
    返回在对应图表上找到的最小值的指数(相对于当前柱形图的转移)。
    int  iLowest(
       string        symbol,    // 交易品种
       ENUM_TIMEFRAMES  timeframe,   // 周期
       int         type,     // 时间序列标识符
       int         count,     // 元素数量
       int         start     // 指数
      );

    iHighest
    返回在对应图表上找到的最大值的指数(相对于当前柱形图的转移)。
    int  iHighest(
       string       symbol,     // 交易品种
       ENUM_TIMEFRAMES  timeframe,   // 周期
       int         type,     // 时间序列标识符
       int         count,     // 元素数量
       int         start     // 指数
      );

    iRealVolume
    返回对应的图表上柱形图的真实交易量(通过'shift'参数表示)。
    long  iRealVolume(
       string       symbol,     //交易品种
       ENUM_TIMEFRAMES  timeframe,    // 周期
       int         shift      //转移
       );

    iTickVolume
    返回对应的图表上柱形图的报价量(通过'shift'参数表示)。
    long  iTickVolume(
       string       symbol,     //交易品种
       ENUM_TIMEFRAMES  timeframe,    // 周期
       int         shift      //转移
       );

    iSpread
    返回对应的图表上柱形图的点差值(通过'shift'参数表示)。
    long  iSpread(
       string       symbol,     //交易品种
       ENUM_TIMEFRAMES  timeframe,    // 周期
       int         shift      //转移
       );
  3. 添加了新的TesterHideIndicators函数。该函数设置了EA交易中使用的指标的显示/隐藏模式。这个函数仅用于在测试期间管理已用指标的可见性。如果您需要隐藏已创建的指标,请设置为true。否则,使用false。
    void  TesterHideIndicators(
       bool hide     //标识
       );
  4. 添加了在图表上单击交易价位时生成CHARTEVENT_CLICK事件。
  5. 修正和优化CopyTicks函数的操作。
  6. 修正SYMBOL_PROP_LIQUIDITY_RATE属性,SymbolInfoDouble函数返回的值。
  7. 复制带有叠加内存的字符串数组。
  8. 修正在FileReadArray数组中分配字符串数组。
  9. 修正MQL5标准程序库中的错误。

Tester

  1. 已经更新用于处理优化缓存的系统。这个缓存存储了关于以前计算的优化传递的数据。策略测试存储了暂停之后恢复优化和避免重新计算已经计算的测试传递的数据。

    优化缓存存储格式的更改
    在早期版本中,优化缓存存储为XML文件。包含指定测试设置的所有EA交易优化传递都被添加到这个文件中。因此,相同的文件也存储了不同输入参数的优化结果。

    现在,优化缓存为每组优化参数存储为单独的二进制文件。由于使用了新格式及更小的文件大小,优化缓存的策略测试操作变得更快。当您恢复暂停的优化传递时,加速情况会更加明显。

    查看早期优化的结果
    现在,早期优化的结果可以在策略测试中直接查看,所以不再需要使用第三方软件来分析巨大的XML文件。打开“优化结果”选项卡,选择一个EA交易和带有优化缓存的文件:



    列表中包含了磁盘上现有的可供被选择的EA使用的所有优化缓存文件。每个文件都显示了优化日期、测试设置(交易品种、时间周期、间隔)和输入参数。您还可以通过获得结果的交易服务器过滤优化结果。

    动态重新计算优化准则
    优化准则是一个特定的变量参数,其值决定了输入测试组的质量。优化准则的值越高,所考虑的给定参数集就越好。

    在此之前,优化期间只计算在优化开始之前选择的一个准则。现在,您可以在查看结果时动态改变优化准则,并且策略测试将自动重新计算所有值。




    手动使用优化缓存
    在早期版本中,优化缓存存储为需要使用第三方软件打开和分析的XML文件。现在,它存储在封闭的二进制文件中。若要获得XML格式的数据,请使用“优化结果”选项卡的快捷菜单将其导出。

  2. 添加了手动设置入金货币和测试与优化杠杆的可能性。在早期版本中,货币是根据连接的账户进行设置的。因此,必须切换到其他账户才能改变这个货币。杠杆大小只能从预定义列表中选定,而现在则可以指定任何值。

    请注意,将利润和预付款转换为指定入金货币的汇率必须在账户上可用,以确保适当的测试。




  3. 移除在测试代理中禁止使用OpenCL的禁令。早些时候,只有在对本地代理进行测试时才允许使用OpenCL设备。现在,当在本地网络和MQL5云网络工作时,代理可以使用所有可用的OpenCL设备(例如处理器、视频卡)。

MetaEditor

  1. 优化和加速MQL5存储
  2. 修正在MQH文件暂停之后修复调试过程。
  3. 修正editor中突出显示的源代码。
  4. 修正通过搜索结果的导航。
  5. 修正大量文本替换功能。在某些情况下,只有第一次出现的情况被替换,而不是全部情况。

文档已更新。