MetaTrader 5新功能

桌面版,移动版和网页平台的更新历史

6 十二月 2024
MetaTrader 5 平台 Build 4730:扩展 OpenBLAS 支持和总体性能优化

程序端

  1. 更改了仓位、订单和交易值的计算方法。该值现在以账户存款货币而不是交易品种的基准货币显示:


    仓位、订单和交易的价值现在以账户存款货币显示

  2. 添加了在开设模拟账户时输入出生日期的字段。


    添加了在开设模拟账户时输入出生日期的字段


  3. 修复了图表子窗口中显示的指标缩放比例。对于某些振荡指标,以前可能会错误地选择最小和最大缩放值。
  4. 优化并加快了分时报价数据和历史价格的解包,这将提高图表加载速度。
  5. 修复了内部电子邮件撰写窗口中的文本颜色编辑功能。
  6. 更新了用户界面翻译。

MQL5

  1. 添加了新的 OpenBLAS 方法:

    • EigenSolver2 - 计算一对普通方阵的广义特征值和特征向量(lapack 函数为 GGEV)。
    • EigenSolverX - 在专家模式下计算正方形矩阵的特征值和特征向量,即能够影响计算算法并获取相应的计算数据(lapack 函数为 GEEVX)。
    • EigenSolver2X - 在专家模式下计算一对正方形矩阵的特征值和特征向量,即能够影响计算算法并获取相应的计算数据(lapack 函数为 GGEVX)。
    • EigenSolverShur - 计算特征值、舒尔形式的上三角矩阵和舒尔向量矩阵(lapack 函数为 GEES)。
    • EigenSolver2Shur - 计算一对正方形矩阵的特征值、广义特征向量、广义舒尔形式以及左右舒尔向量(lapack 函数为 GGES)。
    • EigenSolver2Blocked - 使用分块算法(lapack 函数为 GGEV3)计算一对正方形矩阵的广义特征值和特征向量。
    • EigenSolver2ShurBlocked - 对于一对正方形矩阵,使用分块算法计算特征值、广义特征向量、广义舒尔形式以及左右舒尔向量(lapack 函数为 GGES3)。
    • EigenSymmetricRobust - 使用多重相对稳健表示、MRRR 算法计算对称或厄米特(复共轭)矩阵的特征值和特征向量(lapack 函数为 SYEVR、HEEVR)。
    • EigenSymmetricBisect - 使用分段算法计算对称或厄米特(复共轭)矩阵的特征值和特征向量(lapack 函数 SYEVX、HEEVX)。

  2. 复数矩阵添加了新方法:

    • TransposeConjugate - 创建共轭变换矩阵。
      matrix<complex<T>> matrix<complex<T>>::TransposeConjugate(void) const;
      该方法返回一个新的共轭变换矩阵,其中原始矩阵的元素被转置并转换为它们的复共轭。

      如果出现错误,则返回空矩阵。使用 GetLastError 函数获取错误代码。

    • CompareEqual - 两个矩阵的绝对比较。
      int matrix<T>::CompareEqual(const matrix<T>& mat) const
      返回值为:

      • -1 - 如果矩阵 A 的元素小于矩阵 B 的对应元素。
      • 0 - 如果矩阵 A 和 B 的所有元素都相同。
      • 1 - 如果矩阵 A 的元素大于矩阵 B 的对应元素。

      如果输入数据无效,该方法也会返回错误。要获取错误代码,请使用 GetLastError 函数。

  3. 为相应的集成包添加了 Python 支持(最高版本 3.13)。要更新软件包,请运行以下命令:

    pip install --upgrade MetaTrader5

  4. 修复了跳过第一个计时器事件的问题。如果在OnTimer处理函数中启动了计时器,则发生错误。

MetaEditor

  • 修正了调试器模式下输入变量值的计算。在某些情况下,显示的不是值,而是 "未知标识符" 的信息。

Tester

  • 修正了在使用汇率工具测试应用程序时搜索货币转换所需交叉汇率的问题。

网页端

  1. 添加了对大额订单请求执行类型的支持。
  2. 添加了对经纪商拒绝请求原因的扩展描述支持。
  3. 修复了账户开户表格。现在会根据经纪商设置要求提供信息。
  4. 修复了注册模拟账户时的国家检测问题。
  5. 修正了显示一键交易警告的对话框中的对齐方式。
11 十月 2024
MetaTrader 5 build 4620:MQL5 错误修复和新的 OpenBLAS 方法

程序端

  1. 修正了一个错误,在某些情况下,该错误会导致返回不完整的分时报价历史记录
  2. 修正了用英语以外的语言选择交易品种时的自动完成功能。在搜索栏中输入交易品种名称时,系统会根据输入的字符自动推荐相关选项。现在,搜索功能可在所有本地语言中正确运行,且不区分大小写。

MQL5

  1. MQL5 文档中新增了 OpenBLAS 方法的说明。目前,已有 15 种矩阵和向量的新方法,不久还将增加更多方法。
    OpenBLAS 是一种高效的高性能计算开源解决方案,尤其是在处理数据集时。

    函数

    操作

    SingularValueDecompositionDC

    奇异值分解(SVD),分而治之算法;被认为是其他 SVD 算法中最快的算法(lapack 函数为 GESDD)。

    SingularValueDecompositionQR

    奇异值分解,QR 算法;被认为是经典的 SVD 算法(lapack 函数为 GESVD)。

    SingularValueDecompositionQRPivot

    奇异值分解、带枢轴算法的 QR(lapack 函数为 GESVDQ)。

    SingularValueDecompositionBisect

    奇异值分解,分段算法(lapack 函数为 GESVDX)。

    SingularValueDecompositionJacobiHigh

    奇异值分解,Jacobi 高级算法(lapack 函数为 GEJSV)。

    SingularValueDecompositionJacobiLow

    奇异值分解,Jacobi 低级算法(lapack 函数为 GESVJ)。在某些情况下,该方法计算小奇异值及其奇异向量的精确度远远高于其他 SVD 程序。

    SingularValueDecompositionBidiagDC

    奇异值分解,双对角矩阵的分而治之算法(lapack 函数为 BDSVDX)。

    SingularValueDecompositionBidiagBisect

    奇异值分解,双对角矩阵的分段算法(lapack 函数为 BDSVDX)。

    EigenSolver

    使用经典算法计算正方形矩阵的特征值和特征向量(lapack 函数为 GEEV)。

    EigenSymmetricDC

    使用分而治之算法计算对称或 Hermitian(复共轭)矩阵的特征值和特征向量(lapack 函数为 SYEVD、HEEVD)。

    SingularSpectrumAnalysisSpectrum

    基于特征值计算光谱成分相对贡献的方法函数

    SingularSpectrumAnalysisForecast

    利用输入时间序列的频谱成分计算重建和预测数据的方法函数。

    SingularSpectrumAnalysisReconstructComponents

    用于计算输入时间序列的重构成分及其贡献的方法函数。

    SingularSpectrumAnalysisReconstructSeries

    利用第一个 component_count 组件计算重建时间序列的方法函数。

  2. 修正了运行使用 matrix::CopyRates方法的旧版本可执行 MQL5 程序文件 (.ex5) 时出现的错误。在新版本下编译的文件不会出现这些错误。
  3. 修正了 union 中允许的订单类型检查。

MetaTester

  • 修正了在某些情况下,自定义指标去初始化时可能发生的崩溃。

4 十月 2024
MetaTrader 5 平台 build 4585:性能改进

程序端

  • 修复了停止 MQL5 程序 分析 时在某些条件下可能发生的崩溃。

MetaEditor

MetaTester

  • 修复了重新运行单次测试时在某些条件下发生的崩溃。
27 九月 2024
新版 MetaTrader 5 平台 build 4570:网页端版本的增强以及在 MQL5 中集成 OpenBLAS

客户端

  1. 如果账户订阅了信号,则限制访问 MQL5 交易和历史函数。

    在账户中检测到信号订阅时(无论当前终端是否启用复制),禁止调用任何MQL5 交易函数,包括接收开启订单和仓位、接收历史记录以及执行交易操作。日志中会记录相应的警告:
    'XXX':检测到信号订阅,禁用 MQL5 和 Python 中的交易和历史访问函数
    这些限制也适用于Python 交易函数:positions_total, positions_get, orders_total, orders_get, history_orders_total, history_orders_get, history_deals_total, history_deals_get, order_check, 和 order_send。

    如果取消了账户上的信号订阅,或连接到另一个没有订阅信号的账户,则会解除限制并记录以下信息:
    'XXX':未检测到信号订阅,已启用 MQL5 和 Python 中的交易和历史访问功能
    如果账户上的限制处于活动状态,MQL5 函数将返回以下响应代码:

    • OrderSend 和 OrderSendAsync 返回 RET_REQUEST_AT_DISABLED_CLIENT
    • OrdersTotal 和 PositionsTotal 返回 0
    • PositionGetSymbol、PositionSelect、PositionSelectByTicket 和 PositionGetTicket 返回 ERR_MQLAPI_TRADE_POSITION_NOT_FOUND
    • OrderGetTicket 和 OrderSelect 返回 ERR_MQLAPI_TRADE_POSITION_NOT_FOUND
    • HistorySelect 返回 ERR_MQLAPI_TRADE_DEAL_NOT_FOUND

  2. 修正、优化并加速了分时报价历史请求,并可导出为 CSV/HTML 文件。
  3. 添加了Microsoft Edge WebView2 支持,以便在 macOS 上的交易平台中显示 HTML 内容。与之前的MSHTML相比,新组件通过提供对现代技术的访问进一步扩展了内容显示功能。向 WebView2 的过渡改善了市场、信号、VPS 和其他部分的外观,提高了它们的性能,并创建了更具响应性的界面。

  4. 修复了内部邮件发送窗口中的上下文菜单。
  5. 修复了交易工具选择对话框中的过滤问题。 不再需要先输入工具名称来隐藏过期的资产工具。
  6. 修复了在合同规格窗口中计算保证金要求的问题。交易所股票和债券工具以前可能会发生计算错误。
  7. 改进了先进先出账户的批量平仓功能。此类账户不再显示不兼容的操作类型,包括关闭所有盈利/亏损仓位、同向仓位和反向仓位。
  8. 修复了用户无法在遵循先进先出规则平仓的账户中下达反向挂单的问题。
  9. 修复了计算持有交易所期货工具仓位账户的清算价值问题。
  10. 修复了交易所债券和交易所 MOEX 债券工具仓位的浮动利润计算问题。
  11. 当平台在没有先前添加帐户的情况下启动时,禁用了自动模拟帐户创建。
  12. 改进注册账户时的姓名和电子邮件验证。
  13. 修复了锁仓持仓保证金计算的问题。在某些情况下,使用账户浮动保证金(根据当前仓位的交易量/价值计算)时可能会出现错误。
  14. 修复了模拟账户开设对话框中 "下一步" 按钮状态的更新。输入电话或电子邮件确认码后,在某些情况下,该按钮可能会保持不活动状态。
  15. 更新了用户界面翻译。

