新版 MetaTrader 5 平台 Build 5260:Ultency 增强功能和交易请求执行的优化

修复了交易品种规范中保证金设置的显示。此前,当使用浮动杠杆(例如,根据账户持仓量计算)时,合约规范中的预付款参数可能会显示不正确。 修复了允许负数价格的交易品种的订单簿排序。现在,正价、负价和零价的订单均能按正确顺序显示。

5 九月 2025

程序端

  1. 修复了交易品种规范中保证金设置的显示。此前,当使用浮动杠杆(例如,根据账户持仓量计算)时,合约规范中的预付款参数可能会显示不正确。
  2. 修复了允许负数价格的交易品种的订单簿排序。现在,正价、负价和零价的订单均能按正确顺序显示。 
  3. 终端用户指南现在包含一个新部分 “测试器如何下载历史数据”。它总结了理解策略测试器如何处理交易历史所需的关键点。为了确保计算稳定性,测试器始终加载 “启动前历史缓冲区”:
    • D1 及以下 —— 从上一日历年开始。这提供了至少一年的历史记录。示例:如果测试开始日期是 2023 年 3 月 1 日,则终端将从 2022 年 1 月 1 日起下载终端数据。这相当于测试开始前14个月。
    • W1 —— 至少 100 个每周柱形(约 2 年)。
    • MN1 —— 至少 100 个月的柱形(约 8 年)。

    如果可用的历史记录不够,测试器会自动将实际开始日期向前推迟到满足要求的最近点。

    在这种情况下,测试开始的时间将晚于用户指定的日期。测试器日志将显示相关信息,例如:

    start time changed to 2024.03.15 00:00 to provide data at beginning
  4. 添加了终端界面的爱尔兰语翻译。
  5. 更新了用户界面翻译。

MQL5


  1. 矩阵平衡部分添加了五个新的 OpenBLAS 方法,扩展了方阵的功能。新的函数集提供:
    • 矩阵平衡可提高特征值计算的准确性。
    • 特征向量的反向变换。
    • 简化为 Hessenberg 形式和 Schur 分解,包括正交矩阵生成。

    这些方法为开发人员提供了一个完整的转换周期,从初步的矩阵准备到精确稳定的光谱计算。

    这些方法基于 LAPACK 算法(GEBAL、GEBAK、GEHRD、ORGHR、HSEQR),确保高性能和可靠性:

    • MatrixBalance:通过排列行和列并应用对角相似性变换来平衡一般实数或复数矩阵。平衡可以降低矩阵的 1-范数并提高计算的特征值和/或特征向量的准确性(LAPACK 函数为 GEBAL)。
    • EigenVectorsBackward:通过对平衡矩阵的计算特征向量进行反向变换,形成实数或复数通用矩阵的右或左特征向量(LAPACK 函数为 GEBAK)。 
    • ReduceToHessenbergBalanced:通过正交相似变换(LAPACK 函数为 GEHRD)将实数或复数一般平衡矩阵简化为上 Hessenberg 形式。
    • ReflectHessenbergBalancedToQ:生成正交矩阵 Q,其定义为 n 阶基本反射器的乘积,该矩阵是通过约化为 Hessenberg 形式(LAPACK函数为 ORGHR)生成的。
    • EigenHessenbergBalancedSchurQ:根据 Schur 分解计算 Hessenberg 矩阵的特征值以及矩阵 T 和 Z;可选地计算简化为 Hessenberg 形式的输入矩阵的 Schur 因式分解(LAPACK 函数为 HSEQR)。


  2. 特征值部分添加了两个新方法。这两个函数都能在 Schur 分解后高效计算特征向量,从而完善 MQL5 中的全套线性代数工具:

    • EigenVectorsTriangularZ:计算实上拟三角形或复上三角形矩阵(Schur 形式)的特征向量。使用分解 A = Q · T · Qᴴ (LAPACK 函数为 TREVC)。提供高精度。
    • EigenVectorsTriangularZBlocked:用于计算实上准三角形或复上三角形矩阵的特征向量的块版本(LAPACK 函数为 TREVC3)。速度更快但不太精确。


  3. 引入了新的方法隐藏 规则,对继承进行了重要更改

    以前,如果派生类或结构定义了与基类同名的方法,则会执行 重载 :所有版本(来自父类和子类)都可以在派生类中使用。现在,派生类中同名的方法会隐藏基类方法(方法隐藏)。

    要调用隐藏基类方法,必须在调用时明确指定其作用域:
    class Base
      {
    public: 
       void Print(int x)   { ::Print("Base int: ", x); }
       void Print(double y){ ::Print("Base double: ", y); }
      };
    
    class Derived : public Base
      {
    public:
       void Print(string s){ ::Print("Derived string: ", s); }
      };
    
    void OnStart()
      {
       Derived d;
       d.Print("text");    // call of Derived::Print(string)
       d.Print(10);        // ATTENTION! Calling Derived::Print(string) since Base::Print is hidden (inaccessible)
       d.Base::Print(10);  // explicit call to hidden parent method
      }
    在一段时间内,如果隐藏的基方法比可用的派生方法更适合调用参数,MQL5 编译器将发出警告。上述代码的示例 d.Print(10):
    由于新的方法隐藏规则,调用解析为 “void Derived::Print(string)” 而不是 “void Base::Print(int)”
       参见函数 “Derived::Print” 的声明
       参见函数 “Base::Print” 的声明
    从“数字”到“字符串”的隐式转换

  4. 添加了用于恢复基类方法重载的 using 运算符。

    为了控制新行为,MQL5 引入了 “using” 运算符。它允许您将方法的所有重载从基类型“拉”到类或结构的作用域 中:
    class Base
      {
    protected:
       void Print(int x)   { ::Print("Base int: ", x); }
       void Print(double y){ ::Print("Base double: ", y); }
      };
    
    class Derived : public Base
      {
    public:
       void Print(string s){ ::Print("Derived string: ", s); }
       using Base::Print;  // return Print overloads from Base
      };
    
    void OnStart()
      {
       Derived d;
       d.Print("text");   // Derived::Print(string)
       d.Print(42);       // Base::Print(int)
       d.Print(3.14);     // Base::Print(double)
      }
    如果删除了 “using Base::Print;”,则对 d.Print(42) 和 d.Print(3.14) 的调用将不可用;仅会保留 Derived::Print(string)。

    此外,在此示例中,您可以看到基类中的受保护方法在派生类中变得可访问(它们的可见性从受保护变为公有)。

    这为开发人员提供了对类层次结构的更灵活和可预测的控制,使他们能够精确地定义哪些基类方法重载应在派生类型中保持可访问性。

