---
title: "优化类型 - 算法交易, 交易机器人 - MetaTrader 5帮助"
description: "在测试器里拥有两种优化类别。您可以在策略测试器的 设置 选卡上选择适宜的一种。 在此模式下, 优化过程将根据 相应选卡 里选择的输入变量, 执行所有可能的组合。 这种方法是最精确的。不过, 智能交易系统运行所有可能的组合需要较长的时间。... - 优化类型 - 算法交易, 交易机器人 - MetaTrader 5帮助"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
url: "https://www.metatrader5.com/zh/terminal/help/algotrading/optimization_types"
---

[MetaTrader 5帮助](https://www.metatrader5.com/zh/terminal/help) → [算法交易, 交易机器人](https://www.metatrader5.com/zh/terminal/help/algotrading) → 优化类型

# 优化类型

在测试器里拥有两种优化类别。您可以在策略测试器的 [设置](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#settings) 选卡上选择适宜的一种。

## 慢速完整算法

在此模式下, 优化过程将根据 [相应选卡](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#inputs) 里选择的输入变量, 执行所有可能的组合。

这种方法是最精确的。不过, 智能交易系统运行所有可能的组合需要较长的时间。

## 快速遗传算法

这类优化基于搜索输入参数最佳值的遗传算法。这种类型比第一种快得多, 且品质几乎相同。慢速完整优化需要执行几年时间, 而用遗传算法只需执行几个小时。

每一个体都有一组特殊的遗传集合与它们的参数集合相对应。遗传优化机遇持续选择最 "适合的" 参数 (给出最佳结果的数值)。在一般形式里, 算法可用如下方式表达:

- 从参数所有可能组合的总数里, 通过随机抽样选取两个种群 (集合);
- 两组集合经过测试, 其中结果最佳的一组 (根据 [优化准则](https://www.metatrader5.com/zh/terminal/help/algotrading/optimization_types#criterion)) 被留下;
- 集合成员彼此随机交叉, 经历随机突变和参数反转;
- 后代根据最佳结果排序, 并交叉反复;
- 只要结果有改善 (后代中的最佳结果比父辈中最佳的那个更好), 重复排序和交叉操作。如果 [优化准则](https://www.metatrader5.com/zh/terminal/help/algotrading/optimization_types#criterion) 值在若干次交叉中没有改进 (后代), 优化过程完毕。

### 测试运行次数

在遗传优化期间, 测试运行的数量要低很多, 提供更爽捷的优化。遗传优化启动之后, 测试运行的评估数量显示在 [设置](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#settings) 选卡上。它按照以下公式计算:

```
种群大小 * (绝对后代数量 + 收敛评估的后代数量)
```

此处:

- 种群大小 基于优化参数可能的组合数量计算, 可能的范围从 64 到 256;
- 绝对后代数量 可能的范围从 15 到 31。它由存在的改进优化准则来定义。在所有优化里测试 15 代。如果在范围 15 和 31 之间的一代没有任何优化准则的改进, 下一代会启动收敛评估的额外测试。
- 收敛评估的后代数量 以绝对后代数量的三分之一计算。如果绝对后代数量为 18 (第 17 代显示为最佳结果, 且 18 代未显示任何改进) 则测试另外 5 代: 第 18 代未显示任何改进, 那么对于收敛评估, 我们需要 18/3 = 6 代无任何改进的优化准则。如果指定数量的后代没有显示出任何改进, 优化停止。

> 如果优化步骤的总数在 32-位系统上超过 1,000,000, 或者在 64-位系统上超过 100,000,000, 遗传优化模式自动启动。在 [遗传优化](https://www.metatrader5.com/zh/terminal/help/algotrading/optimization_types)期间, 每一代计算之后过渡结果保存在高速缓冲区里 (位于 平台_数据_文件夹/tester/cache/*.gen 的一个文件)。因此, 优化过程可以在任意时间中断。即使遗传优化过程被外部因素中断 (例如, 电源故障), 在下次启动后, 优化将会自动从最后一次计算的后代继续。遗传优化高速缓存区一直保留, 直到 [优化设置](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#settings) 被改变或优化过程完毕。在正常的优化停止时 (当您按下 [停止按钮](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#settings)) 所有之前已计算的运行结果得以保存。当恢复优化过程时, 它从上次计算的运行处继续。

### 优化准则 [#](#criterion)

一个优化准则是确定因子, 其值定义一组测试组参数的质量。优化准则的数值越高, 给定参数集合的测试结果越佳。这些因子可在 [设置](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#settings) 选卡里 "优化" 右侧的字段里选择。

> 优化准则只有遗传算法需要。

以下优化准则可用:

- 最大余额 ― 余额数值最高。
- 最大盈利因子 ― [利润因子](https://www.metatrader5.com/zh/terminal/help/algotrading/testing_report#profit_factor)的最大值。
- 最大期望收益 ― [期望收益](https://www.metatrader5.com/zh/terminal/help/algotrading/testing_report#expected_payoff)的最大值。
- 最低回撤 ― 在这种情况下，考虑了 [以百分比表示的结余](https://www.metatrader5.com/zh/terminal/help/algotrading/testing_report#drawdown) 相对减少。
- 最大采收率 ― [采收率](https://www.metatrader5.com/zh/terminal/help/algotrading/testing_report#recovery_factor)的最大值。
- 最大夏普比率 ― [夏普比率](https://www.metatrader5.com/zh/terminal/help/algotrading/testing_report#sharpe_ratio)的最大值。
- 自定义最大 ― 此处的优化准则是智能交易系统里 OnTester() 函数的数值。此参数允许使用任意自定义值对智能交易系统进行优化。

另一个选项就是使用“最大复杂标准”。这是测试通过质量的完整且复杂的衡量标准。它会衡量多个参数：

- 成交数
- 盈亏
- 采收率
- 期望收益
- 夏普比率

通过使用这个标准，您可以看到就复杂分析而言，参数的最大值（例如盈利）并不总是最佳选择。复杂标准逐渐选择最优通过：首先根据成交数，然后根据期望收益、采收率等。新选项可以根据所有参数接收最佳优化通过。此外，您可以根据所需参数（例如最高盈利）选择最佳通过。

## 在市场观察里选择的所有品种

不像上述优化类型, 这种允许智能交易系统以相同的 [输入参数](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#inputs)进行测试, 但品种不同。只有 [主要测试品种](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#settings) 才会在每次递进时改变, 即, EA 加载所在图表的品种。

优化的执行只针对当前在 [市场观察](https://www.metatrader5.com/zh/terminal/help/trading/market_watch) 里选择的品种。所以, 您可以通过调整选定品种的集合来管理优化。

> 请注意, 从服务器下载所需价格数据可能需要很长的时间。不过, 因下载数据而导致的优化降速只在该品种首次启动时发生, 之后只会下载缺失数据。在 "数值" 字段指定的 [输入参数](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#inputs) 当前值用于品种的优化。[MQL5云网络](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#cloud) 不支持此类优化。

## In this section

- [智能交易系统和自定义指标](https://www.metatrader5.com/zh/terminal/help/algotrading/trade_robots_indicators)
- [何处查找交易机器人和指标](https://www.metatrader5.com/zh/terminal/help/algotrading/algotrading_get_ea_indicator)
- [如何创建一个智能交易系统或指标](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading)
- [策略测试](https://www.metatrader5.com/zh/terminal/help/algotrading/testing)
- [测试器如何下载历史数据](https://www.metatrader5.com/zh/terminal/help/algotrading/test_preparation)
- [策略优化](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization)
- [测试功能](https://www.metatrader5.com/zh/terminal/help/algotrading/testing_features)
- [测试报告](https://www.metatrader5.com/zh/terminal/help/algotrading/testing_report)
- [测试可视化](https://www.metatrader5.com/zh/terminal/help/algotrading/visualization)
- [测试日志](https://www.metatrader5.com/zh/terminal/help/algotrading/tester_journal)
- 优化类型
- [真实与生成的分时](https://www.metatrader5.com/zh/terminal/help/algotrading/tick_generation)
- [MetaTester 和远程代理](https://www.metatrader5.com/zh/terminal/help/algotrading/metatester)
- [全局变量](https://www.metatrader5.com/zh/terminal/help/algotrading/service_global)

```json
{"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ {"@type": "ListItem", "position": 1, "item": {"@id": "https://www.metatrader5.com/zh/terminal/help", "name": "MetaTrader 5帮助"}}, {"@type": "ListItem", "position": 2, "item": {"@id": "https://www.metatrader5.com/zh/terminal/help/algotrading", "name": "算法交易, 交易机器人"}}, {"@type": "ListItem", "position": 3, "item": {"@id": "https://www.metatrader5.com/zh/terminal/help/algotrading/optimization_types", "name": "优化类型"}} ]}
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "MetaTrader 5: 优化类型", "acceptedAnswer": { "@type": "Answer", "text": "在测试器里拥有两种优化类别。您可以在策略测试器的 设置 选卡上选择适宜的一种。 在此模式下, 优化过程将根据 相应选卡 里选择的输入变量, 执行所有可能的组合。 这种方法是最精确的。不过, 智能交易系统运行所有可能的组合需要较长的时间。 这类优化基于搜索输入参数最佳值的遗传算法..." } }] }
```
