新版 MetaTrader 5 平台 Build 5260:Algo Forge 中的增强功能,扩展的 OpenBLAS 支持以及 MQL5 中的新继承规则 新评论 MetaQuotes 2025.09.05 07:17 在此版本中,我们继续在 MQL5 中扩展了 OpenBLAS 线性代数库,并添加了一组新函数。这些方法为开发人员提供了一个完整的变换周期,从初步的矩阵准备到精确稳定的光谱计算。 此外,MQL5 现在对类和结构中的继承和方法重载实施了更严格的控制。新的继承行为和编译器约束有助于防止应用程序逻辑中的潜在错误。 我们还改进了 Algo Forge 项目中的文件处理,加速了哈希计算,消除了文件修改的错误检测。 在服务网站上,我们发布了全面的 MQL5 Algo Forge 文档。它清楚地展示了算法交易者使用 Git 系统的所有功能和优势:如何探索项目、关注有趣的发布内容、协作和克隆存储库。 MetaTrader 5 客户端 程序端: 修复了交易品种规范中保证金设置的显示。此前,当使用浮动杠杆(例如,根据账户持仓量计算)时,合约规范中的预付款参数可能会显示不正确。 程序端: 修复了允许负数价格的交易品种的订单簿排序。现在,正价、负价和零价的订单均能按正确顺序显示。 程序端:终端用户指南现在包含一个新部分 “测试器如何下载历史数据”。它总结了理解策略测试器如何处理交易历史所需的关键点。为了确保计算稳定性,测试器始终加载 “启动前历史缓冲区”: 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 MQL5:在 矩阵平衡部分添加了五个新的 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)。 MQL5:在特征值部分添加了两个新方法。这两个函数都能在 Schur 分解后高效计算特征向量,从而完善 MQL5 中的全套线性代数工具: EigenVectorsTriangularZ:计算实上拟三角形或复上三角形矩阵(Schur 形式)的特征向量。使用分解 A = Q · T · Qᴴ (LAPACK 函数为 TREVC)。提供高精度。 EigenVectorsTriangularZBlocked:用于计算实上准三角形或复上三角形矩阵的特征向量的块版本(LAPACK 函数为 TREVC3)。速度更快但不太精确。 MQL5:引入了新的方法隐藏 规则,对继承进行了重要更改 以前,如果派生类或结构定义了与基类同名的方法,则会执行 重载 :所有版本(来自父类和子类)都可以在派生类中使用。现在,派生类中同名的方法会隐藏基类方法(方法隐藏)。 要调用隐藏基类方法,必须在调用时明确指定其作用域: 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” 的声明 从“数字”到“字符串”的隐式转换 MQL5:添加了用于恢复基类方法重载的 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:加速了 Algo Forge 中 Git 操作的 SHA-1 哈希计算。批量操作的性能提升超过 40%。 MetaEditor:修复了 Git 操作的文件修改检查。如果只有修改时间发生了变化,但文件内容保持不变,则文件不再被视为已修改。这消除了错误检测,并防止了与远程存储库的冲突。 Algo Forge:已发布 MQL5 Algo Forge 用户指南。它突出了 Git 的所有关键优势,而没有不必要的复杂性: 可靠的版本历史存储和分支, 快速实验和安全合并更改, 一键创建自己的存储库或分支其他开发人员的项目, 透明的团队协作,跟踪贡献, 开放项目目录,提供向他人学习的机会。 克隆另一个开发人员的项目 在 forge.mql5.io 上打开要克隆的项目,然后单击派生。输入派生的名称和描述并保存。 < 在 MetaEditor 中,使用相同的 MQL5 帐户,在导航器中运行刷新命令。您的分支将出现在 Shared Projects 文件夹中。使用 Git Clone从 Algo Forge 下载它。您不仅会收到项目文件,还会收到其完整的提交历史记录和所有分支。这意味着您可以继续进行分支工作,同时仍然拥有克隆项目的整个历史。 添加了终端界面的爱尔兰语翻译。 更新了用户界面翻译。 网页端 修复了交易品种规范中交易和报价时段的显示。 修复了交易品种规范中预付款设置的显示。 修复了交易品种规范中交易和报价时段的显示。 增加了对 竞赛 账户类型的支持。此类账户显示为蓝色,而模拟账户显示为绿色。 修复了特定条件下浮动杠杆 预付款计算的精度。 修复了开设新账户时“下一步”按钮有时无法进入下一步的问题。 修复了无法在交易所执行的买入价和卖出价之间下限价订单的问题。 修复了订单执行价格的显示。一旦订单被发送,其执行结果就会出现在窗口中:成功的交易操作或未执行的原因。在某些情况下,执行价格被错误地显示为 “0”。 修复了快速平仓按钮不显示的问题。 修复了账户选择窗口中交易账户货币的显示。 更新将通过实时更新系统提供。 测试器如何下载历史数据 - 算法交易, 交易机器人 理解编程范式(第 2 部分):面向对象方式开发价格行为智能系统 使用 LSTM 神经网络创建时间序列预测:规范化价格和令牌化时间 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在此版本中,我们继续在 MQL5 中扩展了 OpenBLAS 线性代数库,并添加了一组新函数。这些方法为开发人员提供了一个完整的变换周期,从初步的矩阵准备到精确稳定的光谱计算。
此外,MQL5 现在对类和结构中的继承和方法重载实施了更严格的控制。新的继承行为和编译器约束有助于防止应用程序逻辑中的潜在错误。
我们还改进了 Algo Forge 项目中的文件处理,加速了哈希计算,消除了文件修改的错误检测。
在服务网站上,我们发布了全面的 MQL5 Algo Forge 文档。它清楚地展示了算法交易者使用 Git 系统的所有功能和优势:如何探索项目、关注有趣的发布内容、协作和克隆存储库。
MetaTrader 5 客户端
这些方法为开发人员提供了一个完整的转换周期,从初步的矩阵准备到精确稳定的光谱计算。
这些方法基于 LAPACK 算法(GEBAL、GEBAK、GEHRD、ORGHR、HSEQR),确保高性能和可靠性:
以前,如果派生类或结构定义了与基类同名的方法,则会执行 重载 :所有版本(来自父类和子类)都可以在派生类中使用。现在,派生类中同名的方法会隐藏基类方法(方法隐藏)。
要调用隐藏基类方法,必须在调用时明确指定其作用域: 在一段时间内,如果隐藏的基方法比可用的派生方法更适合调用参数,MQL5 编译器将发出警告。上述代码的示例 d.Print(10):
参见函数 “Derived::Print” 的声明
参见函数 “Base::Print” 的声明
从“数字”到“字符串”的隐式转换
为了控制新行为,MQL5 引入了 “using” 运算符。它允许您将方法的所有重载从基类型“拉”到类或结构的作用域 中:
如果删除了 “using Base::Print;”,则对 d.Print(42) 和 d.Print(3.14) 的调用将不可用;仅会保留 Derived::Print(string)。
此外,在此示例中,您可以看到基类中的受保护方法在派生类中变得可访问(它们的可见性从受保护变为公有)。
这为开发人员提供了对类层次结构的更灵活和可预测的控制,使他们能够精确地定义哪些基类方法重载应在派生类型中保持可访问性。
克隆另一个开发人员的项目
在 forge.mql5.io 上打开要克隆的项目,然后单击派生。输入派生的名称和描述并保存。
<
在 MetaEditor 中,使用相同的 MQL5 帐户,在导航器中运行刷新命令。您的分支将出现在 Shared Projects 文件夹中。使用 Git Clone从 Algo Forge 下载它。您不仅会收到项目文件,还会收到其完整的提交历史记录和所有分支。这意味着您可以继续进行分支工作,同时仍然拥有克隆项目的整个历史。
网页端
更新将通过实时更新系统提供。