MQL5

  1. 添加了与 OpenBLAS 矩阵计算库的本地集成。

    OpenBLAS 是一个高性能的开源线性代数库,它实现了 BLAS(基本线性代数子程序)和一些 LAPACK 函数。OpenBLAS 旨在提高计算性能,尤其是矩阵和矢量运算性能,这些运算通常用于机器学习、数值方法和模拟等科学和工程任务。

    OpenBLAS 的主要功能:

    • 多线程支持:OpenBLAS 可以有效地利用多个处理器内核进行并行计算,大大加快了多处理器系统的运行速度。
    • 优化处理器架构:OpenBLAS 包括针对各种处理器(如 Intel、AMD、ARM 等)的优化版本。程序库可自动检测处理器特性(支持的指令集,如 AVX/AVX2/AVX512),并选择最合适的函数实现。
    • 广泛的 BLAS 操作支持:OpenBLAS 实现了核心 BLAS 函数,包括矢量运算(如矢量加法和点积)、矩阵运算(乘法)以及矢量-矩阵运算。
    • LAPACK 兼容性:该库支持LAPACK(线性代数包)函数,用于更复杂的线性代数操作,如求解线性方程组、计算矩阵特征值等。
    • 高性能:与其他 BLAS 库相比,由于针对特定处理器架构进行了手工优化,OpenBLAS 通常能取得更好的效果。

    OpenBLAS 广泛应用于涉及数值计算的应用程序中:

    • 训练神经网络和其他机器学习任务。
    • 科学计算(如物理过程建模)。
    • 处理和分析大量数据。

    MQL5 目前提供以下方法:

    奇异值分解(SVD):

    • SingularValueDecompositionDC - 分而治之算法;被认为是其他 SVD 算法中最快的算法(lapack 函数 GESDD)。
    • SingularValueDecompositionQR - QR 算法;被认为是经典的 SVD 算法(lapack 函数 GESVD)。
    • SingularValueDecompositionQRPivot - 带枢轴的 QR 算法(lapack 函数 GESVDQ)。
    • SingularValueDecompositionBisect - 平分算法(lapack 函数 GESVDX)。
    • SingularValueDecompositionJacobiHigh - Jacobi 高级算法(lapack 函数 GEJSV)。
    • SingularValueDecompositionJacobiLow - Jacobi 低级算法(lapack 函数 GESVJ)。在某些情况下,该方法计算小奇异值及其奇异向量的精确度远远高于其他 SVD 程序。
    • SingularValueDecompositionBidiagDC - 对角矩阵的分而治之算法(lapack 函数 BDSVDX)。
    • SingularValueDecompositionBidiagBisect - 对角矩阵的分段算法(lapack 函数 BDSVDX)。

    Eigen 方法:

    • EigenSolver - 使用经典算法(lapack 函数 GEEV)计算正方形矩阵的特征值和特征向量。
    • EigenSymmetricDC - 使用分而治之算法(lapack 函数 SYEVD、HEEVD)计算对称或 Hermitian(复共轭)矩阵的特征值和特征向量。

    详细文档将会很快提供。

  2. ENUM_SYMBOL_SWAP_MODE 枚举中添加了 SYMBOL_SWAP_MODE_CURRENCY_PROFIT 值。如果 SymbolInfoInteger 函数返回此值,账户上的库存费将以利润计算货币计费。
  3. 扩展了 ONNX Runtime 支持。添加了新类型的机器学习操作,使您可以运行更高级的神经模型。
  4. 我们继续过渡到更高效的MQL5编译器,该编译器已经用于某些功能。这一转变将有助于进一步优化和加快程序执行速度。
  5. 添加了新的数据类型,以支持 OpenBLAS 库:

    • complexf - 用浮点数表示的复数
    • vectorcf - 包含 complexf 类型元素的向量
    • matrixcf - 包含 complexf 类型元素的矩阵

  6. 在处理违反 URL 格式规则、包含重定向错误或有长长的 DNS 备选名称列表的网站时,改进了 WebRequest 操作。
  7. 修复了同时为多个变量分配矩阵或向量类型的问题。

MetaEditor

  1. 更新了人工智能助理(AI Assistant)的可用模型。现在,更先进的 GPT-4o mini 取代了 GPT-3.5 Turbo。还增加了 01-mini 模型。
  2. 修正了调试器错误,由于该错误,变量值可能无法在观察窗口中更新。
  3. 更新了用户界面翻译。

MetaTester

  1. 修复了保存自定义交易品种设置中的保证金系数。
  2. 修复了在某些条件下测试通过之间可能出现的内存泄漏。


网页端

  1. 添加了十字光标模式,可在图表上查看精确数值和测量距离。

    点击左侧面板上的相关按钮,启用该模式。将十字准线移至图表上的任意一点,即可在相应的坐标轴上看到日期和价格。要测量距离,请单击图表上的任意一点,然后按住鼠标键将光标拖到另一点。


    添加了用于在图表上查看精确数值和测量距离的十字准线模式


    您还可以使用快捷键:按下鼠标中键启用十字准线,使用 Esc 键或单击鼠标右键禁用十字准线。

  2. 添加了根据柱形收盘价绘制的简单折线图:


    添加了根据柱形收盘价绘制的简单折线图


  3. 在移动版视图中,增加了在 "市场观察" 部分显示附加列的功能。要进行配置,请切换到表格模式并单击"...":


    移动版视图中 "市场观察" 的附加列


  4. 已添加热键:

    • Home - 滚动到图表开头(最早日期)
    • End - 滚动到图表末尾(最新日期)
    • Page Up - 将图表向后滚动一个屏幕
    • Page Down - 将图表向前滚动一个屏幕

  5. 增强账户连接存储的数据安全性。
  6. 改进了图表的滚动、拖动和缩放功能。
  7. 加快了网页端平台在网页上的初始加载速度。
  8. 优化了柱形的加载。
  9. 修复了交易所债券和交易所 MOEX 债券工具仓位的浮动利润计算问题。
  10. 修正了图表上一键式交易面板的交易量输入。
  11. 修复了更新市场深度中订单交易量的错误。在某些情况下,数值可能会延迟更新。
  12. 修复了下订单时检查最低允许交易量的问题。
  13. 修复了锁仓持仓保证金计算的问题。在某些情况下,使用账户浮动保证金(根据当前仓位的交易量/价值计算)时可能会出现错误。
  14. 修复了一键式交易面板上的买入和卖出按钮在改变交易量之前可能无法使用的错误。

21 六月 2024
MetaTrader 5平台build 4410:性能改进
MetaTrader 5平台build 4410:性能改进

客户端

  • 修正程序端崩溃问题,在某些情况下,启动测试时可能会发生程序端崩溃。

MQL5

网页端

  1. 修正浏览器与网页端兼容性的验证问题。在某些情况下,用户可能会错误地收到一条显示其浏览器不支持的信息。
  2. 修复开设模拟账户的问题。
  3. 其他小问题的修正和改进。

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

MetaTrader 5 Android

  1. 完全重新设计了平板电脑版本的界面。现在,新界面采用了更现代设计,这已经在平台的iOS移动版和网页端上得到验证。现在主要版块位于屏幕底部,图表操作命令位于屏幕左侧。




  2. 持仓历史部分添加快捷菜单,可快速访问相应交易品种的交易对话框或图表。
  3. 隐藏切换到交易品种(不可交易)的对话框的命令。
  4. 修复MetaQuotes-Demo服务器的运行问题。

通过Google Play华为 AppGallery或下载APK文件更新手机应用程序。

7 六月 2024
MetaTrader 5平台build 4380:性能改进

程序端

  1. 修正在某些情况下可能导致实时更新系统无法正常运行的错误。
  2. 添加新热键Alt+X,用于打开EA交易列表。
  3. 修正崩溃日志中的错误报告。

MetaTester

  1. 修正设置位图图形对象的某些属性时出现的错误。
  2. 当在虚拟环境中操作且处理器不支持AVX指令集时,现在禁止测试代理连接到MQL5云网络

网页端

  1. 修正图表上一键交易面板的操作错误。
  2. 修正在图表上启用一键交易面板时打开的警告对话框。
31 五月 2024
MetaTrader 5 Build 4350:网络平台中的更多分析对象和MetaEditor中的欢迎页

MetaEditor

  1. 添加欢迎页来帮助用户开始算法交易和应用程序开发之旅。



    新手交易者资料
    “简介”部分介绍了MQL5.com上提供的学习资料:语言文档、书籍、文章、开发者论坛和代码库。它还推出了您可以应用知识并将知识货币化的服务:应用程序市场、自由职业者服务和交易信号。

    在文档和书籍部分,您可以找到可用学习资料更详细的描述。

    适用于开发人员的功能
    “新功能”部分提供了一系列重要信息,以帮助开发人员了解最新情况:


    此外,在这里您还可以找到最近打开的文件列表,以便快速访问。



    对于在市场上积极销售其应用程序的用户,“我的销售”报告为评估其表现提供了有价值的工具。它提供对以下内容的访问权限:

    • 一段时间内的综合销售和下载统计数据。
    • 销售地理位置,深入了解您的产品最受欢迎的地区。这可以为进一步的项目扩展提供想法,例如本地化为特定语言或针对特定地区的有针对性的广告活动。
    • 根据销售量和营业收入得出的畅销产品数据。可以根据许可证类型过滤图表:完整许可证或特定期限的租赁许可证。此外,在这里您还可以看到产品价格变化的图表。所有这些都将帮助您了解您的客户。
    • 每个产品的详细下载和销售统计数据。


  2. 改进内置搜索。顶部搜索栏现在专门用于搜索当前文档或本地文件中的文本。对于学习资料和代码的全局搜索,请使用工具箱中的单独部分。


  3. AI Assistant中添加对最新ChatGPT模型 - GPT-4o的支持。这可用于自动完成代码并获取提示。您可以在MetaEditor设置中选择新模型。


  4. 更新用户界面翻译。

