---
title: "策略测试 - 算法交易, 交易机器人 - MetaTrader 5帮助"
description: "策略测试器允许您的交易策略 ( 智能交易系统 ) 实际应用于真实帐户之前, 对它们进行测试并优化。测试期间, 智能交易系统以初始参数依据历史数据运行。优化期间, 交易策略将使用不同的参数集合运行多次, 从中可以选出最恰当的组合。... - 策略测试 - 算法交易, 交易机器人 - MetaTrader 5帮助"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
url: "https://www.metatrader5.com/zh/terminal/help/algotrading/testing"
---

[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/autotrading#type)) 实际应用于真实帐户之前, 对它们进行测试并优化。测试期间, 智能交易系统以初始参数依据历史数据运行。优化期间, 交易策略将使用不同的参数集合运行多次, 从中可以选出最恰当的组合。

策略测试器是多币种工具, 可令您测试/优化多金融工具交易策略。测试器自动处理所有交易策略中用到的品种信息, 所以您无需手工指定测试/优化时的品种列表。

策略测试器是多线程的, 因此可以使用所有可用的电脑资源。测试和优化可以使用指定的计算 [代理](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#agents) 进行, 它们作为服务安装在客户的电脑上。代理独立工作, 并可并行处理优化递进。

可将无限数量的 [远程](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#farm) 代理连接到策略测试器。此外, 策略测试器可以访问 [MQL5 云网络](https://www.metatrader5.com/zh/terminal/help/mql5cloud)。它带来了环球数以千计的代理, 并且这种计算能力可为所有交易平台客户所用。

除了智能交易系统的测试和优化, 您可以使用策略测试器的 [可视模式](https://www.metatrader5.com/zh/terminal/help/algotrading/visualization) 对自定义指标进行测试操作。这个 功能可以很简单地测试从 [市场](https://www.metatrader5.com/zh/terminal/help/market)里下载的演示版自定义指标的操作。

## 如何测试 [#](#test)

测试一款 [智能交易系统](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#type) 就是利用历史价格数据以固定参数单次运行。它可以在您将策略用于真实市场之前, 测试它是如何工作的。

> [![观看视频: 如何在购买之前测试智能交易系统和指标](https://www.metatrader5.com/i/help/terminal/en/video_market_test.png)](https://www.metatrader5.com/video/1/ouEh29q3QJ4/video.mp4)
>
> 观看视频: 如何在购买之前测试智能交易系统和指标
>
> 观看视频了解如何在您从市场购买之前测试交易机器人。市场上提供的每款产品都有演示版本可以在策略测试器里检测。详情请观看视频。

### 快速选择测试任务 [#](#start_page)

tester（测试器）启动之后，用户看到的是一个标准任务列表，而不是多个设置，通过选择任务，用户可以快速开始测试。这对于之前没有任何经验的用户尤其有用。

开始页面会显示一些主要的策略测试和优化任务。此外，还可以从此页面重新启动一个以前执行的任务。如果您运行了多个任务，且这些任务不适合开始页面，那么请使用搜索栏。您可以通过任何参数找到测试：程序名称、交易品种、时间框架、建模模式等。

![在开始页面选择一个热门任务以便快速启动测试。](https://www.metatrader5.com/i/help/terminal/en/tester_start_page.png)

选择任务之后，用户继续进一步测试参数设置：选择EA交易、交易品种、测试周期等。所选任务不需要的所有无关参数都将从设置页面中隐藏。例如，选择数学计算，只需要指定两个参数：选择要测试的程序和优化模式。在测试期间，将会隐藏延迟和报价生成的设置。

下面将解释所有可用的测试选项。

### 如何选择测试的交易机器人 [#](#ea)

点击 "![测试](https://www.metatrader5.com/i/help/terminal/en/test_icon.png) 测试", 智能交易系统的关联菜单位于 [导航器](https://www.metatrader5.com/zh/terminal/help/startworking/interface) 窗口。

![如何选择交易机器人进行测试](https://www.metatrader5.com/i/help/terminal/en/test_select_ea.png)

点击之后智能交易系统在策略测试器里被选中。

### 对于多币种 EA, 在市场观察里启用所需的品种 [#](#mw)

策略测试器允许多品种交易策略的回测。这种交易机器人通常被称为多币种智能交易系统。

测试器在首次调用品种数据时自动从交易平台下载所需品种的历史数据 (并非交易服务器！)。只有缺失的价格历史数据才会从交易服务器下载并补充。

在您开始测试多币种智能交易系统之前, 在市场观察里启用测试所需品种。打开它的关联菜单, 点击 "![品种](https://www.metatrader5.com/i/help/terminal/en/symbols_icon.png)品种" 并启用所需的工具。

![对于多币种智能交易系统, 在市场观察里启用所需的品种](https://www.metatrader5.com/i/help/terminal/en/test_show_symbols.png)

### 选择测试设置 [#](#settings)

在您开始测试之前, 选择交易机器人将要测试操作的金融工具, 周期和模式。

![Selecting testing parameters](https://www.metatrader5.com/i/help/terminal/en/tester_settings.png)

### 交易品种和周期

选择用于测试和优化的主图表。需要通过交易品种选择来触发EA交易中包含的OnTick()事件。此外，所选的交易品种和时间段还会影响使用当前图表参数（例如，Symbol()和Period()）的EA交易代码中的特殊函数。换句话说，应在此处选择附加EA交易的图表。

### 日期

选择测试和优化周期。您可以选择一个预定义周期或设置自定义时间间隔。要设置自定义时间段，请在右侧的相应字段中输入开始日期和结束日期。

测试器的特定功能是它会在指定时间段之前下载一些数据（形成不少于100柱形图）。这是进行更准确的测试和优化所必需的。例如，如果您在一个星期的时间范围内进行测试，则需要额外下载两年的时间。

如果没有足够的历史数据形成额外的100柱形图（这对于“月”和“周”的时间周期尤为重要），例如，当指定测试开始日期接近现有历史数据的开始日期时，则测试的开始日期将自动更改。 一条相应的消息添加到策略测试的[日志](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#result)中。

### 前向

此选项使您可以检查测试结果，以避免符合特定的时间间隔。在[前测](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#forward)期间，根据所选的前向周期，将“日期”字段中设置的时间段分为两部分（指定前测开始日期时的二分之一、三分之一、四分之一或自定义时间段。）

第一部分是后测的时间段。这是EA交易操作的适应期。第二部分是前测，在此期间将检查选定的参数。

### 执行

策略测试可以在EA交易操作期间启用模拟网络延迟，以提供接近真实的测试条件。在策略测试中可能会在发出交易请求及执行请求期间插入某个时间延迟。从发送请求之刻起到执行为止，价格可以发生变化。这可使用户评估交易处理速度如何影响交易结果。

在[现价执行](https://www.metatrader5.com/zh/terminal/help/trading/general_concept#execution_type)模式下，用户还可以检查EA交易对交易服务器重新报价的反馈。如果要价和现价执行之间的差额超过订单中指定的[偏差](https://www.metatrader5.com/zh/terminal/help/trading/performing_deals#deviation)值，则EA会收到重新报价。

请注意，延迟仅适用于由EA执行的交易（[下单](https://www.metatrader5.com/zh/terminal/help/trading/general_concept#order_type)，更改[停损级别](https://www.metatrader5.com/zh/terminal/help/trading/performing_deals#position_modify)等）。例如，如果EA使用挂单，那么延迟只能用于下单而不能用于订单执行（在真实条件下，订单执行只能在无网络延迟时进行）。

**无延迟**

在此模式下，所有订单均按要价执行，而无需重新报价。该模式用于检查EA在“理想”条件下的表现。

**随机延迟**

“随机延迟”模式可以在最接近真实条件的环境中测试EA交易。延迟值根据以下条件自动生成：从0到9随机选择一个数字 - 这就是延迟的秒数；如果选择的数字等于9，那么会从相同范围随机选择另一个数字并加上第一个数字。

因此，延迟0-8秒的可能性为90％， 9-18秒的延迟是10％。

**固定延迟**

您可以选择一个预定义的延迟值，或设置自定义延迟值。平台将会衡量到交易服务器的ping值并且您也可以在测试中将该值设为延迟值，以便在尽可能接近真实的条件下测试EA交易。

### 报价生成模式

选择一种报价生成模式：

- 每一报价 ― 最准确却最慢的模式。在此模式下模拟所有报价。
- 每个基于真实报价的报价都提供最接近真实报价的条件。使用交易商累积的交易品种的[真实报价](https://www.metatrader5.com/zh/terminal/help/algotrading/tick_generation#real)进行测试。不执行模拟。由于报价数据量很大，因此在第一次测试运行期间从交易商的服务器下载报价数据可能会花费很长时间。
- 1 分钟 OHLC ― 在此模式下，仅模拟每分钟柱形图的4种价格（开盘价、最高价、最低价和收盘价）。
- 仅开盘价 ― 在此模式下，也会模拟OHLC价格，然而只有开盘价被用于测试/优化。
- 数学计算 ― 在这种模式下，测试不会下载交易品种的历史数据和信息，也不会生成报价。仅调用函数OnInit()、OnTester()和OnDeinit()。因此，测试器可以用于需要选择参数的各种数学计算。

有关报价生成的更多信息，请参阅[相关部分](https://www.metatrader5.com/zh/terminal/help/algotrading/tick_generation#tick_mode)。

以点为单位的利润计算可以加快测试过程，而不需要使用换算率重新计算利润以存入货币（因此无需下载相应的价格历史记录）。在此模式下，取消库存费和手续费的计算。

请注意，在此模式下不执行预付款控制。您应只将其用于快速粗略的策略评估，然后使用更精确的模式检查得到的结果。

### 初始入金和杠杆

指定用于测试和优化的初始入金金额。默认使用当前[连接](https://www.metatrader5.com/zh/terminal/help/startworking/authorization)账户的入金货币，但您可以指定任何其他货币。请注意，将利润和预付款转换为指定入金货币的汇率必须在账户上可用，以确保适当的测试。只有“外汇”或“外汇无杠杆”计算类型的交易品种可被用作交叉汇率。

其次选择用于测试和优化的杠杆。杠杆作为持仓和订单的预付款，影响的是[账户上保留的资金数额](https://www.metatrader5.com/zh/terminal/help/trading_advanced/margin_forex)。

### 快速跳转到EA编辑

如果您拥有所选EA的源代码，您可以点击此按键以切换到[MetaEditor](https://www.metatrader5.com/zh/terminal/help/algotrading/autotrading#metaeditor)中的编辑页面。

### 管理测试设置

使用此菜单管理测试器设置：将各个EA交易的设置保存到ini文件中，以方便稍后点击访问。也可以通过Ctrl + C组合键将当前测试设置复制到剪贴板。您可以在首选的文本编辑器中对其进行编辑，然后使用Ctrl + V组合键将其复制并上传到测试器。

从同一菜单，您可以快速选择最近使用的程序、最近图表设置和测试周期。

此外，您可以快速访问以前的任何[优化结果](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#result)，以及获得结果的设置。

### 用于测试的自定义交易品种设置

您可以更改用于测试/优化的[主要交易品种的设置](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#custom_symbol)。几乎所有规格参数都可以被重写：交易量、交易模式、预付款要求、执行模式和其他设置。

### 高级测试设置

当测试策略（例如交易限制、预付款设置和手续费）时，设置[您自己的交易账户参数](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#extended_settings)。此选项可以模拟交易商提供的不同交易条件。

### 可视化测试

[可视化测试](https://www.metatrader5.com/zh/terminal/help/algotrading/visualization)模式可以精确地可视化EA交易在历史数据测试过程中如何执行交易操作。交易品种的每笔交易都显示在其图表上。

> 注意, 品种规范并非意味测试器仅使用这些历史数据。测试器自动下载智能交易系统里用到的所有品种信息。开始测试/优化之前, 自动从交易服务器下载主图表上品种的所有可用价格数据。如果网络速度较慢, 它可能会花费很长时间。下载所有数据只会执行一次, 在下一次开始时只会下载缺失信息。只有当前在 [市场观察](https://www.metatrader5.com/zh/terminal/help/trading/market_watch) 里选中的品种可用于测试/优化。在测试和优化期间, 所有必要品种的价格数据自动从服务器下载。测试在指定日期的 0 时, 0 分, 0 秒开始和结束。所以测试/优化的开始日期包括在测试周期, 而结束日期未包括在内。测试结束于前一个交易日的最后一笔分时。另外您也不能指定大于当前的结束日期。在这种情况下, 测试将会一直执行到当前日期 (未包括)。

### 选择输入参数 [#](#inputs)

输入参数 允许您控制智能交易系统的行为, 令其适应不同的市场条件以及指定的金融工具。例如, 您可以利用不同 [止损](https://www.metatrader5.com/zh/terminal/help/trading/general_concept#stop_loss) 和 [止盈](https://www.metatrader5.com/zh/terminal/help/trading/general_concept#take_profit) 数值来探索智能交易系统的性能, 不同周期的移动均线用于市场分析和决策制定, 等等。

指定每个输入参数的数值。

![选择测试的输入参数](https://www.metatrader5.com/i/help/terminal/en/test_inputs.png)

参数设置。 您可以使用快捷菜单，通过保存一套MQL5程序参数随时返回其当前设置：

- 若要在您的计算机上保存参数设置文件，请点击“保存”。这些文件可以在不同计算机的平台之间移动或发送给其他用户。
- 若要在当前平台保存用于未来使用的参数，请点击“保存新版本”。然后这些保存的预设值将被用于“加载新版本”的子菜单。他们就可随时从列表选择适当的版本来使用。

### 高级测试设置 [#](#extended_settings)

您可以在策略测试期间指定自定义交易账户设置，例如交易限制、预付款设置和手续费。此选项可以模拟交易商提供的不同交易条件。

![高级测试设置可以模拟交易商提供的不同交易条件。](https://www.metatrader5.com/i/help/terminal/en/tester_extended_settings.png)

常用

在这部分，您可以设置账户上可同时存在的未结订单和持仓的最大数量。此外，您还可以配置不允许程序交易的时间段。

预付款

这部分可以配置将在测试中使用的预付款保留规则和持仓账户系统：

![Margin settings](https://www.metatrader5.com/i/help/terminal/en/tester_extended_settings_margin.png)

[风险管理模式](https://www.metatrader5.com/zh/terminal/help/trading/trading_advanced)：OTC（场外模式）和交易所模式、单边系统模式或锁仓系统模式。

当达到这个水平时，账户就会切换到“追加预付款”状态。

当达到该水平时，取消所有订单并关闭所有交易持仓。这些水平可以用货币和百分比表示。在前一种情况下，它们被确定为账户的净值数值。如果选择了“百分比”，则水平可定义为账户的“预付款水平”值（净值/预付款* 100）。

此处指定了在可用预付款计算中当前浮动盈/亏的计算方法：

- 不使用未实现盈/亏 ― 计算中不包括未结持仓的盈/亏。
- 使用未实现盈/亏 ― 计算中包括未结持仓的盈/亏。
- 使用未实现盈利 ― 仅包括盈利。
- 使用未实现亏损 ― 仅包括亏损。

此处指定了在可用预付款计算中交易者每日已实现盈/亏的计算方法：

- 使用每日固定盈/亏 ― 包括交易日内收到的可用预付款盈利和亏损。
- 使用每日固定亏损 ― 仅包括交易日内收到的亏损。交易日内，获得的盈利累计在专门账户字段（“冻结”）。交易日结束时，累计的盈利被取消冻结（重置）并被添加到账户结余中（包含在可用预付款中）。

交易日结束时取消冻结固定盈利 ― 该选项只在选择“使用每日固定亏损”选项时可用。如果启用此选项，则在交易日结束时将取消冻结累计的盈利（因此也包含在可用预付款中）。否则，这部分盈利额将被继续冻结。

手续费

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

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

要应用当前交易账户的手续费设置，请启用“使用预定义手续费”选项。

![Commission settings](https://www.metatrader5.com/i/help/terminal/en/tester_extended_settings_commission.png)

启用选项以使用当前交易账户手续费设置，来替代下面指定的自定义设置。

指定要为其配置手续费的交易品种名称。可为每个交易品种添加多个设置。因此，您可以根据交易量或周转率设置多级手续费。

手续费可在每次交易之后立即收取，也可在交易日或交易月累计，然后通过一次操作进行收取：

- 即时收取 ― 在执行每笔交易时立即收取手续费。即时手续费金额显示在交易的“手续费”字段中。在即时手续费计算模式下，仅可指定以交易量形式计算的手续费（而非周转率）。
- 每日 ― 手续费金额是在交易日内累计在特殊账户状态字段“已冻结”中。交易日结束时，通过单独的结余操作（每日手续费或每日代理手续费类型的交易）从账户中扣除累计金额。
- 每月 ― 手续费金额是在交易月内累计在特殊账户状态字段“已冻结”中。在月底，通过单独的结余操作（每月手续费或每月代理手续费类型的交易）从账户中扣除累计金额。

此外，还可以根据每笔交易量或每日/每月的周转来收取手续费。所选选项决定了在“从”和“到”字段中显示其交易量的实体：交易或周转。

- Volume（交易量） ― 根据交易操作中执行的每笔交易的交易量（手数）来设置手续费级别。例如，如果您将级别设置为0 ― 10和12 ― 20，则15手交易将以二级手续费为准。此选项在“每日”、“每月”或“即时”模式下使用。
- Overturn Money（周转资金） ― 根据所选周期（每日或每月）内的周转资金来设置手续费级别。例如，级别设置为0 ― 500、501 ― 1000，并且按月收取手续费。将收取一级手续费，直到总运营成本超过500单位为止。一旦资金周转超过500，所有后续交易将以二级手续费为准。 默认以入金货币计算货币周转率：每笔交易的价格都被计算并转换成入金货币。例如：以100 000合约大小买入1手EURUSD的价格是100 000EUR。如果您的入金货币是USD，则持仓价格在交易时会转换为EURUSD（在这种情况下，就是成交价格）。
- 周转量 ― 根据所选周期（每日或每月）内的交易操作量（手数）来设置手续费级别。

在每日和每月模式下，双向交易均收取手续费（开仓/增仓以及平仓或部分平仓时）。对于即时手续费，可以手动设置交易方向。

针对进/出类型的反转交易，“入”意味着仅收取新持仓的交易量的手续费，“出”意味着收取平仓交易量的手续费。以下规则适用于Close By交易：

- 当选择“全部”或“入”的时候，不收取Close By交易的手续费，因为已在原来的两笔交易中收取手续费。例如，每笔交易收取1美元手续费。当交易者执行一手EURUSD买入交易和一手EURUSD卖出交易时，将收取2美元手续费。当一手EURUSD持仓被一手EURUSD卖出持仓平仓，那么客户将不被收取额外的手续费。
- 如果选择了“出”，则将收取Close By双方的手续费，并且手续费总值将被写入主要的退出交易（这里已指定止盈/止损）。例如，每笔交易收取1美元手续费。当交易者执行一手EURUSD买入交易和一手EURUSD卖出交易时，将不收取手续费。当一手EURUSD持仓被一手EURUSD卖出持仓平仓，则将收取2美元手续费。2美元手续费将在第一笔“out by"交易中指定，0手续费在第二笔交易中指定。

将收取手续费的最小交易量（周转率）。该范围不可重叠。否则，将对操作所属的所有范围收取手续费。

将收取手续费的最大交易量（周转率）。该范围不可重叠。否则，将对操作所属的所有范围收取手续费。

手续费金额。手续费单位取决于在“模式”字段选择的手续费计算方法。

最低手续费金额。值单位取决于所选的计算模式（基础货币、组货币、点等）。如果您不想限制最低手续费金额，请设置0值。

最高手续费金额。值单位取决于所选的计算模式（基础货币、组货币、点等）。手续费最大值不可低于其最小值。如果您不想限制最高手续费金额，请设置0值。

手续费金额计算单位：

- 入金货币 ― 手续费以为组指定的入金货币进行计算。
- 基础货币 ― 手续费以交易品种的基础货币进行计算。
- 利润货币 ― 手续费以交易品种的利润货币进行计算。
- 预付款货币 ― 手续费以为交易品种指定的预付款要求货币进行计算。
- 点 ― 手续费以交易品种的价格点进行计算。点值根据相同方向的持仓盈利进行计算，交易量为1手，开盘价和收盘价之间的差等于1点（点）。
- 百分比 ― 该计算方法能够以交易/周转的实际成本的百分比收取手续费。成本以交易品种的基础货币计算，即其价格、合约大小和手数交易量的乘积（对于期货和期权交易品种：volume in lots * Tick Size / Tick Price）。默认情况下，以基础货币计算的交易/周转值转换为入金货币；然后根据结果值计算最终的手续费（指定百分比）。

手续费收取类型：

- 每笔交易 ― 将对每笔交易执行收取手续费。
- 每手（交易量） ― 根据每手（交易量）执行交易收取手续费。仅考虑已执行的交易请求量。

### 自定义测试交易品种设置 [#](#custom_symbol)

您可以重写主要交易品种的设置，并为此执行测试/优化。几乎所有[规格](https://www.metatrader5.com/zh/terminal/help/trading/market_watch#specification)参数都可以重写：交易量、交易模式、预付款需求、执行模式和其他设置。因此，如果您需要在不同条件下检查EA，则无需创建单独的[自定义交易品种](https://www.metatrader5.com/zh/terminal/help/trading_advanced/custom_instruments)和下载其历史记录。这可以通过更改标准的交易品种设置来完成。

![编辑主要测试交易品种的任何设置以在不同的交易条件下测试策略](https://www.metatrader5.com/i/help/terminal/en/tester_custom_symbol_settings.png)

如果交易品种规格为自定义，则齿轮图标和交易品种图标将用星号标记。这表示自定义参数用于当前测试。

![如果交易品种设置已被更改，则该交易品种将用特殊图标标记](https://www.metatrader5.com/i/help/terminal/en/tester_custom_symbol_settings_modified.png)

### 开始测试 [#](#start)

为了开始测试, 在 "设置" 栏上点击 "开始"。测试进程显示在左侧。

## 何处查看测试结果 [#](#result)

智能交易系统的测试结果显示在 "结果" 和 "图形" 栏里。

![测试结果](https://www.metatrader5.com/i/help/terminal/en/test_result.png)

### 测试报告

测试结果详情显示在 "结果" 栏上。这一栏包括生成的测试结果, 包括利润和交易数量, 以及许多统计数值可以帮助评估交易机器人的性能。

其余图表示意小时、日和月为单位的交易操作数量和成功率的分布, 以及描绘交易策略的风险参数。

查看 [测试报告](https://www.metatrader5.com/zh/terminal/help/algotrading/testing_report) 部分可得到详情。

### 测试图形

在 "图形" 栏上, 您可以目测智能交易系统针对所选工具在所选时间段内是如何成功执行的。

余额曲线 (蓝色线) 和净值曲线 (绿色) 显示在栏目的主要区域。日期显示在水平轴刻度, 余额/净值显示在垂直轴刻度。

> 余额每次变化时会显示在图表上 (当仓位平仓), 净值在余额变化之间按照确定周期显示。当测试使用[交易所风险管理模式](https://www.metatrader5.com/zh/terminal/help/trading_advanced/margin_exchange)的账户时，图表仅显示净值，而结余和入金加载不被显示。这种账户的交易状态是根据净值水平进行评估。结余仅显示账户上的金额而忽略了交易者的资产和负债。入金加载（预付款/净值）不显示，因为在交易所计算模式下预付款等于当前资产/负债的贴现值，并且它随着净值而变化。

标签底部具备入金加载直方图，计算预付款和净值的比率(预付款/净值)。

### 在日志里的测试进度

测试进度反映在 "日志" 上。此外, 智能交易系统的消息添加到日志。在 [可视测试](https://www.metatrader5.com/zh/terminal/help/algotrading/visualization) 模式, 测试进度可直接从图表上看到。

### 图表上的测试进度

测试完成的那一刻, 您可以打开智能交易系统测试的图表 (所选的品种和周期)。点击 "![打开图表](https://www.metatrader5.com/i/help/terminal/en/open_chart_icon.png) 打开图表", 关联菜单位于 "结果" 栏。所有测试期间 EA 执行的成交显示在图表上。如果一个 [模板](https://www.metatrader5.com/zh/terminal/help/charts_advanced/templates_profiles) 名为 tester.tpl 存在于交易平台文件夹 /profiles/templates, 它将用于打开图表。如果没有模板, 使用省缺的 (default.tpl)。

如果测试的智能交易系统使用了 [指标](https://www.metatrader5.com/zh/terminal/help/charts_analysis/indicators), 它运行在测试的品种和周期, 它们也一并显示在图表上。不过, 如果在智能交易系统的源代码里实现了强制卸载指标 (函数 [IndicatorRelease](https://www.mql5.com/zh/docs/series/indicatorrelease)), 指标将不会显示在图表上。

## 在前测非优化周期里测试交易机器人 [#](#forward)

向前测试是在不同时间周期重复运行智能交易系统。此功能允许您避免某段历史数据的参数拟合。

为了开始前测, 在设置栏的前测字段选择 [总周期](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#settings) 部分:

- 无 ― 不使用前测;
- 1/2 ― 指定周期的一半用于前测;
- 1/3 ― 指定周期的三分之一用于前测;
- 1/4 ― 指定周期的四分之一用于前测;
- 自定义 ― 手工指定前测开始日。

![前测周期](https://www.metatrader5.com/i/help/terminal/en/forward_period.png)

> 总周期的第二部分 (最后) 一直用于前测。前测的开始日期以一根垂直线标记在图表上。

当启用前测时, 所选的部分从 ["日期"](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#settings) 字段指定的周期中分离。第一部分是回测周期, 第二部分是前测周期。

前测结果显示在单独的 "前测" 栏上。前测的开始日期以一根垂直线标记在图表上。

![前测结果](https://www.metatrader5.com/i/help/terminal/en/test_forward.png)

有关测试结果的详情, 请参阅章节 ["何处查看优化结果"](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#result)。

## 可视测试 [#](#visual)

在交易平台的 [策略测试器](https://www.metatrader5.com/zh/terminal/help/algotrading/testing) 里, 您可以按照可视模式测试智能交易系统和指标。此模式可以通过准确地直观智能交易系统在回测期间是如何执行操作的。每笔交易显示在金融品种的图表上。

要启用可视测试, 在设置里选择 "可视化":

![启用可视测试](https://www.metatrader5.com/i/help/terminal/en/test_visual_enable.png)

> 可视测试当 [优化](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization) 被启用时不可用。可视测试仅在 [本地代理](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#agents) 上执行。如果选择 [远程代理](https://www.metatrader5.com/zh/terminal/help/algotrading/strategy_optimization#farm) 进行测试, 在其关联菜单里使用 "![选择](https://www.metatrader5.com/i/help/terminal/en/agent_select_icon.png)选择" 命令选择一个本地代理。

设置 [测试选项](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#settings) 和 [配置参数](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#inputs), 然后点击 "开始"。

可视测试运行在一个新窗口里, 它模拟一个单独的交易平台: 它包含图表, 市场观察和工具箱窗口, 在此您可以查看交易操作和日志。

![在可视模式里测试](https://www.metatrader5.com/i/help/terminal/en/test_visual.png)

### 测试过程控制

使用工具条来暂停, 加速或减速测试。您也可以跳到特别的测试日期。

您可以便利地通过热键控制测试进程, 组合键列表就在菜单命令旁边。

### 监视图表上的智能交易系统测试

这个测试类型的主要目的是直观地分析智能交易系统性能。基于模拟的历史价格数据, 实时生成图表。交易机器人的操作显示在图表上。

交易操作显示为图标![买入](https://www.metatrader5.com/i/help/terminal/en/buy_icon.png)(一笔买入成交) 和![卖出](https://www.metatrader5.com/i/help/terminal/en/sell_icon.png)(一笔卖出成交)。在入场和离场之间显示一条虚线。

- 您可以修改图表外观, 使用 [模板](https://www.metatrader5.com/zh/terminal/help/charts_advanced/templates_profiles) 来显示指标或图形对象。对于应用的模板, 其名称必须与测试的智能交易系统名称匹配, 例如 ExpertMACD.tpl。模板可放置于交易平台的 [/profiles/templates](https://www.metatrader5.com/zh/terminal/help/start_advanced/structure) 文件夹里。
- 在图表模式里可用的品种列表仅限于主要测试品种, 如同在智能交易系统里使用品种的数据。
- [图表时间帧](https://www.metatrader5.com/zh/terminal/help/charts_analysis/charts#operations) 不能改变。在设置里选择的 [周期](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#settings) 用于主要测试图表。智能交易系统请求的周期用于其它品种。
- 在品种间切换, 使用 "视图 ― 图表" 菜单。

### 在市场观察力查看价格数据

市场观察显示测试期间生成的价格。它类似于 [交易平台](https://www.metatrader5.com/zh/terminal/help/trading/market_watch) 市场观察, 但有些特殊的功能。为了显示/隐藏此窗口, 在视图菜单里使用市场观察命令或按下 Ctrl+M。

![可视测试期间的市场观察](https://www.metatrader5.com/i/help/terminal/en/visualization_market_watch.png)

品种栏显示当前金融工具的价格信息。显示的品种列表受限于 [主要测试品种](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#settings), 如同在智能交易系统里使用品种的数据。

分时栏包括一个测试期间 [生成的](https://www.metatrader5.com/zh/terminal/help/algotrading/tick_generation) 价格图表。现实的分时数量限制在 64,000。

### 在数据窗口里查看柱线详情和指标数值

数据窗口显示有关价格 (OHLC) 的信息, 柱线的日期和时间, 点差, 交易量和 [指标](https://www.metatrader5.com/zh/terminal/help/charts_analysis/indicators)。在此, 您可以快速查找图表上选择点的特定柱线和应用指标的有关信息。此窗口可以通过点击视图菜单里的 "数据窗口" 或按下 Ctrl+D 来启用或禁用。

![可视测试期间的数据窗口](https://www.metatrader5.com/i/help/terminal/en/visualization_data_window.png)

窗口的上半部包括金融工具名称和图表周期。图表上的当前光标处的有关信息显示在下面。有关 [指标](https://www.metatrader5.com/zh/terminal/help/charts_analysis/indicators) 的信息在单独区域的单独子窗口里打开。

### 在工具箱里查看交易详情

为了详细了解智能交易系统执行的交易, 使用工具箱窗口。它有若干栏目, 信息如下:

- 当前开仓和挂单
- 历史订单和成交
- EA 的历史交易请求, 包括修改挂单, 仓位停止位的请求等等。

> 有关交易操作的参数信息在章节 [交易](https://www.metatrader5.com/zh/terminal/help/trading/performing_deals#position_list) 和 [历史](https://www.metatrader5.com/zh/terminal/help/trading/performing_deals#trade_history)中可用。

![在工具箱里查看交易详情](https://www.metatrader5.com/i/help/terminal/en/visualization_toolbox.png)

其余的有关测试详情在日志里提供。它包括有关测试的信息, 和 EA 在测试期间执行的动作。

> 只要可视化打开, 测试代理的记录不会发送到平台的 [策略测试器](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#result) 上。然而, 它们可以通过交易平台关联菜单里的 "本地代理的本地日志" 命令来查看。

## 在可视模式里测试指标 [#](#indicator)

可视测试模式允许您监视基于历史数据的 [指标](https://www.metatrader5.com/zh/terminal/help/algotrading/trade_robots_indicators) 行为。这个特性可令您在从 [市场](https://www.metatrader5.com/zh/terminal/help/market) 里购买指标之前, 容易地测试它。下载免费演示版并在策略测试器里运行它。

选择 "指标" 程序的类型, 之后选择指标并点击 "开始"。可视模式自动启用。同法设置其余参数, 如同 [交易机器人测试](https://www.metatrader5.com/zh/terminal/help/algotrading/testing#settings)期间。

![在可视模式里测试指标](https://www.metatrader5.com/i/help/terminal/en/visualization_indicator.png)

指标行为显示在图表上, 它基于测试器模拟的分时序列绘制。

## 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/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/optimization_types)
- [真实与生成的分时](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/testing", "name": "策略测试"}} ]}
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "MetaTrader 5: 策略测试", "acceptedAnswer": { "@type": "Answer", "text": "策略测试器允许您的交易策略 ( 智能交易系统 ) 实际应用于真实帐户之前, 对它们进行测试并优化。测试期间, 智能交易系统以初始参数依据历史数据运行。优化期间, 交易策略将使用不同的参数集合运行多次, 从中可以选出最恰当的组合。 策略测试器是多币种工具, 可令您测试/优化多金融工具交易策略..." } }] }
```
