---
title: "新版MetaTrader 5平台Build 2340：在Tester中管理账户设置，并扩展Python集成 - 更新历史"
description: "添加使用SQLite数据库的新功能。 在前一次平台更新中，我们直接从MQL5引入了对SQLite数据库操作的支持。主要功能可通过MetaEditor用户界面获得 - 更新历史"
image: "https://www.metatrader5.com/c/17/0/6_disable_python_script_trade__7.png"
url: "https://www.metatrader5.com/zh/releasenotes/terminal/2125"
---

# 新版MetaTrader 5平台Build 2340：在Tester中管理账户设置，并扩展Python集成

## 添加使用SQLite数据库的新功能。 在前一次平台更新中，我们直接从MQL5引入了对SQLite数据库操作的支持。主要功能可通过MetaEditor用户界面获得

21 二月 2020

### MetaEditor

1. 添加使用SQLite数据库的新功能。在[前一次平台更新](https://www.mql5.com/en/forum/327445)中，我们直接从MQL5引入了对SQLite数据库操作的支持。主要功能可通过MetaEditor用户界面获得：

     - 创建并连接数据库
     - 查看表格并执行快速数据查询
     - 创建并执行SQL查询，回滚更改

   **如何工作**快速数据库创建功能可从MQL5向导中获得。您可以轻松创建第一个表格并定义它的字段。

   ![](https://www.metatrader5.com/c/17/0/1_metaeditor_database_create__7.png)

    创建数据库之后，您将转到一个新导航版块，其中提供了管理数据的命令。数据库表显示在左侧窗口。双击表格名称，快速查询前1,000条记录。在此导航部分，您还可以创建和打开其他数据库，以及使用表格。数据库可以在主编辑器窗口中进行管理。在这里，您可以填写表格、搜索和选择数据、输入SQL查询和执行其他操作。

   ![](https://www.metatrader5.com/c/17/0/2_metaeditor_work_database__7.png)

   关于MetaTrader 5对数据库操作的更多信息，请参阅文章“[SQLite：本地处理MQL5中的SQL数据库](https://www.mql5.com/en/articles/7463)”。
2. 扩展对多语言项目的支持。此更新提供了使用Python脚本的更广泛的可能性：

     - 现在，此脚本可以使用MQL5向导进行创建，同时可以立即在代码中添加所需程序库的相关性。
     - 导航中添加了特殊图标，相关语法可在编辑器中获得。
     - 当通过MetaEditor运行脚本时，来自Python控制板(stdout, stderr)的消息出现在错误部分。

   ![](https://www.metatrader5.com/c/17/0/3_python_script_create__7.png)

    点击编辑器中的“编译”，运行脚本：

   ![](https://www.metatrader5.com/c/17/0/4_python_script_compile__7.png)

    若要使用Python，请不要忘记在MetaEditor的Settings \ Compilers部分指定其路径。要启动使用MetaTrader 5程序库，请使用以下命令进行安装：

    pip install MetaTrader5

    关于Python集成的详细信息，请参阅相关[文档](https://www.mql5.com/en/docs/python_metatrader5)。
3. MetaEditor：在导航中添加SQLite数据库文件的显示(*.db；*.sdb；*.sqlite；*.db3；*.s3db；*.sqlite3)。
4. MetaEditor：修正错误保存项目属性。

### MQL5

1. 完全修订Python集成。此次更新涉及许多新函数和新命令命名。**新命名**[现有命令](https://www.mql5.com/en/docs/python_metatrader5)已重命名如下：

    MT5Initialize -> initialize MT5Shutdown -> shutdown MT5TerminalInfo -> terminal_info MT5Version -> version MT5CopyRatesFrom -> copy_rates_from MT5CopyRatesFromPos -> copy_rates_from_pos MT5CopyRatesRange -> copy_rates_range MT5CopyTicksFrom -> copy_ticks_from MT5CopyTicksRange -> copy_tick_range

   **新命令**扩展了支持的命令列表。添加交易函数，以及用于处理交易历史和获得交易品种和当前账户信息的函数。

     - account_info()接收关于当前账户的信息。类似[AccountInfoInteger](https://www.mql5.com/zh/docs/account/accountinfointeger)、[AcountIndoDouble](https://www.mql5.com/en/docs/account/accountinfodouble)和[AccountInfoString](https://www.mql5.com/en/docs/account/accountinfostring)。
     - positions_total()接收持仓的数量。类似[PositionsTotal](https://www.mql5.com/en/docs/trading/positionstotal)。
     - positions_get(symbol, ticket)接收交易品种或单号的持仓情况。
     - orders_total()接收订单的数量。类似[OrdersTotal](https://www.mql5.com/en/docs/trading/orderstotal)。
     - orders_get(symbol, ticket)接收交易品种或单号的未结订单情况。
     - history_orders_total(from, to)接收指定历史时间段内的订单数量。
     - history_orders_get(from, to, position, ticket)接收指定历史时间段内的订单，根据单号或持仓进行筛选。
     - history_deals_total()接收历史记录中的交易数量。类似[HistoryDealsTotal](https://www.mql5.com/en/docs/trading/historydealstotal)。
     - history_deals_get(from, to, position, ticket)接收指定历史时间段内的交易，根据单号或持仓进行筛选。
     - symbol_info(symbol)接收有关交易品种的信息。类似[SymbolInfoInteger](https://www.mql5.com/zh/docs/marketinformation/symbolinfointeger)、[SymbolInfoDouble](https://www.mql5.com/zh/docs/marketinformation/symbolinfodouble)、[SymbolInfoString](https://www.mql5.com/en/docs/marketinformation/symbolinfostring)。
     - symbol_info_tick(symbol)接收交易品种最后报价。类似[SymbolInfoTick](https://www.mql5.com/en/docs/marketinformation/symbolinfotick)。
     - symbol_select(symbol, enable)启用/禁用市场报价中的交易品种。类似[SymbolSelect](https://www.mql5.com/en/docs/marketinformation/symbolselect)。
     - order_check(request)检查订单预付款。类似[OrderCheck](https://www.mql5.com/en/docs/trading/ordercheck)。
     - order_send(request)发送订单到服务器。类似[OrderSend](https://www.mql5.com/zh/docs/trading/ordersend)。
     - order_calc_margin(action, symbol, volume, price)计算订单的预付款。类似[OrderCalcMargin](https://www.mql5.com/en/docs/trading/ordercalcmargin)。
     - order_calc_profit(action, symbol, volume, price_open, price_close)计算盈利。类似[OrderCalcProfit](https://www.mql5.com/en/docs/trading/ordercalcprofit)。

   **在图表上运行Python脚本**Python脚本可以直接在平台图表上运行，类似于常规的MQL5程序。这些脚本在导航中使用特殊图标进行标记。

   ![](https://www.metatrader5.com/c/17/0/5_python_script_run_on_chart__7.png)

   脚本消息将显示在"Toolbox \ Experts"部分。如果在脚本中使用[MetaTrader 5程序库](https://www.mql5.com/en/docs/python_metatrader5)，则脚本可以接收交易品种和账户数据，以及执行交易操作。Python脚本可以与其他MQL5脚本和EA并行地在同一图表上运行。要停止执行中断的脚本，请将其从图表中移除。**附加保护**若要在使用第三方Python程序端时启用附加账户保护，您可以在程序端设置中使用“通过外部Python API启用自动交易”选项。

   ![](https://www.metatrader5.com/c/17/0/6_disable_python_script_trade__7.png)

    Python脚本只可在该选项禁用时执行交易操作。
2. 明显加快重新启动MQL5程序和从MQL5程序重新创建自定义指标的速度。在某些情况下，操作执行速度要快100倍。
3. 添加处理数据库的函数：[DatabaseImport](https://www.mql5.com/en/docs/database/databaseimport)从文件导入数据到图表。

   ```
   long  DatabaseImport(    int           database,          // 在DatabaseOpen中接收到的数据库句柄    const string  table,             // 要向其插入数据的表格名称    const string  filename,          // 要从中导入数据的文件名    uint          flags,             // 标识组合    const string  separator,         // 数据分隔符    ulong         skip_rows,         // 要跳过的首行数    const string  skip_comments      // 定义注释的字符串    );
   ```

   [DatabaseExport](https://www.mql5.com/en/docs/database/databaseexport)将表格或SQL查询结果导出到CSV文件。该文件用UTF-8编码创建。

   ```
   long  DatabaseExport(    int           database,           // 在DatabaseOpen中接收到的数据库句柄    const string  table_or_sql,       // 表格名称或SQL查询    const string  filename,           // 用于数据导出的CSV文件名    uint          flags,              // 标识组合    const string  separator           // CSV文件中的数据分隔符 );
   ```

   [DatabasePrint](https://www.mql5.com/en/docs/database/databaseprint)将表格或SQL查询结果打印到专家日志。

   ```
   long  DatabasePrint(    int           database,          // 在DatabaseOpen中接收到的数据库句柄    const string  table_or_sql,      // 表格或SQL查询    uint          flags              // 标识组合    );
   ```
4. 添加FileSelectDialog函数，它可调用创建/打开文件或文件夹的系统对话框。

   ```
   int  FileSelectDialog(    string   caption,              // 窗口标题    string   initial_dir,          // 初始目录    string   filter,               // 扩展过滤器    uint     flags,                // 标识组合    string&  filenames[],          // 包含文件名的数组    string   default_filename      // 默认文件名    );
   ```

    新函数使用户能够与MQL5程序进行有效互动。
5. ENUM_DEAL_PROPERTY_DOUBLE枚举中的DEAL_FEE值。它用于交易费。该值表示由交易商收取的单独手续费类型。

### Tester

1. 添加在策略测试期间设置自定义交易账户设置的功能，例如交易限制、预付款设置和手续费。新功能提供了建模各种交易条件的扩展功能。

   ![](https://www.metatrader5.com/c/17/0/7_tester_advance_settings__7.png)

   **常规设置**在这部分，您可以设置账户上可同时存在的未结订单和持仓的最大数量。此外，您还可以配置不允许程序交易的时间段。**预付款**这部分可以配置将在测试中使用的预付款保留规则和持仓账户系统：

     - 风险管理 — 风险管理模式：场外交易(OTC)和场内交易（交易所）模式，单边系统和锁仓系统。更多详情请参阅[帮助](https://www.metatrader5.com/en/terminal/help/trading/trading_advanced)。
     - 追加预付款水平 — 当达到该水平时，账户切换到追加预付款状态。
     - 强制平仓水平 — 当达到该水平时，取消所有订单并关闭所有持仓。这些水平可以用百分比和货币表示。在前一种情况下，它们被确定为账户的净值数值。如果选择“以百分比表示”，该水平定义为账户的“预付款水平”值（资金/预付款*100）。
     - 未兑现盈利 — 表示可用预付款中的当前浮动盈利/亏损：

           - 不使用未兑现盈利/亏损 — 计算中不包括持仓的盈利/亏损。
           - 使用未兑现盈利/亏损 — 计算中包括持仓的盈利/亏损。
           - 使用未兑现盈利 — 只包括盈利。
           - 使用未兑现亏损 — 只包括亏损。
     - 每日固定盈利 — 表示可用预付款中客户的每日固定盈利/亏损：

           - 使用每日固定盈利/亏损 — 包括一个交易日内收到的可用预付款盈利和亏损。
           - 使用每日固定亏损 — 只包括交易日内收到的亏损。交易日内，获得的盈利累计在专门账户字段（“冻结”）。交易日结束时，累计的盈利被取消冻结（归零）并被添加到账户结余中（包含在可用预付款中）。
     - 交易日结束时取消冻结固定盈利 — 该选项只在选择“使用每日固定亏损”选项时可用。如果启用此选项，则在交易日结束时将取消冻结累计的盈利（因此也包含在可用预付款中）。否则，这部分盈利将被继续冻结。

   **手续费**这部分提供管理所有交易操作收取的手续费。

     - 手续费包括单级手续费和多级手续费，即无论成交量/周转是多少，手续费都是相同的，或者可以根据交易规模而定。对应的数据在程序端显示。
     - 手续费可以在交易完成后，或在交易日/交易月结束时立即收取。
     - 单独的手续费可以依据成交方向进行收取：市场买入、市场卖出或两种都包括的操作类型。
     - 手续费可按照每手或每笔交易来收取。
     - 手续费能够以资金金额、百分比或点数来计算。

   ![](https://www.metatrader5.com/c/17/0/8_tester_commissions_set__7.png)
2. 优化并加速市场扫描模式下的工作，在此过程中，对市场报价中可用的所有交易品种进行多次测试。
3. 现在以点数计算盈利时会考虑交易或持仓大小。之前，只对每手执行计算。
4. 改进优化结果图形的管理。已对缩放优化图形添加了滚动选项。双击一个图点，在测试通过表格中选择相应的结果。

更新文档。

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

- [MetaTrader 5平台Build 2280](https://www.metatrader5.com/zh/releasenotes/terminal/2120)
- [新版MetaTrader 5平台build 2265：用于MQL5 3D可视化的DirectX功能和策略测试中的交易品种设置](https://www.metatrader5.com/zh/releasenotes/terminal/2117)
- [MetaTrader 5平台Build 2190](https://www.metatrader5.com/zh/releasenotes/terminal/2106)
- [新版MetaTrader 5平台build 2170：MQL5作用域，全局策略测试和内置虚拟主机更新](https://www.metatrader5.com/zh/releasenotes/terminal/2099)
- [MetaTrader 5平台build 2085：集成Python并改进策略测试](https://www.metatrader5.com/zh/releasenotes/terminal/2085)