程序端

  1. 提高在交易品种规格中显示计算价格的精度。
  2. 修正交易报告中的MFE和MAE计算。
  3. 修正按国家和货币保存和恢复 经济日历过滤设置的问题。
  4. 修正模板在图表中的应用问题。现在,如果图表启用交易历史的显示 ,则应用模板后相应的对象不会消失。
  5. 修正期权看板中的错误。在某些情况下,在看板上添加交易品种可能会导致平台冻结。
  6. 修正持仓编辑对话框中的错误。在某些情况下,可能会输入错误的水平而不是当前的止损和止盈值。
  7. 更新用户界面翻译。

MQL5

  1. 优化并加速ArrayResize函数。在某些条件下,该函数执行速度可提高40%。
  2. 更新对ONNX的支持。
  3. 修正服务应用程序中MessageBox函数调用的问题。无论用户在对话框中按下哪个按键,该函数都会返回空值。
  4. 修正在某些情况下导致MQL5程序初始化不完整的错误。
  5. 修正解析一些的错误。使用大量常量时发生错误。

MetaTrader 5网页端

  1. 扩展可用分析对象的列表。现在,您可以利用标尺来测量时间和价格,绘制图形(矩形、椭圆形、三角形和圆形),并向图表添加标签。所有对象都可以在左侧面板中找到:


  2. 添加重命名对象的功能。
  3. 改进与经济日历的整合。优化并加速数据请求。
  4. 加速图表操作。
  5. 加快应用程序启动和与交易账户连接的速度。
  6. 修正管理图表上交易操作显示的设置。
  7. 修正合约规格中预付款要求的显示。
  8. 修正在历史记录部分账户状态的显示。窄屏设备上可能会出现问题。
  9. 修正市场深度变化的显示。
22 三月 2024
MetaTrader 5 build 4260:其他改进

程序端

  1. 修正订阅服务中订阅免费产品时出现的错误。在某些情况下,对话框中可能不显示相关按键。
  2. 更新用户界面的翻译。

MQL5

  1. 扩展对键盘事件的支持:

    • OnChartEvent处理程序添加CHARTEVENT_KEYUP事件。它可以追踪与键释放相关的事件。
    • 添加无效键处理功能。这些键可以修改最后按下的键所生成的字符的外观。例如,在希腊语的布局中,重读元音ά、έ、ύ等可以通过先按";"再按元音来生成。使用TranslateKey函数可以追踪这类键的按下情况。
    • 改进TranslateKeyTerminalInfoInteger函数。现在,在OnChartEvent中接收CHARTEVENT_KEYUP或CHARTEVENT_KEYDOWN事件时,可以获得事件发生时的完整键盘状态。例如,如果用户按下Z键,就能确定当时按的是Ctrl键还是Shift键。对于其他事件,函数运行如从前一样,返回当前时刻的键盘状态。

  2. 更新Alglib库。更新后,将修改CMatrixDouble和CMatrixComplex类中的以下方法:
    vector<double/complex> operator[](const int i) const;
    vector<double/complex> operator[](const ulong i) const;
    取而代之的是一个具有恒定返回值的方法:
    const vector<double/complex> operator[](const ulong i) const;
    在新版Alglib中,mat[row][col]=x的代码运行方式与旧版不同,因此此次修改将有助于在适当的位置捕捉结果的错误使用。以前,这表示写入一个矩阵。现在,该值被写入一个临时对象向量<double/complex>,记录后会立即销毁。

    在返回值中添加const可以使用mat[row][col]=x。由于mat[row]现在返回的是常量向量,因此尝试用mat[row][col]覆盖其元素将导致编译错误。

  3. 修正在某些条件下可能导致错误操作ChartGet*函数的错误。

MetaEditor

  1. 添加对MQL5算法交易的神经网络一书内容的搜索。新选项与之前出版的交易者MQL5编程一书出现在同一部分。



Tester

  1. 修正使用大量远程代理时的优化问题。在某些情况下,该错误可能会导致CPU占用率过高。

MetaTrader 5网页端

  1. 修正在交易所执行模式下交易品种限价单的设置。现在,当所下订单的价格相对于当前价格发生变化(变高或变低)时,订单类型将不会像其他类型的交易品种那样,从买入限价(Buy Limit)切换到卖出限价(Sell Limit),反之亦然。因此,用户可以发出高于市场的买入限价(Buy Limit)订单和低于市场的卖出限价(Sell Limit)订单,从而确保交易价格得到限制。
  2. 修正市场报价中选定交易品种计数器的显示问题。
7 三月 2024
MetaTrader 5 build 4230:更多内置应用程序和扩展ONNX支持

程序端

  1. 在标准平台包中添加28个新EA交易和12个新指标。这些应用程序可在导航器的EA交易\Free Robots和指标\Free Indicators部分获得。每个程序均以源代码形式提供,并附有详细注释,可帮助您学习MQL5语言。

    EA交易根据技术指标和蜡烛图形态实施交易策略,例如 3 Black Crows – 3 White Soldiers,Bullish Engulfing – Bearish Engulfing,Bullish Harami – Bearish Harami等。新指标是流行渠道的实施情况:Camarilla、DeMark、Donchian、Fibonacci和Keltner等。



  2. 推出纳斯达克市场数据订阅的准备工作正在进行中。通过该平台,交易者将能够访问来自最大交易所之一的数百种交易品种的实时报价和深入价格历史记录。任何在MetaQuotes-Demo服务器上拥有模拟账户和拥有MQL5.community账户的用户都可以订阅。



    首先,您只需购买订阅并将相关交易品种添加到您的市场报价中。您可以将这些交易品种用作常规交易品种:打开图表,使用对象和指标对其进行分析,并在策略测试器中运行EA交易。访问所有信息的方式与您与交易商合作的普通交易品种一样。

  3. 改进交易品种规格中的预付款部分。该部分现在提供每个交易品种的预付款率和计算值。



    修正某些交易品种类型的预付款显示错误。

  4. 在“帮助”菜单中添加MQL5 Telegram频道的链接。该频道定期分享开发人员感兴趣的内容,包括对新编程文章的评论以及来自 代码库的免费EA和指标。订阅该频道以时刻关注更新消息,确保您不会错过重要信息。



  5. 自定义配置文件的[StartUp]部分添加对ShutdownTerminal参数的支持。使用此参数启动平台以使用脚本执行一次性任务。例如,您有一个用于截图图表屏幕的脚本。您可以创建一个配置文件,与平台一起启动该脚本。如果将ShutdownTerminal设置为“是”添加到该文件中,平台将在脚本完成后立即自动关闭。
  6. 加强对网络协议和市场产品的保护。
  7. 禁用对模拟账户信号服务的支持。要获取有关练习账户的更多统计信息,请使用新交易报告。它提供了大量的指标来描述您的策略盈利能力和风险,包括增长图、平衡图和权益图,以及按方向和交易品种划分的交易分布图等。
  8. 修正“帮助”菜单中交易商协议链接的显示。
  9. 改进租用VPS时最佳服务器的选择。
  10. 修正在导航器中切换版块时刷新订阅页面的问题。
  11. 修正在开设初始账户时更新协议列表的问题。
  12. 更新用户界面翻译。

MQL5

  1. ENUM_MQL_INFO_INTEGER枚举中添加MQL_STARTED_FROM_CONFIG属性。如果脚本/EA交易从配置文件的StartUp部分启动,则返回true。这意味着脚本/EA交易已在启动程序端的配置文件中指定。
  2. 我们继续扩大对ONNX模型的支持。

    机器学习任务并不会一直需要更高的计算精度。为了加快计算速度,一些模型使用较低精度的数据类型,例如Float16甚至Float8。为了允许用户将相关数据输入到模型中,MQL5中添加了以下函数:
    bool ArrayToFP16(ushort &dst_array[],const float &src_array[],ENUM_FLOAT16_FORMAT fmt);
    bool ArrayToFP16(ushort &dst_array[],const double &src_array[],ENUM_FLOAT16_FORMAT fmt);
    bool ArrayToFP8(uchar &dst_array[],const float &src_array[],ENUM_FLOAT8_FORMAT fmt);
    bool ArrayToFP8(uchar &dst_array[],const double &src_array[],ENUM_FLOAT8_FORMAT fmt);
    
    bool ArrayFromFP16(float &dst_array[],const ushort &src_array[],ENUM_FLOAT16_FORMAT fmt);
    bool ArrayFromFP16(double &dst_array[],const ushort &src_array[],ENUM_FLOAT16_FORMAT fmt);
    bool ArrayFromFP8(float &dst_array[],const uchar &src_array[],ENUM_FLOAT8_FORMAT fmt);
    bool ArrayFromFP8(double &dst_array[],const uchar &src_array[],ENUM_FLOAT8_FORMAT fmt);
    由于16位和8位的实数格式可能不同,因此转换函数中的“fmt”参数必须指示需要处理哪种数字格式。对于16位版本,使用新的枚举NUM_FLOAT16_FORMAT,当前具有以下值:

    • FLOAT_FP16 – 标准16位格式也称为 half
    • FLOAT_BFP16 – 特殊的脑浮点格式。

    对于8位版本,使用新的ENUM_FLOAT8_FORMAT枚举,当前具有以下值:

    • FLOAT_FP8_E4M3FN – 8位浮点数,4位表示指数,3位表示尾数。通常用作系数。
    • FLOAT_FP8_E4M3FNUZ — 8位浮点数,4位表示指数,3位表示尾数。支持NaN,不支持负零和Inf。通常用作系数。
    • FLOAT_FP8_E5M2FN – 8位浮点数,5位表示指数,2位表示尾数。支持NaN和Inf。通常用于渐变
    • FLOAT_FP8_E5M2FNUZ — 8位浮点数,5位表示指数,2位表示尾数。支持NaN,不支持负零和Inf。也用于渐变。


  3. 添加机器学习中使用的新矩阵和向量方法:


  4. ONNX Runtime已更新至1.17版本。有关发布说明的详细信息,请参阅GitHub
  5. Python集成包更新至5.0.4200版本,添加对Python 3.12的支持。使用“pip install -- pgrade MetaTrader5”命令更新您的软件包以获取最新更改。
  6. 修正某些情况下的OrderCalcMargin函数操作的问题。
  7. ENUM_DEAL_REASON枚举中添加了DEAL_REASON_CORPORATE_ACTION属性。它表示由于公司行动而执行的交易:合并或重新命名证券、将客户转移到另一个账户等。
  8. 比较方法添加对复向量和矩阵比较的支持。比较涉及到复数之间距离的估算。距离的计算公式为sqrt(pow(r1-r2, 2) + pow(i1-i2, 2),是一个已经可以与epsilon进行比较的实数。
  9. 修正将颜色类型变量转换为RGB格式文本的问题。
  10. 修正在复特征值的情况下,返回Eig方法获取特征向量的结果。为复杂评估添加方法重载。

MetaEditor

  1. 在帮助\MQL5.community菜单中添加最近发布的书籍“MQL5交易者编程”的链接。该书也已添加到搜索系统,因此您可以直接从MetaEditor找到所需的信息:




  2. 内置搜索改进:

    • 工具箱窗口中的搜索结果部分分为两个选项卡:“搜索”用于在线搜索结果(文档、文章、书籍等),“在文件中搜索”用于本地结果。
    • 单独的搜索字符串已添加到结果部分。您可以使用它来代替MetaEditor主工具栏中的搜索栏。

  3. 命令行编译命令时添加对AVX、AVX2和AVX512模式的支持。要进行编译,请在下列键中选择一个添加到命令中:/avx、/avx2或/avx512。
  4. 用于数据库操作的SQLite引擎更新至版本3.45。
  5. 禁用对Internet Explorer的支持。现在仅使用Microsoft Edge WebView2来显示HTML页面。与之前的MSHTML相比,新组件通过提供对最新技术的访问,进一步扩展了内容显示功能。WebView2的使用改善了某些MetaEditor部分的外观,提高了性能,并创建了一个响应速度更快的界面。
  6. 修正在极少数情况下函数自动完成时发生的冻结问题。
  7. 修正崩溃日志中的错误报告。
  8. 修正在极少数情况下函数自动完成时发生的冻结问题。

Tester

  1. 如果测试开始日期恰好是三倍库存费日,则修正三倍库存费的计算。

MetaTrader 5网页端

改进合约规格中预付款要求的显示。现在,除了用于计算比率和初始参数之外,规格还显示最终预付款值。如果预付款数额取决于持仓量,则对话框中将显示相应的水平。



预付款的计算依据是规格窗口打开时的交易品种价格,而不是实时更新。因此,这些数值应被视为具有指示性。要根据当前价格重新计算数值,请重新打开交易品种规格。
18 一月 2024
MetaTrader 5 build 4150:交易报告导出和MQL5新机器学习方法

程序端

  1. 程序端:添加将交易报告导出为HTML和PDF文件的功能。通过这个选项,您可以轻松地与同事和投资者分享您的交易成果。新导出命令可在文件菜单和报告菜单中获得。




  2. 程序端:添加将当前"市场报价"窗口的状态保存到CSV文件的功能。为此,请在快捷菜单中选择"导出"。文件将保存导出时选择的指标。要保存更多数据,可通过快捷菜单启用其他列。




  3. 程序端:改进合约规格中预付款要求的显示。现在,规格不再显示计算的比率和初始参数,而是显示最终预付款值。如果预付款数额取决于持仓量,则对话框中将显示相应的水平。



    预付款的计算依据是规格窗口打开时的交易品种价格,而不是实时更新。因此,这些数值应被视为具有指示性。要根据当前价格重新计算数值,请重新打开交易品种规格。

  4. 程序端:禁用对模拟账户信号服务的支持。要获取有关练习账户的更多统计信息,请使用新交易报告。它提供了大量的指标来描述您的策略盈利能力和风险,包括增长图、平衡图和权益图,以及按方向和交易品种划分的交易分布图等。
  5. 程序端:修正在编辑Stop Limit订单的止盈和止损时显示潜在盈/亏值的问题。
  6. 程序端:修正和改进支付系统的操作。
  7. 程序端:修正在市场报价中从*.set文件加载一组交易品种时的重复检查。
  8. 程序端:修正Parallels的网络安装程序。现在,在装有M1/M2/M3的macOS上使用该虚拟化系统时,平台将被正确安装。
  9. 程序端:更新用户界面翻译。
  10. 修正崩溃日志中的错误报告。

MQL5

  1. 添加机器学习中使用的矩阵和向量操作新方法。

    • ConfusionMatrix:计算误差矩阵。该方法适用于预测值的向量。
    • ConfusionMatrixMultilabel:计算每个标签的误差矩阵。该方法适用于预测值的向量。
    • ClassificationMetric:计算分类指标,以评估预测数据与真实数据相比的质量。该方法适用于预测值的向量。
    • ClassificationScore:计算分类指标,以评估预测数据与真实数据相比的质量。该方法适用于真实值的向量。
     
  2. 修正使用FileWrite函数将数据以UTF-8格式保存到文本文件。
  3. 禁用和弃用的Signal*函数。现在它们将返回空信号集。

MetaEditor

  1. 提高分析采样率。现在,分析器每秒可捕捉10,000次应用程序状态,从而更准确地测量函数执行率。
  2. 更新AI Assistant自动编码助手的可用模型。添加ChatGPT-4 Turbo模型,删除过时的模型。
  3. 修正替换所选文本片段中的单词时出现的错误。

Tester

  1. 修正在通用优化模式下可能出现的前测冻结问题。
  2. 利用MQL5程序的交易历史记录优化和加速操作。
  3. 修正Close By操作的利润计算。与主测试交易品种不匹配的交易品种可能会出错。

网页端

  1. 修正交易商相关属性发生变化时更新交易品种属性的问题。
  2. 修正图表上蜡烛图显示的问题。图表可能无法显示小蜡烛图。
  3. 修正开户表格中国家字段的操作。
20 十月 2023
MetaTrader 5 build 4040:其他改进和修复

程序端

  1. 新交易报告改进。修正增长图表和缩减计算中第一个值的显示。



  2. 开户时,交易者会通过内部电子邮件系统收到几条信息。这些信息中会提供有关平台功能和内置服务的凭证和可用信息。我们对这些电子邮件进行了更新和改进,将其翻译成50种语言,并整体更新设计。
  3. 优化账户入金和出金页面。
  4. 修正下新订单时交易量变化的错误。在某些交易品种设置组合中,该字段无法进行编辑。
  5. 修正模拟账户开户对话框中交易商协议链接的显示问题。
  6. 更新用户界面翻译。

MQL5

  1. 修正在某些条件下可能导致MQL5程序启动时崩溃的错误。

MetaTrader 5网页端

  1. 修正在交易历史中止损和止盈值的显示问题。
  2. 增强日志记录功能。新日志信息可显示连接成功和连接失败的信息。
  3. 修正市场报价中的快捷菜单操作。
  4. 修正从市场深度进行交易时有关操作结果的通知显示。
  5. 修正在调用交易对话框时导致指标子窗口从图表中移除的错误。
  6. 修正在图表上拖动显示在分析对象顶部的交易水平的问题。
29 九月 2023
MetaTrader 5 build 4000 :改进交易报告和网页端

程序端

  1. 新交易报告中添加每月资金增长的显示。要查看该指标,请进入汇总报告并选择"结余"模式。



  2. 修正并改进新交易报告的显示。
  3. ONNX Runtime已更新至1.16版本。有关发布说明的详细信息,请参阅GitHub
  4. 更新用户界面翻译。

MetaTrader 5网页端

  1. 修正密码更改和开设账户对话框的显示问题。
  2. 修正历史记录中止损值和止盈值的显示问题。修改相关级别后可能会出现错误。
  3. 在风险预警对话框中添加滚动条。
  4. 更新用户界面翻译。
  5. 其他改进和修复。
21 九月 2023
MetaTrader 5 build 3980:其他改进和修复

程序端

  1. 新交易报告的改进。修正总库存费值和交易品种利润图表的显示问题。
  2. 优化出入金页面。有关新平台与支付系统集成的更多详细信息,请参阅build 3950发布说明
  3. 优化整个平台(包括策略测试)财务运营的重新计算。现在,利润、预付款和许多其他参数的计算速度更快。
  4. 更新用户界面翻译。

MQL5

  1. 添加复数、向量<复数>和矩阵<复数>类型共轭方法。实现复杂的共轭运算。
    //+------------------------------------------------------------------+
    //| 脚本程序起始函数                          |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       complex a=1+1i;
       complex b=a.Conjugate();
       Print(a, "  ", b);
       /*
       (1,1)  (1,-1)
       */
    
       vectorc va= {0.1+0.1i, 0.2+0.2i, 0.3+0.3i};
       vectorc vb=va.Conjugate();
       Print(va, "  ", vb);
       /*
       [(0.1,0.1),(0.2,0.2),(0.3,0.3)]  [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
       */
    
       matrixc ma(2, 3);
       ma.Row(va, 0);
       ma.Row(vb, 1);
       matrixc mb=ma.Conjugate();
       Print(ma);
       Print(mb);
       /*
       [[(0.1,0.1),(0.2,0.2),(0.3,0.3)]
        [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]]
    
       [[(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
        [(0.1,0.1),(0.2,0.2),(0.3,0.3)]]
       */
       
       ma=mb.Transpose().Conjugate();
       Print(ma);
       /*
       [[(0.1,0.1),(0.1,-0.1)]
        [(0.2,0.2),(0.2,-0.2)]
        [(0.3,0.3),(0.3,-0.3)]]
       */
      }
  2. 添加处理“Sequence of maps”类型的ONNX模型输出。

    对于在输出层提供Map序列(ONNX_TYPE_MAP的ONNX_TYPE_SEQUENCE)的ONNX模型,应将动态或固定的结构数组作为输出参数传递。此结构的前两个字段必须与ONNX_TYPE_MAP键和值类型匹配,并且是固定数组或动态数组。

    考虑由以下Python脚本创建的iris.onnx模型:
     sys 导入 argv
    data_path=argv[0]
    last_index=data_path.rfind("\\")+1
    data_path=data_path[0:last_index]
    
     sklearn.datasets 导入 load_iris
    iris_dataset = load_iris()
     sklearn.model_selection 导入 train_test_split
    X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
     sklearn.neighbors 导入 KNeighborsClassifier
    knn = KNeighborsClassifier(n_neighbors=1)
    knn.fit(X_train, y_train)
    
    # 转换  ONNX格式
     skl2onnx 导入 convert_sklearn
     skl2onnx.common.data_types 导入 FloatTensorType
    initial_type = [('float_input', FloatTensorType([None, 4]))]
    onx = convert_sklearn(knn, initial_types=initial_type)
    path = data_path+"iris.onnx"
    with open(path, "wb") as f:
        f.write(onx.SerializeToString())
    在MetaEditor中打开创建的onnx文件:

    在MetaEditor中查看ONNX模型


    Map序列作为“output_probability”传递。它有一个INT64类型键(对应于MQL5中的long)和float类型值。要从此输出接收数据,请声明以下结构:
    struct MyMap
      {
       long              key[];
       float             value[];
      };
    这里我们使用具有适当类型的动态数组。在这种情况下,我们可以使用固定数组,因为这个模型的Map始终包含3个键+值对。

    由于返回Map序列,因此应将此类结构的数组作为参数传递,以接收来自output_probability输出的数据。根据特定模型的属性,该数组可以是动态数组可以是固定数组。示例:
    //--- 声明一个数组来接收来自输出层output_probability的数据
    MyMap output_probability[];
    
    ...
    
    //--- 模型运行
    OnnxRun(model,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);

MetaEditor

  1. 修正ONNX模型查看器中输出类型的显示问题。
14 九月 2023
MetaTrader 5 build 3950:在程序端出入金,更新的交易报告

程序端

  1. 添加对直接在客户端中进行交易账户出入金的结余操作的支持。

    我们将最常用的支付系统直接集成到MetaTrader 5平台中,使得交易商能够为交易者提供更高水平的服务。在入金或充值时,只需选择最适合您的付款方式即可完成交易。为了更加便捷,交易者可以保存所选银行卡,这样不用每次都输入银行卡的详细信息。交易商不会存储付款详细信息和银行卡号。用户输入的支付数据通过安全通道发送到用户选择的支付系统。

    新功能为交易者提供了无需离开客户端即可一键管理资金的机会。



  2. 全面改进交易历史报告。现在查看报告更加轻松。我们修正了信息展示方法,将枯燥的统计报告转换为互动式图表。这项工作仍在进行中,但您已经可以评估这些变化。

    要查看交易统计数据,请单击"查看"菜单中的"报告"。




    报告分为四个选项卡,每个选项卡都包含汇总信息:

    1. 摘要 — 交易摘要:账户数据、整体损益、入金和出金、结余、增长和股息图表等。
    2. 盈利/亏损 — 盈利和亏损交易的数据。参数按交易类型(手动交易、算法交易和复制交易)划分。结果可以从交易或资金的角度,按月份和年份进行分析。
    3. 买入持仓/卖出持仓 - 指定时间段的动态买卖比率,以及买入和卖出的盈利能力。
    4. 交易品种 - 按交易品种分析交易。在这里,您可以看到您在哪些交易品种上盈利或亏损、交易频率、交易图表以及货币量。

    新报告使您只需点击选项卡,就能直观地评估各方面的交易结果。直方图、图形和图表是交互式的,鼠标悬停时可提供更多信息。我们的设计人员精心设计布局,使报告尽可能简单明了。现在就来体验吧!


  3. 添加AVX2指令的使用(在CPU支持的情况下)。这样可以在启动程序端时更有效地利用CPU算力。现在,在安装或更新时,程序端本身将确定CPU架构并安装最适用的版本。在启动期间,程序端会向日志发送一条消息 (AVX/AVX2),显示程序端构建的指令集。
    Terminal	MetaTrader 5 x64 build 3914 started for MetaQuotes Software Corp.
    Terminal	Windows 10 build 19045, 20 x Intel Xeon  E5-2630 v4 @ 2.20GHz, AVX, 41 / 63 Gb memory, 58 / 280 Gb disk, UAC, GMT+2
    

    高级矢量扩展(AVX)是2008年针对Intel和AMD微处理器提出的x86指令集的扩展。进一步的发展带来AVX2和AVX-512 (2013)的出现。

  4. 除了X64和AVX上的两个版本MetaTrader 5程序端外,我们还发布了直接支持AVX2命令编译的第三个版本的桌面程序端。同时,ONNX模型现在也支持AVX2命令。
  5. 添加显示交易商必要监管文件的链接。现在您可以直接在客户端的“帮助/条款和条件”中从您的交易商获取所有必要的法律信息。



  6. 修正通过证书额外使用扩展授权情况下的2FA授权
  7. 修正在MacOS上工作时内部邮件消息的显示。
  8. 修正在Wine中工作时信号窗口的显示。
  9. 发布适用于Linux的MetaTrader 4和MetaTrader 5新安装程序。
  10. 在帮助中添加访问Linux和Mac程序端版本下载页的命令。为了方便交易者,我们在网站上专门创建一个部分,提供适用于所有平台以及浏览器交易的程序端版本。



  11. 修正将图像嵌入到内部邮件中的问题。
  12. 发布适用于Mac系统的MetaTrader 5程序端新安装程序,支持M1/M2处理器。由于要过渡到Wine 8.0.1,我们强烈建议您删除旧版本,安装新版本。当使用低于8.0.0 Wine版本时,程序端日志中会显示一条有关需要更新的消息。
  13. 在网络扫描菜单中添加“VPS主机加速”,指出到您交易服务器的ping值。这可以使您在租用内置VPS时清楚地看到网络延迟的减少情况。



  14. 加强最低密码复杂度的要求,即:

    • 密码长度 - 至少8个字符
    • 密码必须包含至少1个大小写字母,至少1个数字和至少1个特殊字符。

  15. 程序端日志中的可用链接。现在,当双击带有https链接的行时,用户将被转到他们的浏览器并打开链接。
  16. 修正在“市场报价”中搜索交易品种的问题。现在,首先按名字搜索交易品种,然后按其他字段搜索:描述、ISIN等。
  17. 修正在账户交易历史记录报告中计算结余时对交易利润的计算。在某些情况下,计算时没有考虑交易品种类型。

VPS主机

  1. 添加发送和运行在x64/AVX/AVX2命令集下编译的EX5程序的功能。内置VPS不支持AVX512程序。
  2. 内置VPS订阅位置增加到27个。现在,近距离服务器的可选范围更加广泛。

MQL5

  1. 添加对编译设置的管理,包括扩展处理器指令集的选择 - AVX、AVX2、AVX512和FMA3。

    现代CPU拥有一组高级指令,可以大幅度加快数学计算速度,但绝大多数现代程序并不使用这些功能。我们在MQL5语言编译器中添加了对这些指令的支持,从而可以更高效、更快速地生成代码。

    我们还添加了选择使用编译MQL5程序指令类型的功能。您可以在MetaEditor选项中指定单个程序的常规设置,并在项目设置中应用个人设置:



  2. 将ENUM_AVERAGE_MODE和ENUM_CLASSIFICATION_METRIC枚举添加到矩阵和向量方法中。
  3. 添加向量的设置(Set)方法。
  4. 修正OpenCL初始化 - 现在通过第一次实际使用来初始化,而不是通过加载包含OpenCL函数的MQL5程序来初始化。
  5. 修正调用SocketIsConnected函数时的错误。
  6. 修正卸载自定义指标时调用OnDeinit方法的延迟。
  7. 修正编译器错误,该错误导致indicator_label属性中的字符串长度计算不正确,从而导致图形对象的工具提示显示不正确。
  8. 修正宏主体中多行注释的使用。发生错误的宏示例:
    #define MACRO1 /*
    #define MACRO2 */
    void OnStart()
    {
    #ifdef MACRO2
        Print( 2 );
    #else
        Print( 1 );
    #endif
    }
  9. 修正MathAtan2函数的参数顺序。该顺序现在与C++中的类似函数匹配。
  10. 将TERMINAL_CPU_ARCHITECTURE新值添加到ENUM_TERMINAL_INFO_STRING枚举中。此外,还添加了__CPU_ARCHITECTURE__宏 — 用于获取运行程序端的计算机的CPU架构。使用示例:
    void OnStart()
      {
       Print("CPU name:         ",TerminalInfoString(TERMINAL_CPU_NAME));
       Print("CPU cores:        ",TerminalInfoInteger(TERMINAL_CPU_CORES));
       Print("CPU architecture: ",TerminalInfoString(TERMINAL_CPU_ARCHITECTURE));  
       Print("");
       Print("EX5 architecture: ",__CPU_ARCHITECTURE__);                            
      }
    
    CPU name:         12th Gen Intel Core i9-12900K
    CPU cores:        24
    CPU architecture: AVX2 + FMA3
    
    EX5 architecture: AVX

  11. 更改extern修饰符的行为。现在使用extern修饰符声明变量是变量预声明。

    新限制:
    1. 变量预声明不应该包含初始化。例如,在编译下面代码时,我们会得到以下错误“X - 不允许extern变量初始化(X - extern variable initialization is not allowed)”:
      extern int X=0;
      
      void OnStart()
        {
        }

    2. 在程序中声明"extern"变量时,不应使用"extern"关键字。例如,在编译下面代码时,我们会遇到"未解决的extern变量X(unresolved extern variable X)"错误:
      extern int X;
      
      void OnStart()
        {
        }

    3. 使用"extern"时,必须注意初始化顺序,因为因为变量可以在初始化之前被访问。例如,以下代码会在日志中显示"Y=0 X=5",因为变量Y的初始化发生在变量X的初始化之前:
      extern int X;
      int        Y=X;
      
      void OnStart(void)
        {
         Print("Y=",Y," X=",X);
        }
        
      int X=_Digits;

  12. ALGLIB库更新至版本3.19。ALGLIB是一个高性能的数值分析库,专用于数值方法和数据分析算法。

    我们修正了现有的库类来使用矩阵和向量,还添加了ALGLIB 3.19的新功能。所有的源代码都经过修改,并采用了单一的设计风格。ALGLIB库的源代码位于<程序端数据目录>\MQL5\Include\Math\Alglib。测试脚本位于MQL5\Scripts\UnitTests\Alglib。

    遗憾的是,MQL5 3.19版本的ALGLIB库更改非常明显,因此不存在向后兼容。如果代码使用MQL5 3.5版本的ALGLIB库,您需要明确检查您的程序并做出必要的更改。

    除了库本身之外,测试脚本也进行了更新 - 类的测试数量从62个增加到91个,接口的测试数量从143个增加到152个。因此,MetaTrader 5平台开发人员为交易者提供了更有效的解决方案:

    • MQL5语言,在速度方面的表现与C++不相上下;
    • SQLite数据库的内置处理、OpenCL计算、DirectX支持以及与Python集成;
    • 数学库,包括模糊逻辑统计和更新的ALGLIB

MetaEditor

  1. 添加AVX2指令的使用(在CPU支持的情况下)。
  2. 修正编译过程中导致冻结的错误。
  3. 改进调试时局部变量的显示。

Tester

  1. 添加AVX2指令的使用(在CPU支持的情况下)。

更新用户界面翻译。
修正崩溃日志中的错误报告。


MetaTrader 5网页端build 3950

  1. 在图表设置中添加买价的显示。



  2. 加速初始程序端加载。
  3. 添加更改密码的功能。
  4. 添加删除和保存密码的功能。
  5. 添加用于显示交易历史记录的自定义时段。
  6. 修正强制更改密码的问题。
  7. 修正计算差异 — 开盘价与止盈/止损水平之间的差异。


  8. 修正关闭所有订单/交易时报价停止的错误。
  9. 修正启用经济日历事件时并未显示在图表上的显示错误。
  10. 修正更改图表交易品种时指标重置的问题。
  11. 修正确认电话/邮箱时开设真实账户的错误。
  12. 添加新翻译并更正现有翻译。
8 六月 2023
MetaTrader 5 build 3800:预订或取消(Book or Cancel)订单、AI编码助手和增强ONNX支持

程序端

  1. 添加对新订单成交指令的支持 — 被动/预订或取消(BOC)。


    新订单成交指令 — 被动/预订或取消


    BOC指令意味着只能在市场深度(订单簿)中下订单。如果该订单可以在下单时立即成交,则该订单被取消。事实上,通过该指令可保证所下订单的价格不及当前市场价。BOC用于实现被动交易:保证下单后订单不立即执行,因此不会影响当前的流动性。此成交指令仅支持交易所执行模式中的limit订单和stop limit订单。

    新成交指令的可用性取决于交易商。

  2. 平台切换到使用Microsoft Edge WebView2来显示HTML内容。

    与之前的MSHTML相比,新组件通过提供对现代技术的访问进一步扩展了内容显示功能。WebView2的使用改善了一些平台部分的外观,提高了性能,并创建了一个响应更快的界面。特别是,新组件将影响市场、信号和VPS部分。
    Windows 10引入了对WebView2的全面支持。我们强烈建议所有用户升级到最新操作系统版本并安装所有可用更新。该平台将继续支持Windows 7和Wine下的MSHTML,但不会提供新功能。推荐的最低操作系统版本是Windows 10 21H2(build 19044,2021年11月)。

  3. 完善市场保障体系。现在,若要运行产品,用户必须在平台上获得购买产品时使用的相同MQL5账户的授权。该账户必须在工具\选项\社区部分指定:


    在平台设置中指定您的MQL5账户


    如果没有指定账户或者账户无效,产品将无法启动,平台日志中会显示如下信息:
    'ProductName' requires active MQL5 account in Tools->Options->Community
  4. 在历史部分快捷菜单中添加了概述命令。该命令可以打开该账户的交易报告


    打开交易报告的命令


  5. 修正双重身份验证对话框中的显示错误。如果程序端存在多个号码相同但在不同交易商开立的账户,账户连接表单可能无法显示动态密码字段。
  6. 实现通过DRAW_COLOR_CANDLES显示样式快速渲染指标。
  7. 修正交易报告创建错误。在某些情况下,图表上的利润和净值可能显示不正确。
  8. 在交易报告中添加成本显示。该值显示相对于交易品种的当前中点价格(中点点差成本)执行交易时发生的总成本。这是交易者因点差而损失的金额。该值的可用性取决于交易商。
  9. 更新用户界面的翻译。
  10. 改进在Wine系统下的稳定性,尤其在macOS系统。我们建议完全移除旧程序端并重新安装程序端:


  11. 加快程序包安装速度和更新下载过程。改进选择分配程序包时对用户计算机上AVX可用性的分析。
  12. 在Web协议中启用对TLS 1.3的支持。TLS1.0被认为已弃用且安全性低,因此已被禁用。
  13. 修正交易历史报告中代理手续费的会计核算。计算最终利润时可忽略相关交易。
  14. 修正无法在账户连接对话框中更改服务器的问题。当程序端中有多个来自不同交易商的相同号码的账户时,就会出现这个问题。
从此版本开始,安装程序将仅适用于64位平台版本。将停止对32位版本的支持。之前安装的32位平台版本将在2024年1月1日之后不再支持。

MQL5

  1. ENUM_STATISTICS枚举中添加了新STAT_COMPLEX_CRITERION值。使用该属性获取计算的复杂标准值,作为优化的结果。
  2. 改进RegressionMetric方法,用于根据传递的矩阵或向量计算回归指标。添加vector_true和matrix_true参数,用于传递评估预测数据质量的真值。
    double vector::RegressionMetric(
       const vector& vector_true,        // 真值
       const ENUM_REGRESSION_METRIC metric     // 指标
       );
     
    double matrix::RegressionMetric(
       const matrix& matrix_true,        // 真值
       const ENUM_REGRESSION_METRIC metric   // 指标
       );
     
    vector matrix::RegressionMetric(
       const matrix& matrix_true,               // 真值
       const ENUM_REGRESSION_METRIC metric,   // 指标
       const int                     axis   // 坐标轴
       );
  3. 添加LinearRegression方法。它返回一个向量/矩阵,其中包含为传递的向量/矩阵计算线性回归值。
    vector vector::LinearRegression();
     
    matrix matrix::LinearRegression(
       ENUM_MATRIX_AXIS axis=AXIS_NONE          // 沿其计算回归的轴线
       );
    示例:
    vector vector_a;
    //--- 用价格填写向量
    vector_a.CopyRates(_Symbol,_Period,COPY_RATES_CLOSE,1,100);
    //--- 获得线性回归
    vector vector_r=vector_a.LinearRegression();
    该结果在图形中可视化:


    可视化LinearRegression方法返回的结果


  4. 添加HasNan方法,该方法返回矩阵/向量中NaN值的数量。
    ulong vector::HasNan();
    ulong matrix::HasNan();
    当比较具有NaN值的相应元素对时,CompareCompareByDigits方法认为这些元素相等,而在通常的浮点数比较中,NaN != NaN。

  5. 修改用于操作ONNX(开放神经网络交换)模型的OnnxTypeInfo结构:

    struct OnnxTypeInfo
      {
       ENUM_ONNX_TYPE       type;      // 参数类型
       OnnxTensorTypeInfo   tensor;       // 张量描述
       OnnxMapTypeInfo      map;       // 地图描述
       OnnxSequenceTypeInfo sequence;        // 序列描述
      };

    使用新子结构在结构中指定数据类型:

    • OnnxTensorTypeInfo — 张量
    • OnnxMapTypeInfo — 地图
    • OnnxSequenceTypeInfo — 序列

    struct OnnxTensorTypeInfo
      {
       ENUM_ONNX_DATATYPE   data_type;       // data type in the tensor
       long            dimensions[];      // 元素数量
      };
    
    struct OnnxMapTypeInfo
      {
       ENUM_ONNX_DATA_TYPE  key_type;        // key type
       OnnxTypeInfo      type_info;      // 值类型
      };
    
    struct OnnxSequenceTypeInfo
      {
       OnnxTypeInfo       type_info;      // 序列中的数据类型
      };
    根据OnnxTypeInfo::type(ONNX_TYPE_TENSOR、ONNX_TYPE_MAP或ONNX_TYPE_SEQUENCE),填写相关子结构。

  6. 改进对ONNX模型的支持。
  7. 添加CopyIndicatorBuffer方法,可以将指标缓冲区数据获取到 向量中。
    bool vector::CopyIndicatorBuffer(long indicator_handle,ulong buffer_index,ulong start_pos,ulong count);
    bool vector::CopyIndicatorBuffer(long indicator_handle,ulong buffer_index,datetime start_time,ulong count);
    bool vector::CopyIndicatorBuffer(long indicator_handle,ulong buffer_index,datetime start_time,datetime stop_time);
  8. 修正FrameAddFrameNext方法中具有两个或更多维度的数组的操作。
  9. 修正CRedBlackTree::Remove标准程序库的方法。
  10. 实现模糊逻辑库中的修复。

MetaEditor

  1. 添加与高级自动编码助手AI Assistant的集成。其操作基于OpenAI模型。输入注释或函数的一部分并发送提示。神经网络将分析提示并提供编码选项来实现这一想法。

    根据文件类型,字符串“MQL5语言”、“Python语言”或“C++语言”会自动插入到每个提示开头。因此,神经网络将以所需的语言提供结果。

    AI Assistant目前是免费的,并且已在编辑器中启用。在Tools(工具)\ Options(选项)\ AI Assistant 下有几个选项可用:


    AI Assistant设置


    付款设置:

    • 使用您的MQL5账户:此选项目前免费提供。稍后,您将能够直接从您的MQL5账户余额中支付订阅费用。
    • 如果您已购买订阅并拥有相关密钥,请使用OpenAI密钥。

    提示设置:

    • 模型 — 一个将处理您的请求的神经网络。目前可用text-davinci-003和gpt-3.5-turbo。不久将添加对gpt-4的支持。
    • 最大令牌数 — 模型可以响应提示返回的文本单元数。
    • 可变性 — 影响神经网络遵循提示的严格程度。值越大,结果随机性越大。该选项对应于OpenAI模型中的温度参数。

  2. 添加查看ONNX模型属性的功能。

    您可以直接在编辑器中查看*.onnx文件的内容。例如,在Toolbox \ Public Projects下找到项目ONNX.Price.Prediction并在快捷菜单中选择加入。该项目将下载到您的计算机并显示在导航器中。


    直接在MetaEditor中打开ONNX模型


  3. 添加使用 Netron可视化机器学习模型和神经网络的功能。该查看器支持多种流行模型,包括ONNX、TensorFlow Lite、Caffe、Keras和ncnn等。

    要查看模型,请在导航器中选择其文件并单击“在Netron中打开”。如果未安装此实用程序,将打开其GitHub页面 ,您可以根据您的操作系统从中下载相关安装程序。例如,使用适用于Windows的 Netron-Setup-XXXexe。如果程序已安装,模型将立即打开,以便从导航器中查看。


    使用Netron的可视化机器学习模型


    支持的格式:

    • armnn, caffemodel, circle, ckpt, cmf, dlc, dnn, h5, har, hd5, hdf5, hn, keras, kmodel,
    • lite, mar, meta, mge, mlmodel, mlnet, mlpackage, mnn, model, nb, ngf, nn, nnp,
    • om, onnx, ort, paddle, param, pb, pbtxt, pdiparams, pdmodel, pdopt, pdparams, prototxt, pt, pth, ptl,
    • rknn, t7, tfl, tflite, tmfile, tm, tnnproto, torchscript, uff, xmodel

  4. 更新用户界面的翻译。

