MetaTrader 5平台Beta Build 1910:在MQL5中自由拖拽图表和.Net程序库

 

更新的MetaTrader 5平台测试版将于2018年10月14日进行发布。我们将会更新我们位于demo.metaquotes.net:443的MetaQuotes-Demo 公共服务器。我们邀请所有交易者加入测试平台新版本,以便评估平台所有更新功能从而帮助开发者修正出现的错误。

若要将MetaTrader 5平台升级到build 1910,请连接access.metatrader5.com server:443。

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

该更新将有以下变化:

  1. 程序端:现在,您可以在交易程序端窗口之外使用交易品种图表。

    这个功能的便利性在使用多个显示器进行操作时非常明显。因此,您可以在一个显示器上设置平台的主窗口来管理您的账户状态,并将您的图表移动到另一个显示器上以观察市场动向。若要将图表从程序端分离,请在快捷菜单中禁用“固定”选项。然后,将图表移动到所需的显示器。



    通过分离图表的独立工具栏可以应用分析对象和指标,而无需在显示器间进行切换。使用工具栏快捷菜单来管理可用命令集或将命令隐藏。

  2. 程序端:完全更新的嵌入式聊天功能。现在,该功能支持群组聊天和频道交流。可以在一个环境内与一个群组的人们进行私人讨论,而不需要在不同的对话之间切换,您还可以根据您的兴趣和语言创建频道。在MQL5.community与同业和好友进行交流,而不需要访问网站。

    群组聊天和频道交流既可以是公开的,也可以设为私人状态。由创建者来决定是否可以自由加入群聊或是只能通过邀请加入。您还可以为频道和聊天分派版主/群主,为了进一步进行交流管理。



  3. 程序端:新增对数字加密货币交易提高交易量精确性的支持。现在,交易操作可允许的最小交易量为0.00000001手数。现在,市场深度,成交时间和交易量,以及其他界面元素都能够精确显示到小数点后8位。

    最小交易量及其变动幅度取决于交易商的交易品种设置。




  4. 程序端:在工具箱窗口,添加了MQL5.community网站发布的文章的选项卡。现在,已有600多篇关于在MQL5中开发交易策略的详细材料可供使用,而不需要离开程序端。每周都会出版新文章。



  5. 程序端:新增在Wine系统下操作时,支持使用证书进行扩展认证
  6. 程序端:修正了市场深度被限定在一个水平时的显示。
  7. 程序端:将“另存为图片”的命令添加到标准工具栏中。现在,保存图表图片并将其分享在社区中会更加容易。




  8. 程序端:修正导入柱形图和报价时,应用时间切换。之前,在某些情况下无法使用时间切换。



  9. MQL5:添加了通过"smart"函数导入的内部支持的.NET程序库。现在,.NET程序库可以在不用编写特殊包装样式的情况下使用 — MetaEditor可以独立完成。

    若要使用.NET程序库函数,只需导入DLL本身,而不必定义特定的函数。MetaEditor自动导入所有可以使用的函数:
    • 简单结构(POD,简单的旧数据)
    • 具有简单数据类型的结构
    • 有参数的公共静态函数,在这里只有简单类型和POD结构或其数组可被使用

    若要从程序库调用函数,简单导入即可:
    #import "TestLib.dll"
    
    //+------------------------------------------------------------------+
    //| 脚本程序起始函数                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       int x=6;
       TestClass::Inc(x);
       Print(x);
      }
    TestClass的Inc函数C#代码如下:
    public class TestClass
    {
       public static void Inc(ref int x)
       {
        x++;
       }
    }
    执行结果是脚本返回值为7。

  10. MQL5:在解析代码时,新增对inline, __inline和 __forceinline描述符的支持。代码中的描述符不会导致错误,也不会影响编译。目前,该特性简化了将С++ 代码转为MQL5。
    MSDN中了解关于描述符的更多信息。

  11. MQL5:显著优化了MQL5程序的执行。在某些情况下,性能改进可以达到10%。在新版MetaEditor重新编译您的程序,使其运行得更快。
    遗憾的是,由于这个额外的优化功能,新程序将无法与以前的程序端版本兼容。使用MetaEditor 1910版本编译的程序,之后无法在低于1880版本的程序端中启用。使用早期的MetaEditor版本编译的程序则可以在新版程序端中运行。

  12. MQL5:显著优化了MQL5函数集。
  13. MQL5:新增向程序端主窗口附加图表/从程序端主窗口分离图表并管理图表位置的新属性。

    添加以下属性到ENUM_CHART_PROPERTY_INTEGER枚举:

    • CHART_IS_DOCKED — 图表窗口固定。如果设为'false',图表可被拖拽到程序端区域之外。
    • CHART_FLOAT_LEFT — 相对于虚拟屏幕的未固定的图表窗口的左坐标。
    • CHART_FLOAT_TOP — 相对于虚拟屏幕的未固定的图表窗口的顶部坐标。
    • CHART_FLOAT_RIGHT — 相对于虚拟屏幕的未固定的图表窗口的右坐标。
    • CHART_FLOAT_BOTTOM — 相对于虚拟屏幕的未固定的图表窗口的底部坐标。

    添加以下函数到ENUM_TERMINAL_INFO_INTEGER枚举:

    • TERMINAL_SCREEN_LEFT — 虚拟屏幕的左坐标。虚拟屏幕是覆盖所有监视器的长方形。如果系统从右至左有两个监视器,那么虚拟屏幕的左坐标可以在两个监视器的边界上。
    • TERMINAL_SCREEN_TOP — 虚拟屏幕的顶部坐标。
    • TERMINAL_SCREEN_WIDTH — 程序端宽度。
    • TERMINAL_SCREEN_HEIGHT — 程序端高度。
    • TERMINAL_LEFT — 相对于虚拟屏幕的程序端的左坐标。
    • TERMINAL_TOP — 相对于虚拟屏幕的程序端的顶部坐标。
    • TERMINAL_RIGHT — 相对于虚拟屏幕的程序端的右坐标。
    • TERMINAL_BOTTOM — 相对于虚拟屏幕的程序端的底部坐标。

  14. MQL5:将volume_real字段添加到MqlTick和MqlBookInfo结构。其设计目的在于提高交易量准确性。volume_real值的优先级要高于'volume'。如果该值已指定,那么服务器将会优先使用。

    struct MqlTick
      {
       datetime         time;          // 最后价格更新时间
       double           bid;           // 当前卖价
       double           ask;           // 当前买价
       double           last;          // 最后一笔交易的当前价格
       ulong            volume;        // 当前最后价格的交易量
       long             time_msc;      // 以毫秒计算的最后价格更新时间
       uint             flags;         // 报价标识
       double           volume_real;   // 准确性更高的当前最后价格的交易量
      };

    struct MqlBookInfo
      {
       ENUM_BOOK_TYPE   type;            //ENUM_BOOK_TYPE枚举的订单类型
       double           price;           // 价格
       long             volume;          // 交易量
       double           volume_real;     //准确度更高的交易量
      };

  15. MQL5:添加新属性到ENUM_SYMBOL_INFO_DOUBLE枚举:

    • SYMBOL_VOLUME_REAL — 最后已执行成交的交易量;
    • SYMBOL_VOLUMEHIGH_REAL — 当日已执行成交的最高交易量;
    • SYMBOL_VOLUMELOW_REAL — 当日已执行成交的最低交易量;

    使用SymbolInfoDouble函数来获得这些属性。

  16. MQL5:添加MQL_FORWARD属性到ENUM_MQL_INFO_INTEGER枚举 — 前测模式标识。
  17. MQL5:降低转换枚举的需求。在隐式转换的情况下,编译器会自动替换正确的枚举值并显示警告。

    以下代码:
    enum Main
      {
       PRICE_CLOSE_,
       PRICE_OPEN_
      };
    
    input Main Inp=PRICE_CLOSE;
    //+------------------------------------------------------------------+
    //| 起始函数                                                   |
    //+------------------------------------------------------------------+
    void OnStart()
      {
      }
    编译器显示警告:
    从'enum ENUM_APPLIED_PRICE'隐式转换到'enum Main'
    'Main::PRICE_OPEN_'将替换'ENUM_APPLIED_PRICE::PRICE_CLOSE'并被使用
    早期,在该情况下生成以下错误:
    'PRICE_CLOSE' - 不能转换枚举
    如果在函数参数中错误地使用枚举,编译器将仍显示该错误。

  18. MQL5:修正编译模板函数。现在,当使用重载模板函数时,只重载必要的函数,而不是所有现有函数都被重载。
    class X {  };
    
    void f(int)  {  }
      
    template<typename T>
    void a(T*) { new T(2); }  // 以前,编译器在这里生成错误
      
    template<typename T>
    void a()  { f(0); }
      
      
    void OnInit()  { a<X>(); }  
    
  19. MQL5:通过CopyTicks* 函数优化了一些访问报价历史的情况。
  20. Tester:修正当测试/优化和生成相关报告时计算入金货币的准确性。
  21. Tester:优化并加速策略测试操作。
  22. MetaEditor:修正搜索整个单词。现在,搜索时,下划线被记为常规字符,而不是单词分隔符。
  23. 更新文档。
原因: