---
title: "MetaTrader 5 build 3800：预订或取消(Book or Cancel)订单、AI编码助手和增强ONNX支持 - 更新历史"
description: "在新版本中，我们增加了对Book or Cancel订单的支持。此类订单只能在市场深度下达，但不能立即成交。它们用于实现被动交易所交易。 - 更新历史"
image: "https://www.metatrader5.com/c/17/1/terminal-boc.png"
url: "https://www.metatrader5.com/zh/releasenotes/terminal/2286"
---

# MetaTrader 5 build 3800：预订或取消(Book or Cancel)订单、AI编码助手和增强ONNX支持

## 在新版本中，我们增加了对Book or Cancel订单的支持。此类订单只能在市场深度下达，但不能立即成交。它们用于实现被动交易所交易。

8 六月 2023

### 程序端

1. 添加对新[订单成交指令](https://www.metatrader5.com/zh/terminal/help/trading/general_concept#fill_policy)的支持 — 被动/预订或取消(BOC)。

   ![新订单成交指令 — 被动/预订或取消](https://www.metatrader5.com/c/17/1/terminal-boc.png)

    BOC指令意味着只能在市场深度（订单簿）中下订单。如果该订单可以在下单时立即成交，则该订单被取消。事实上，通过该指令可保证所下订单的价格不及当前市场价。BOC用于实现被动交易：保证下单后订单不立即执行，因此不会影响当前的流动性。此成交指令仅支持[交易所执行](https://www.metatrader5.com/zh/terminal/help/trading/general_concept#execution_type)模式中的limit订单和stop limit订单。 新成交指令的可用性取决于交易商。
2. 平台切换到使用[Microsoft Edge WebView2](https://www.mql5.com/go?link=https://developer.microsoft.com/en-us/microsoft-edge/webview2/)来显示HTML内容。 与之前的MSHTML相比，新组件通过提供对现代技术的访问进一步扩展了内容显示功能。WebView2的使用改善了一些平台部分的外观，提高了性能，并创建了一个响应更快的界面。特别是，新组件将影响市场、信号和VPS部分。

   > Windows 10引入了对WebView2的全面支持。我们强烈建议所有用户升级到最新操作系统版本并安装所有可用更新。该平台将继续支持Windows 7和Wine下的MSHTML，但不会提供新功能。推荐的最低操作系统版本是Windows 10 21H2（build 19044，2021年11月）。
3. 完善[市场](https://www.mql5.com/zh/market)保障体系。现在，若要运行产品，用户必须在平台上获得购买产品时使用的相同MQL5账户的授权。该账户必须在工具\选项\社区部分指定：

   ![在平台设置中指定您的MQL5账户](https://www.metatrader5.com/c/17/1/terminal-settings.png)

    如果没有指定账户或者账户无效，产品将无法启动，平台日志中会显示如下信息：

    'ProductName' requires active MQL5 account in Tools->Options->Community
4. 在历史部分快捷菜单中添加了概述命令。该命令可以打开该账户的[交易报告](https://www.metatrader5.com/zh/releasenotes/terminal/2251) ：

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

      - [MetaTrader 5 macOS](https://download.terminal.free/cdn/web/metaquotes.ltd/mt5/MetaTrader5.pkg.zip)
      - [MetaTrader 5 Linux](https://www.mql5.com/zh/articles/625)
11. 加快程序包安装速度和更新下载过程。改进选择分配程序包时对用户计算机上[AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions)可用性的分析。
12. 在Web协议中启用对TLS 1.3的支持。TLS1.0被认为已弃用且安全性低，因此已被禁用。
13. 修正交易历史报告中代理手续费的会计核算。计算最终利润时可忽略相关交易。
14. 修正无法在账户连接对话框中更改服务器的问题。当程序端中有多个来自不同交易商的相同号码的账户时，就会出现这个问题。

> 从此版本开始，安装程序将仅适用于64位平台版本。将停止对32位版本的支持。之前安装的32位平台版本将在2024年1月1日之后不再支持。

### MQL5

1. 在[ENUM_STATISTICS](https://www.mql5.com/zh/docs/constants/environment_state/statistics)枚举中添加了新STAT_COMPLEX_CRITERION值。使用该属性获取计算的[复杂标准](https://www.metatrader5.com/zh/terminal/help/algotrading/optimization_types#criterion)值，作为优化的结果。
2. 改进[RegressionMetric](https://www.mql5.com/zh/docs/matrix/matrix_machine_learning/matrix_regressionmetrics)方法，用于根据传递的矩阵或向量计算回归指标。添加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](https://www.mql5.com/zh/docs/matrix/matrix_statistics/matrix_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方法返回的结果](https://www.metatrader5.com/c/17/1/linearregression.png)
4. 添加[HasNan](https://www.mql5.com/zh/docs/matrix/matrix_manipulations/matrix_hasnan)方法，该方法返回矩阵/向量中[NaN](https://www.mql5.com/zh/docs/basis/types/double)值的数量。

   ```
   ulong vector::HasNan(); ulong matrix::HasNan();
   ```

   当比较具有NaN值的相应元素对时，[Compare](https://www.mql5.com/zh/docs/matrix/matrix_manipulations/matrix_compare)和[CompareByDigits](https://www.mql5.com/zh/docs/matrix/matrix_manipulations/matrix_comparebydigits)方法认为这些元素相等，而在通常的浮点数比较中，NaN != NaN。
5. 修改用于操作[ONNX](https://www.mql5.com/zh/docs/onnx)（开放神经网络交换）模型的[OnnxTypeInfo](https://www.mql5.com/zh/docs/onnx/onnx_structures#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方法，可以将指标缓冲区数据获取到 [向量](https://www.mql5.com/zh/docs/matrix)中。

   ```
   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. 修正[FrameAdd](https://www.mql5.com/zh/docs/optimization_frames/frameadd)和[FrameNext](https://www.mql5.com/zh/docs/optimization_frames/framenext)方法中具有两个或更多维度的数组的操作。
9. 修正[CRedBlackTree::Remove](https://www.mql5.com/zh/docs/standardlibrary/generic/credblacktree/credblacktreeremove)标准程序库的方法。
10. 实现[模糊逻辑库](https://www.mql5.com/zh/docs/standardlibrary/mathematics/fuzzy_logic)中的修复。

### MetaEditor

1. 添加与高级自动编码助手AI Assistant的集成。其操作基于[OpenAI模型](https://www.mql5.com/go?link=https://openai.com/blog/openai-codex)。输入注释或函数的一部分并发送提示。神经网络将分析提示并提供编码选项来实现这一想法。 根据文件类型，字符串“MQL5语言”、“Python语言”或“C++语言”会自动插入到每个提示开头。因此，神经网络将以所需的语言提供结果。 AI Assistant目前是免费的，并且已在编辑器中启用。在Tools（工具）\ Options（选项）\ AI Assistant 下有几个选项可用：

   ![AI Assistant设置](https://www.metatrader5.com/c/17/1/ai-assistant-settings.png)

   付款设置：

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

    提示设置：

     - 模型 — 一个将处理您的请求的神经网络。目前可用text-davinci-003和gpt-3.5-turbo。不久将添加对gpt-4的支持。
     - 最大令牌数 — 模型可以响应提示返回的文本单元数。
     - 可变性 — 影响神经网络遵循提示的严格程度。值越大，结果随机性越大。该选项对应于OpenAI模型中的[温度](https://www.mql5.com/go?link=https://platform.openai.com/docs/api-reference/chat#classifications/create-temperature)参数。
2. 添加查看ONNX模型属性的功能。 您可以直接在编辑器中查看*.onnx文件的内容。例如，在Toolbox \ Public Projects下找到项目ONNX.Price.Prediction并在快捷菜单中选择加入。该项目将下载到您的计算机并显示在导航器中。

   ![直接在MetaEditor中打开ONNX模型](https://www.metatrader5.com/c/17/1/onnx-view.png)
3. 添加使用 [Netron](https://www.mql5.com/go?link=https://github.com/lutzroeder/netron)可视化机器学习模型和神经网络的功能。该查看器支持多种流行模型，包括ONNX、TensorFlow Lite、Caffe、Keras和ncnn等。 要查看模型，请在导航器中选择其文件并单击“在Netron中打开”。如果未安装此实用程序，将打开其[GitHub页面](https://www.mql5.com/go?link=https://github.com/lutzroeder/netron/releases) ，您可以根据您的操作系统从中下载相关安装程序。例如，使用适用于Windows的 Netron-Setup-XXXexe。如果程序已安装，模型将立即打开，以便从导航器中查看。

   ![使用Netron的可视化机器学习模型](https://www.metatrader5.com/c/17/1/netron.png)

   支持的格式：

     - 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. 修正[测试报告](https://www.metatrader5.com/zh/terminal/help/algotrading/testing_report)中“平均亏损交易”指标的计算。以前，如果对此类交易收取手续费，计算可能会错误地包括进场交易。
2. 改进策略测试中的[自定义手续费](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#extended_settings)的选项。要设置交易品种，请指定其名称而不是整个路径。
3. 更新策略测试中的图标。新隐喻将使它们更容易理解。

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

### 网页端

1. 改进交易历史部分：

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

   ![更新交易历史部分](https://www.metatrader5.com/c/17/1/webterminal-history.png)
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](https://cloud.mql5.com/)。 了解如何使用全球数千台计算机的处理能力来优化您的交易策略。通过MQL5云网络，即使最繁重的计算也可以在几分钟内完成。访问该网站并了解如何参与该网络以及如何通过提供您的计算机资源来获得收入。

   ![访问更新的MQL5云网络网站](https://www.metatrader5.com/c/17/1/cloud-website.png)
2. 改进[市场](https://www.mql5.com/zh/market) 产品中的屏幕截图部分。作者最高可以上传1920*1800像素的图片来演示应用程序的工作原理。屏幕截图库也已更新。滚动播放显示图像缩略图，单击它们可打开全尺寸图像。

   ![改进市场中的屏幕截图部分](https://www.metatrader5.com/c/17/1/market.png)
3. [自由职业者服务](https://www.mql5.com/zh/job)部分的改进。现在用户在首次下单时将收到更多提示：

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

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

   ![自由职业者服务的改进](https://www.metatrader5.com/c/17/1/freelance.png)

**请参阅前面的新闻：**

- [MetaTrader 5 build 3660：其他改进和修复](https://www.metatrader5.com/zh/releasenotes/terminal/2281)
- [MetaTrader 5 build 3640：11种语言的网页端](https://www.metatrader5.com/zh/releasenotes/terminal/2279)
- [MetaTrader 5 build 3620：网页端改进，ONNX支持和MQL5快速矩阵乘法](https://www.metatrader5.com/zh/releasenotes/terminal/2278)
- [MetaTrader 5 iPhone/iPad：改进图表交易和分析功能](https://www.metatrader5.com/zh/releasenotes/terminal/2277)
- [MetaTrader 5 build 3550：改进和修复](https://www.metatrader5.com/zh/releasenotes/terminal/2265)