Tester

  1. 修正测试报告中“平均亏损交易”指标的计算。以前,如果对此类交易收取手续费,计算可能会错误地包括进场交易。
  2. 改进策略测试中的自定义手续费的选项。要设置交易品种,请指定其名称而不是整个路径。
  3. 更新策略测试中的图标。新隐喻将使它们更容易理解。

修正崩溃日志中的错误报告。


网页端

  1. 改进交易历史部分:

    • 交易历史中添加结余操作的展示,如存取款、手续费、和调整等。
    • 在交易历史中添加总计显示:结余、盈利、手续费、存款、取款和订单数量等。
    • 添加在移动版本中按深度对操作进行排序和过滤历史记录的功能。


    更新交易历史部分


  2. 加强交易品种合约规范。添加了以下信息:交易量限制、报价大小和价值、初始预付款和锁仓预付款。
  3. 改进配色方案:

    • 挂单在图表上以灰色显示。持仓颜色取决于持仓方向:红色代表卖出,蓝色代表买入。新颜色提供了更便利的导航,尤其是在图表上显示大量操作的时候。
    • 当查看/编辑持仓时,只有这个持仓和它的水平高亮显示,而所有其他持仓和订单变成灰色,水平从价格标尺中隐藏。因此,将更容易管理单独的操作。
    • 止损颜色已从红色更改为橙色,以避免与卖出持仓混淆。
    • 改进图表上指示平仓时间的图标。绿色图标用于止盈平仓,红色图标用于止损平仓。

  4. 添加阿拉伯语、保加利亚语、越南语、希腊语、印度尼西亚语、马来语、荷兰语、波斯语、波兰语、泰语、乌克兰语和印地语的界面翻译。该网页端现已提供24种语言。
  5. 修正土耳其语的用户界面翻译。
  6. 修正在网页端移动版挂单修改删除问题。
  7. 修正图表上的“关闭市场”工具提示。
  8. 修正交易对话框中平仓按键的利润显示。错误通常发生在部分平仓期间。
  9. 修正图表交易通知的显示。
  10. 修正在市场深度中使用箭头修改交易量的问题。
  11. 修正在某些情况下可能导致运行指标设置被重置的错误。
  12. 修正开设新账户时的用户名检查。以前,认为名称中的撇号是错误的。
  13. 修正重新报价的处理。在某些情况下,可能不会显示包含重新报价的对话框。
  14. 修正Ichimoku Kinko Hyo指标的显示。Chikou-Span、Up Kumo和Down Kumo线将以正确的偏移量显示。
  15. 修正在开设新订单时初始预付款的检查问题。该问题通常出现在锁仓持仓账户系统。
  16. 修正合约规范窗口中的滚动问题。

MQL5.community

  1. MQL5云网络网站已整体重新设计:https://cloud.mql5.com

    了解如何使用全球数千台计算机的处理能力来优化您的交易策略。通过MQL5云网络,即使最繁重的计算也可以在几分钟内完成。访问该网站并了解如何参与该网络以及如何通过提供您的计算机资源来获得收入。


    访问更新的MQL5云网络网站


  2. 改进市场 产品中的屏幕截图部分。作者最高可以上传1920*1800像素的图片来演示应用程序的工作原理。屏幕截图库也已更新。滚动播放显示图像缩略图,单击它们可打开全尺寸图像。


    改进市场中的屏幕截图部分


  3. 自由职业者服务部分的改进。现在用户在首次下单时将收到更多提示:

    • 需求规范示例和添加提醒
    • 订单创建说明
    • 模板使用技巧

    这些提示可以帮助您创建订单并获得所需的结果。


    自由职业者服务的改进


24 三月 2023
MetaTrader 5 build 3660:其他改进和修复

客户端

  1. 修正偶尔出现的不正确的平台日志创建。
  2. 更新用户界面的翻译。

MQL5

  • 修正对全局变量的检查。当在不同的命名空间声明相同的变量时,编译器会给出一个错误的警告,即该变量已经被声明。

网页端

  1. 添加葡萄牙语的用户界面翻译。该网页端现已提供12种语言。
  2. 修正添加标准偏差指标的对话框。
  3. 其他小问题的修正和改进。
17 三月 2023
MetaTrader 5 build 3640:11种语言的网页端

网页端

  1. 添加10种常用语言的UI翻译:简体中文和繁体中文、法语、德语、意大利语、日语、韩语、西班牙语、土耳其语和俄语。此语言列表将在未来版本中进一步增加。要切换语言,请使用相关菜单:


    网页端界面提供11种语言


  2. 优化与交易服务器的连接机制。