MetaEditor

  1. 加速了 Algo Forge 中 Git 操作的 SHA-1 哈希计算。批量操作的性能提升超过 40%。
  2. 修复了 Git 操作的文件修改检查。如果只有修改时间发生了变化,但文件内容保持不变,则文件不再被视为已修改。这消除了错误检测,并防止了与远程存储库的冲突。

Algo Forge

  1. 已发布 MQL5 Algo Forge 用户指南。它突出了 Git 的所有关键优势,而没有不必要的复杂性:
    • 可靠的版本历史存储和分支,
    • 快速实验和安全合并更改,
    • 一键创建自己的存储库或分支其他开发人员的项目,
    • 透明的团队协作,跟踪贡献,
    • 开放项目目录,提供向他人学习的机会。


    克隆另一个开发人员的项目
    forge.mql5.io 上打开要克隆的项目,然后单击派生。输入派生的名称和描述并保存。


    Algo Forge 中的分支命令

    在 MetaEditor 中,使用相同的 MQL5 帐户,在导航器中运行刷新命令。您的分支将出现在 Shared Projects 文件夹中。使用 Git Clone从 Algo Forge 下载它。您不仅会收到项目文件,还会收到其完整的提交历史记录和所有分支。这意味着您可以继续进行分支工作,同时仍然拥有克隆项目的整个历史。

    Algo Forge 中的克隆命令


网页端

  1. 修复了交易品种规范中交易和报价时段的显示。
  2. 修复了交易品种规范中预付款设置的显示。
  3. 修复了交易品种规范中交易和报价时段的显示。
  4. 增加了对 竞赛 账户类型的支持。此类账户显示为蓝色,而模拟账户显示为绿色。
  5. 修复了特定条件下浮动杠杆 预付款计算的精度。 
  6. 修复了开设新账户时“下一步”按钮有时无法进入下一步的问题。
  7. 修复了无法在交易所执行的买入价和卖出价之间下限价订单的问题。
  8. 修复了订单执行价格的显示。一旦订单被发送,其执行结果就会出现在窗口中:成功的交易操作或未执行的原因。在某些情况下,执行价格被错误地显示为 “0”。
  9. 修复了快速平仓按钮不显示的问题。

    快速平仓

  10. 修复了账户选择窗口中交易账户货币的显示。