MQL5

  • MQL5:分别为CopyTicksCopyTicksRangeCopyRates方法添加COPY_TICKS_VERTICAL和COPY_RATES_VERTICAL标识。

    默认情况下,报价和函数沿水平轴复制到矩阵,这意味着数据添加到右侧,在行尾。在练习的ONNX模型运行任务中,这样的矩阵需要被转置以提供输入数据:

    const long   ExtOutputShape[] = {1,1};    // 模型输出形状
    const long   ExtInputShape [] = {1,10,4}; // 模型输入形状
    #resource "Python/model.onnx" as uchar ExtModel[]// 作为资源的模型
    //+------------------------------------------------------------------+
    //| 脚本程序起始函数                         |
    //+------------------------------------------------------------------+
    int OnStart(void)
      {
       matrix rates;
    //--- 获取10个柱状图
       if(!rates.CopyRates("EURUSD",PERIOD_H1,COPY_RATES_OHLC,2,10))
          return(-1);
    //--- 输入一组OHLC向量
       matrix x_norm=rates.Transpose();
       vector m=x_norm.Mean(0);               
       vector s=x_norm.Std(0);
       matrix mm(10,4);
       matrix ms(10,4);

    通过在调用该方法时指定附加标识COPY_RATES_VERTICALCOPY_TICKS_VERTICAL用于报价),可以消除额外的数据转置操作:

    //+------------------------------------------------------------------+
    //| 脚本程序起始函数                         |
    //+------------------------------------------------------------------+
    int OnStart(void)
      {
       matrix rates;
    //--- 获取10个柱状图
       if(!rates.CopyRates("EURUSD",PERIOD_H1,COPY_RATES_OHLC|COPY_RATES_VERTICAL,2,10))
          return(-1);
    //--- 输入一组OHLC向量
  • ENUM_CHART_PROPERTY_INTEGER枚举中的新值 — CHART_SHOW_TRADE_HISTORY。该属性控制图表上交易历史的交易显示。使用ChartGetIntegerChartSetInteger函数获取和设置属性。有关图表上交易显示的更多详细信息,请参阅平台文档

MetaEditor

  • 修正在某些条件下文件编译过程中可能发生的界面冻结。

客户端

  • 修正崩溃日志中的错误报告。
10 三月 2023
MetaTrader 5 build 3620:网页端改进,ONNX支持和MQL5快速矩阵乘法

程序端

  1. 修正交易报告中的总利润计算的问题。
  2. 更新通过市场报价窗口获取的交易品种的基本数据
  3. 修正交易品种在Linux系统中Wine 7.0.1下启动的问题。
  4. 修正通过搜索栏将交易品种添加到市场深度中的问题。通过描述找到的交易品种无法通过点击其行来添加到列表中。

MQL5

  1. 添加对ONNX模型(开放式神经网络交换)操作的支持。

    ONNX是一种机器学习模型的开源格式。许多平台支持这种格式,包括Chainer, Caffee2PyTorch。使用专门的工具创建ONNX模型,将其整合到您的MQL5应用程序,并使用它来做出交易决策。

    所有支持的功能描述都在文件中提供。在MetaEditor公共项目中提供了一个测试ONNX模型的示例。在“工具箱/公共项目”中找到ONNX.Price.Prediction项目,在快捷菜单中选择加入。该项目将下载到您的计算机,并显示在导航器中:


    在公共项目中使用ONNX模型的示例


    编译该项目并在EURUSD H1上运行以查看结果。

    除了模型和运行模型的MQL5代码外,该项目还包括PricePredictionTraining.py Python脚本。该脚本显示了您如何自己创建一个ONNX模型。要运行该脚本,请在计算机上安装Python,并从提示行安装所需的模块:

    python.exe -m pip install --upgrade pip
    python -m pip install --upgrade tensorflow
    python -m pip install --upgrade pandas
    python -m pip install --upgrade scikit-learn
    python -m pip install --upgrade matplotlib
    python -m pip install --upgrade tqdm
    python -m pip install --upgrade metatrader5
    python -m pip install --upgrade onnx==1.12
    python -m pip install --upgrade tf2onnx
    关于如何使用ONNX的说明可在文件中获得。

  2. 添加对一般矩阵乘法(GeMM)的支持。该算法通过并行化任务和优化使用L1/L2/L3缓存来加速某些处理器类型的计算。计算速度可与广受欢迎的软件包相媲美,如Math Kernel Library (MKL)和OpenBLAS。详细的对比测试即将公布。

    matrix::GeMM方法目前支持新算法。如果您的处理器支持AVXFMA指令(2013年后发布的大多数处理器都支持这些指令),该算法将被自动启用。

  3. 添加将矩阵和向量传输到DLL的功能。这使得能够从外部变量导入使用相关类型的函数

    矩阵和向量作为指向缓冲区的指针传递给DLL。例如,要传递一个float类型的矩阵,从DLL导出的函数对应的参数必须带一个float类型的缓冲区指针。示例:

    MQL5
    #import "mmlib.dll"
    bool sgemm(uint flags,matrix<float> &C,const matrix<float> &A,const matrix<float> &B,ulong M,ulong N,ulong K,float alpha,float beta);
    #import
    C++
    extern "C" __declspec(dllexport) bool sgemm(UINT flags,float *C,const float *A,const float *B,UINT64 M,UINT64 N,UINT64 K,float alpha,float beta)
    除了缓冲区之外,您还应该传递矩阵和向量大小以进行正确的处理。

  4. 添加新CopySeries函数,用于将同步时间周期从MqlRates复制到单独的数组中。

    CopySeries函数允许在一次调用中只获取必要的时间周期到不同的指定数组中,同时所有的时间周期数据将被同步。这意味着结果数组中特定索引N的所有值将属于指定交易品种/时间周期上的同一柱形图。因此,程序员无需另外通过柱形图开盘时间来同步接收的时间序列。

    与将完整的时间周期集作为MqlRates数组返回的CopyRates不同,CopySeries函数允许将特定的所需时间周期获取到单独的数组中。这可以通过指定一个标识组合来选择时间序列的类型来实现。传递到函数的数组顺序必须与MqlRates结构中字段的顺序相匹配:

    struct MqlRates
      {
       datetime time;         // 期初
       double   open;         // 开仓价
       double   high;         // 该时间段的最高价
       double   low;          // 该时间段的最低价
       double   close;        // 平仓价
       long     tick_volume;  // 报价量
       int      spread;       // 点差
       long     real_volume;  // 交易量
      }

    因此,如果您需要获取当前交易品种/时间帧的最近100柱形图的"time","close"和"real_volume"时间周期的值,您应该使用以下调用:

    datetime  time[];
    double    close[];
    long      volume[];
    CopySeries(NULL,0,0,100,COPY_RATES_TIME|COPY_RATES_CLOSE|COPY_RATES_VOLUME_REAL,time,close,volume);
    

    数组"time,close,volume"顺序必须与MqlRates结构中字段的顺序相匹配。忽略rates_mask中值的顺序。掩码可以如下所示:

    COPY_RATES_VOLUME_REAL|COPY_RATES_TIME|COPY_RATES_CLOSE

    示例

    //--- 输入参数
    input datetime InpDateFrom=D'2022.01.01 00:00:00';
    input datetime InpDateTo  =D'2023.01.01 00:00:00';
    input uint     InpCount   =20;
    //+------------------------------------------------------------------+
    //| 脚本程序起始函数                         |
    //+------------------------------------------------------------------+
    void OnStart(void)
      {
    //--- 从Rates结构获取时间周期的数组
       double   open[];
       double   close[];
       float    closef[];
       datetime time1[], time2[];
    //---将平仓价请求到double数组
       ResetLastError();
       int res1=CopySeries(NULL, PERIOD_CURRENT, 0, InpCount,
                           COPY_RATES_TIME|COPY_RATES_CLOSE, time1, close);
       PrintFormat("1. CopySeries  returns %d values. Error code=%d", res1, GetLastError());
       ArrayPrint(close);
       
    
    //--- 现在还请求开仓价;为平仓价使用float数组
       ResetLastError();
       int res2=CopySeries(NULL, PERIOD_CURRENT, 0, InpCount,
                           COPY_RATES_TIME|COPY_RATES_CLOSE|COPY_RATES_OPEN, time2, open, closef);
       PrintFormat("2. CopySeries  returns %d values. Error code=%d", res2, GetLastError());
       ArrayPrint(closef);
    //--- 对比接收的数据
       if((res1==res2) && (time1[0]==time2[0]))
         {
          Print("  | Time             |    Open      | Close double | Close float |");
          for(int i=0; i<10; i++)
            {
             PrintFormat("%d | %s |   %.5f    |   %.5f    |   %.5f   |",
                         i, TimeToString(time1[i]), open[i], close[i], closef[i]);
            }
         }
    /*  Result
            1. CopySeries  returns 0 values. Error code=0
            [ 0] 1.06722 1.06733 1.06653 1.06520 1.06573 1.06649 1.06694 1.06675 1.06684 1.06604
            [10] 1.06514 1.06557 1.06456 1.06481 1.06414 1.06394 1.06364 1.06386 1.06239 1.06247
            2. CopySeries  returns 0 values. Error code=0
            [ 0] 1.06722 1.06733 1.06653 1.06520 1.06573 1.06649 1.06694 1.06675 1.06684 1.06604
            [10] 1.06514 1.06557 1.06456 1.06481 1.06414 1.06394 1.06364 1.06386 1.06239 1.06247
             | Time       |   Open      |     Close double   |     Close float |
            0 | 2023.03.01 17:00 |   1.06660    |   1.06722    |   1.06722   |
            1 | 2023.03.01 18:00 |   1.06722    |   1.06733    |   1.06733   |
            2 | 2023.03.01 19:00 |   1.06734    |   1.06653    |   1.06653   |
            3 | 2023.03.01 20:00 |   1.06654    |   1.06520    |   1.06520   |
            4 | 2023.03.01 21:00 |   1.06520    |   1.06573    |   1.06573   |
            5 | 2023.03.01 22:00 |   1.06572    |   1.06649    |   1.06649   |
            6 | 2023.03.01 23:00 |   1.06649    |   1.06694    |   1.06694   |
            7 | 2023.03.02 00:00 |   1.06683    |   1.06675    |   1.06675   |
            8 | 2023.03.02 01:00 |   1.06675    |   1.06684    |   1.06684   |
            9 | 2023.03.02 02:00 |   1.06687    |   1.06604    |   1.06604   |
    */
      }
  5. 修正OrderSend函数的操作。如果在多个平台上同时使用同一个账户,该函数请求可能会返回错误的订单。
  6. 修正EX5程序库的导入。如果导入程序库的名称与导入的文件名称一致,则发生错误。

MetaEditor

  1. 添加向共享项目成员发送推送通知的功能。新选项可以通知用户有关项目设置和文件的更改。要启用通知,请在您的MQL5.community个人资料的“设置\安全”部分输入您的MetaQuotes ID


    关于项目更新的推送通知


  2. 更新导航器中的文件图标。全新、简单的隐喻将使它们更容易理解。

Tester

  1. 修正导致输入字符串参数在包含“|”字符时被截断的错误。

MetaTrader 5网页端build 3620

  1. 为网页端界面添加现有的颜色模板。模板会影响图表柱形图和线型图的显示,以及市场报价和账户财务报表中的价格。我们设计团队根据您的建议和传统颜色组合准备了颜色模板预设。


    新网页端颜色模板


  2. 重新设计交易品种规格窗口。为了便于查看,交易品种数据已重新排列成逻辑块。


    更新交易品种规格窗口


  3. 修正通过网页端开设真实账户的问题。服务器可能会在填写注册表后返回错误。
  4. 修正交易对话框中的错误。如果用户在持仓修改对话框打开时通过按下工具箱窗口中的X按键关闭持仓,则对话框内容不会重置。更新后,在这种情况下对话框将自动重置为新的下单模式。
  5. 修正账户管理对话框中服务器字段的显示。
  6. 修正工具栏上当前时间周期的显示。
  7. 修正在交易对话框中基础资产单位的交易量显示。
  8. 修正持仓止损和止盈水平的修改。修改在某些情况下其中一个值可能会重置第二个值。
  9. 修正投资风险提示的显示。
6 三月 2023
MetaTrader 5 iPhone/iPad:改进图表交易和分析功能
  1. 添加在图表下stop order订单和stop-limit order订单的功能。

    早期版本仅提供limit order订单。通过连续按下图表底部面板中的按键来选择所需的类型。


    在图表下stop order订单和stop-limit order订单


  2. 添加从图表访问平仓或删除挂单功能。在图表上选择持仓或订单水平,相关命令将出现在下方的交易面板中:


    从图表管理持仓和订单


  3. 改进移动价格图表右边框的功能。若要更改移位,只需将图表滚动到最后一个价格,直到出现垂直分隔符。接下来,拖动图表底部标尺的三角形:


    通过拖动底部标尺的三角形来更改图表移位


  4. 添加在图表上复制分析对象的功能。这可以更快地进行图表标记。长按打开对象菜单并选择“复制”:

    创建分析对象的副本


  5. 添加管理不同时间周期内指标显示的功能。如果该指标不适用于某些图表周期,则可以将其隐藏以释放屏幕上的空间供其他分析工具使用。


    管理不同时间周期内的指标显示


  6. 在交易品种规格窗口中添加交易品种手续费的显示。


    在交易品种规格中查找手续费金额


  7. 添加密码恢复链接。账户密码只能通过相关交易商恢复。该链接显示了交易商的联系方式。


    帮助恢复密码


  8. 添加分享MQL5.community频道链接的功能。


    通过应用程序分享您的频道链接


  9. 改进连接到具有交易限制的账户时的用户体验。

    交易可能因各种原因受到限制:只读模式连接;交易协议未被接受;交易商验证尚未完成等。此前,没有解释交易功能不可用的原因。

    现在,如果交易被限制,“交易”部分的下单按键将显示为灰色。按下此键,会显示相关信息和建议。


    交易受限时的有用信息


  10. 通过用于高级身份验证的SSL证书改进工作流程。

    现在,当用户连接到高级身份验证的账户时,该应用程序将显示所需操作的简要说明。


    改进SSL证书工作


    证书可以从PFX文件导入。在文件应用程序中保存必要的文件,然后在开始对话框中使用导入功能。

    还可以将证书导入文件,这样就可以在其他设备上使用证书。为此,请进入“设置”\“证书”并在证书菜单中选择“导出”。

  11. 价格图表的构建已转移到Metal,这是Apple设备中使用的最新一代图形API。这可以明显提高图表、指标和对象的渲染性能。
  12. 修正市场深度中止损和止盈水平的替换。对于FIFO账户,止损水平将根据相同交易品种的现有未结持仓的止损水平自动设置。这个过程要求遵循FIFO规则。
  13. 修正重新报价。当返回重新报价时,用户有很短的时间来接受或拒绝新价格。如果在要求的时间范围内没有采取任何行动,请求将被自动拒绝,重新报价窗口将自动关闭。
  14. 修正在使用深色界面主题时“图表”部分的时间显示问题。
16 十二月 2022
MetaTrader 5 build 3550:改进和修复

客户端

  1. 程序端:更新用户界面的翻译。
  2. 基于崩溃日志进行修复。

网页端

上一页12345678910111213141516