MetaTrader 5帮助

策略优化

策略测试器允许您的交易策略 (智能交易系统) 实际应用于真实帐户之前, 对它们进行测试并优化。测试期间, 智能交易系统以初始参数依据历史数据运行。优化期间, 交易策略将使用不同的参数集合运行多次, 从中可以选出最恰当的组合。

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

策略测试器是多线程的, 因此可以使用所有可用的电脑资源。测试和优化可以使用指定的计算 代理 进行, 它们作为服务安装在客户的电脑上。代理独立工作, 并可并行处理优化递进。

可将无限数量的 远程 代理连接到策略测试器。此外, 策略测试器可以访问 MQL5 云网络。它带来了环球数以千计的代理, 并且这种计算能力可为所有交易平台客户所用。

除了智能交易系统的测试和优化, 您可以使用策略测试器的 可视模式 对自定义指标进行测试操作。这个 功能可以很简单地测试从 市场里下载的演示版自定义指标的操作。

如何优化

优化意即基于历史数据, 使用不同参数集合多次运行智能交易系统, 目的是从中发现最佳组合。多次运行期间, 智能交易系统使用不同参数集合进行测试, 从中发现最佳者。

观看视频: 如何在购买之前测试智能交易系统和指标

观看视频: 如何在购买之前测试智能交易系统和指标

观看视频了解如何在您从市场购买之前测试交易机器人。市场上提供的每款产品都有演示版本可以在策略测试器里检测。详情请观看视频。

如何选择交易机器人进行测试

点击 "测试 测试", 智能交易系统的关联菜单位于 导航器 窗口。

如何选择交易机器人进行测试

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

对于多币种智能交易系统, 在市场观察里启用所需的品种

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

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

在您开始优化多币种智能交易系统之前, 在市场观察里启用测试所需品种。在关联菜单里, 点击 "品种品种" 并启用所需的工具。

对于多币种智能交易系统, 在市场观察里启用所需的品种

选择优化设置

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

选择优化设置

品种和周期

选择测试和优化的主图表。品种选择是必须的, 它将触发智能交易系统内含的 OnTick() 事件。还有, 所选品种和周期将会影响智能交易系统里调用当前图表参数的特殊函数 (例如, Symbol() 和 Period())。换言之, 智能交易系统挂载的图表应在此选择。

日期

选择测试和优化周期。您可以选择一个预定义周期, 或设置一个自定义时间段。为了设置自定义周期, 在相应字段里输入开始和结束日期。

测试器下载数据时将会特意在指定开始日期之前加入若干柱线的冗余数据 (不少于 100 根柱线)。这是更精准测试和优化所要求的。例如, 如果您在周线时间帧上进行测试, 会下载两年的数据。

如果没有足够的里数据来形成 100 根柱线 (对于月线和周线时间帧尤其显著), 例如, 当指定的测试开始靠近存在的历史数据开始, 则测试开始日期将会自动偏移。相应的消息添加到策略测试器的 日志

前测

此选项允许您检查优化结果, 以避免时间段拟合。在 前测优化 期间, 日期字段设置的周期根据选择的前测周期分为对应的两部分 (一半, 三分之一, 四分之一, 或自定义周期, 若您指定了前测开始日期)。

智能交易系统使用第一个周期的数据执行优化。在 10% (完全搜索) 或 25% (遗传算法) 的最佳运行被选择之后, 开始前测周期。运行在全部两个周期的最佳优化结果会在 优化结果 栏, 和 前测结果 栏进行比较。

执行

选择策略测试器模拟的交易执行模式。两种执行模式可用: 正常和随机延迟。

在正常模式里, 所有订单按照请求的价格执行, 不会发生重新报价等等。

随机延迟模式可以在测试智能交易系统时最大程度的贴近实际情况。自请求发送之时, 到订单执行之前, 价格可以改变。依据在订单里设置的 偏离, 订单可以按照当前价格执行 (如果在它的偏离范围之内) 或者返回一个重新报价。

在此模式下测试可令您的程序正确处理这种情形。

模拟延迟会在所有发自平台的请求里执行 (订单 放置, 修改 停止位, 等等。)

延迟执行如下施行: 随机选择 0 至 9 的数字 - 这是延迟的秒数; 如果选择的数字等于 9, 则在相同范围内再次选择一个随机数字相加。

因此, 延迟 0-8 秒的可能性为 90%, 延迟 9-18 秒的可能性为 10%。

分时生成模式

选择一个分时生成模式:

  • 每笔分时是最精确的, 但最慢。它模拟所有分时。
  • 每笔分时基于真实分时, 可能更接近真实条件。它使用由券商累积的金融工具的 真实分时。不执行模拟。分时数据的尺寸很大。在首次测试时, 下载它们也许会花费很长时间。
  • 1 分钟 OHLC ― 在此模式只需要模拟每根分钟柱线的 4 个价格 (开盘价, 最高价, 最低价和收盘价)。
  • 仅开盘价 ― 在此模式也是 OHLC 价格模型, 不过仅使用开盘价来测试/优化。
  • 数学计算 ― 在此模型里测试器不会下载品种的历史数据和信息, 且不会生成分时。只有函数 OnInit(), OnTester() 和 OnDeinit() 会被调用。所以测试器可根据需求选择参数, 用于各种数学计算。

更多关于分时生成的信息, 请参阅 相应章节

初始存款和杠杆

指定用于测试和优化的初始存款数额。货币依据 已连接 账户的当前存款币种。下一个选择测试和优化的杠杆。

优化

选择优化模式:

  • 慢速完整算法 ― 测试输入参数的所有可能组合。
  • 快速遗传算法 ― 基于遗传算法搜索输入参数的最佳值。
  • 所有在市场观察里选择的品种 ― 相同的输入参数集合测试不同的工具。

更多可用类型的详情请参阅 相应章节

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

快速优化基于遗传算法, 可以在位于右侧的字段里选择 优化准则 启用。此字段设置参数, 基于许多成功的智能交易系统选择运行。选择的参数值越大, 结果越佳。

设置所有参数之后点击 "开始"。测试和优化过程启动。

  • 策略测试器的设置在开始测试/优化时被记忆。
  • 在正常的优化被停止的情况下 (当您按下 停止按钮) 所有之前计算的运行结果被保存。当恢复优化过程时, 它从上次计算的运行处继续。

选择输入参数

输入参数 允许您控制智能交易系统的行为, 令其适应不同的市场条件以及指定的金融工具。例如, 您可以利用不同 止损止盈 数值来探索智能交易系统的性能, 不同周期的移动均线用于市场分析和决策制定, 等等。

优化是测试输入参数的不同数值组合来获取最佳结果。

选择输入参数进行优化

为了启用参数优化, 标记相应的选框。下一步设置开始和结束数值范围, 以及测试增量。您可以选择一个或多个参数。可能的组合总数显示在参数列表下方。

开始优化

为了开始优化, 在 "设置" 栏上点击 "开始"。优化过程显示在左侧。

何处查看优化结果

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

查看 测试报告 部分可得到详情。

优化报告可按照任意参数排序, 仅需点击每列标头。使用排序来找到最多盈利的参数组合, 并运行一次 单独测试 以便得到详细报告。

优化结果

每次优化运行, 会显示以下数值:

  • 递进 ― 测试运行的数量;
  • 结果 ― 根据 优化准则 得到的参数结果值, 用于选择最佳运行;
  • 利润 ― 运行之后得到的盈利/亏损;
  • 交易总数 ― 运行时得到的交易执行总数 (成交是有固定盈利或亏损的结果);
  • 盈利因子 ― 总赢利与总亏损的百分比。数值为一则表示参数相等;
  • 预期回报 ― 一个统计计算值, 反映一笔交易的平均盈利/亏损;
  • 回撤 ― 净值相对回撤, 最大亏损和最大净值的百分比。优化期间智能交易系统提取的资本在 回撤计算时已经考虑在内;
  • 恢复因子 ― 此值反映了策略的风险程度 (使用资金博取盈利)。它的计算方法, 所获盈利与最大回撤的比值;
  • 夏普比率 ― 此比率体现策略的效率和可靠性。它反应的是持仓时间的算术平均盈利与其标准方差的比率。另外, 此值包括在银行存款利息的无风险比率;
  • 优化输入 ― 额外的通用统计数值, 本次运行时的 输入参数 集合值显示于此。

使用关联菜单您可以显示/隐藏上述的一些列。

  • 如果优化包括 前测测试, 这一栏也包括相应的用于从后和向前测试的优化参数值 (优化准测)。您可以使用关联菜单在回测和前测之间切换。
  • 双击优化结果其中之一, 智能交易系统采用这次运行的参数开始 测试 (该优化已完成)。
  • 遗传优化 期间, 测试运行之一 (一名种群成员) 可能与前次测试运行的参数相同 (遗传)。在这种情况下, 本次运行不会显示在结果栏, 因为它已经有相同测试结果了。然而, 优化图形 显示所有测试运行的可视过程用于发现最佳结果。
  • 如果优化运行有一条红色背景线, 它意味着在智能交易系统操作期间有一个 错误 发生。还有一条相应的消息加到测试器 记录 里 ("测试出错")。

在第三方软件里分析优化结果

为了在第三方软件里分析优化结果, 例如, Office Excel, 优化报告可以通过关联菜单的 "导出为 XML导出为 XML" 命令保存为一个文件。

优化期间获取的所有参数数值和特征保存在 平台_数据_文件夹/tester/cache/ 下的一个 XML 文件。此文件根据以下规则命名: ExpertName.Symbol.Period.GenerationMode.xml, 此处:

  • ExpertName ― 优化的智能交易系统名称;
  • Symbol ― 金融工具;
  • Period ― 时间帧 (M1,H1,...);
  • GenerationMode分时生成模式 (0 ― "每笔分时", 1 ― "1 分钟 OHLC", 2 ― "仅开盘价")。
  • 遗传优化 期间, 每一代计算之后的过渡结果保存在高速缓冲区里 (平台_数据_文件夹/tester/cache/*.gen 下的一个文件)。因此, 优化过程可以在任意时间中断。即使遗传优化过程被外部因素中断 (例如, 电源故障), 一旦您重启, 优化将会自动从最后一次计算的后代继续。遗传优化高速缓存区一直保留, 直到 优化设置 被改变或优化过程完毕。
  • 在正常的优化被停止的情况下 (当您按下 停止按钮) 所有之前计算的运行结果被保存。当恢复优化过程时, 它从上次计算的运行处继续。

优化结果的可视性

交易平台里的策略测试器提供一个强力可视系统用于呈现优化结果。打开 "优化图形"。这一栏里包括若干类型的图表, 您可以使用关联菜单在它们之间切换。

零线 (平面)

所有图形种类, 除了 平板 有一个零线 (或窗格, 如果它是一个三维图表)。如果余额值用作 优化准则, 这条线通常意味着初始存款, 可以分别示意亏损和盈利。在所有的其它情况下这条线绘制在优化准则的零值。

结果图形和线性图表 (1D)

打开省缺的优化结果图形。智能交易系统和输入参数的每次递进在图形上显示为一个点。递进数量显示在水平坐标轴, 参数值是 优化准则 显示在垂直坐标轴。

结果图形和线性图表 (1D)

线性图表 (1D) 显示选择的参数变化作为优化准则 (垂直坐标轴), 依据选择的 优化参数 之一为水平坐标轴。为了选择水平坐标轴参数, 在关联菜单里使用 "X 轴" 命令。

平面图表 (2D) 和三维图表 (3D)

在二维图形模式里, 为优化选择的 参数 变化显示在全部坐标轴上。优化准则的变化使用渐变色显示。颜色越深优化准则的值越高。

平面图表 (2D) 和三维图表 (3D)

在三维图形模式里, 为优化选择的 参数 变化显示在 X 和 Y 坐标轴上。而 优化准则 的变化显示在垂直的 Z 坐标轴上, 并使用渐变色。

为了选择水平坐标轴和垂直坐标轴的参数, 在关联菜单里使用命令 "X 轴" 和 "Y 轴"。

使用鼠标管理 3D 图表

  • 要移动一个图表, 用鼠标左键抓取其中间部分, 并移动光标。
  • 要围绕其垂直轴旋转一个图表, 抓取外侧中心, 并移动光标。
  • 要围绕其水平轴旋转一个图表, 按住 "Ctrl" 键并旋转鼠标轮。
  • 要缩放一个图表, 在图表中部按下 "Ctrl" 并按住鼠标左键, 垂直移动鼠标光标。
  • 要移动零平面, 在图表中部外侧按下 "Ctrl" 并按住鼠标左键, 垂直移动鼠标光标。
  • 要返回图表初始位置, 在其中部双击。

使用键盘管理 3D 图表

动作

显示/隐藏网格。

G

在固体填充和线填充之间切换。

空格

相机上移 (图表下移)。

上箭头

相机下移 (图表上移)。

下箭头

相机移动到右侧 (图表移动到左侧)。

右箭头

相机移动到左侧 (图表移动到右侧)。

左箭头

相机移近 (图表放大)。

加号

相机移远 (图表缩小)。

减号

围绕水平轴旋转图形向下。

Home

围绕水平轴旋转图形向上。

Page Up

围绕垂直轴逆时针旋转图形。

End

围绕垂直轴顺时针旋转图形。

Page Down

移动 零平面 向上一格。

Ctrl+上箭头

移动零平面向下一格。

Ctrl+下箭头

移动零平面向上 10 个单位。

Ctrl+Page Up

移动零平面向下 10 个单位。

Ctrl+Page Down

移动零平面到图形最大值。

Ctrl+Home

移动零平面到图形最小值。

Ctrl+End

增加零平面透明度。

Ctrl+加号

降低零平面透明度。

Ctrl+减号

设置零平面最大透明度 (它会消失)。

Ctrl+右箭头

设置零平面最小透明度 (它会变得不透明)。

Ctrl+左箭头

重置省缺图形设置。

在数字键板上的 "5" 键。

在前测非优化周期里测试交易机器人

向前测试是在不同时间周期重复运行最佳优化结果。此功能允许您避免某段历史数据的参数拟合。

为了开始前测, 在设置栏的前测字段选择 总周期 部分:

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

前测周期

  • 总周期的第二部分 (最后) 一直用于前测。
  • 前测开始日期以垂直线显示在 优化图形上。

所选部分与 "日期" 字段里指定的周期分离。第一部分是回测周期, 第二部分是前测周期。

智能交易系统的全面优化 (慢速或快速) 是在回测周期里进行。在 10% (完全搜索) 或 25% (遗传算法) 的最佳运行被选择之后, 开始前测周期。

前测有一个递进数量的最低限制。如果最佳运行数量少于 256, 额外的最佳运行将被用于前测, 直到它们的数量达到 256。如果所有运行的数量少于 256, 它们会全部参与前测。

回测和前测结果可以在 "优化结果" 里 (在关联菜单里选择 "前测结果") 和 "前测结果" 栏里比较。结果吻合得越好, 越有可能在真实交易里智能交易系统将有上佳表现。

前测周期可视性优化结果在 "前测优化图形" 栏里可用。若要与回测比较这些结果, 使用关联菜单在它们之间切换。

前测优化结果

有关测试结果的详情, 请参阅章节 "何处查看优化结果""优化结果可视化"

使用代理进行多线程测试

多线程策略测试器使用所有可用的电脑资源。测试和优化使用指定的计算代理进行, 它们作为服务安装在客户的电脑上。代理独立工作, 并可并行计算优化递进。

三种代理类型可用: 本地, 远程和云 (MQL5 云网络)。当您安装交易平台时, 本地代理会自动安装。它们的数量等于计算机逻辑核心的数量。

远程和云网络运行在其它电脑上。有关代理的详情, 请参阅 "如何使用本地代理领地加速优化""如何使用 MQL5 云网络加速优化"

在策略测试器里打开 "代理" 部分, 并选择您打算用于优化的代理类型。

测试代理

提示和特点:

  • 为了节省笔记本电池, 可以禁用本地代理, 只使用远程和云里的。
  • 如果测试/优化没有手工完成 (既非在 设置栏 按下停止按钮, 也非关闭交易平台), 已用的本地代理进程在 5 分钟之内不会从电脑内存里卸载。这个特点可以避免连接时准备价格历史的延迟, 以及当同一智能交易系统以相同品种、时间帧和时间周期重新测试/重新优化之时启动代理进程。
  • 在平台安装时只有本地代理一并安装。它们仅用于本地平台的策略测试器。远程代理 也可被连接到全球 MQL5 云网络, 它只能通过 手工 安装。

如何使用本地代理领地加速优化

您可以购买一个多核处理器, 但它不能倍增并发任务。您可以在局域网里创建您自己的代理领地。

如何创建一个代理领地

在局域网的每台电脑上安装代理。如果平台安装在一台电脑上, 使用 "工具" 菜单打开测试代理管理器。

策略测试器代理管理器

否则, 下载一个单独的应用用来管理代理 MetaTrader 5 策略测试器代理 并走遍简单地安装过程。

在管理器的服务栏上:

  • 选择安装的代理数量。它们将按照逻辑核心的数量安装。
  • 输入连接代理的密码。
  • 选择连接的端口范围。
  • 点击 "添加"。

安装之后, 代理在局域网内可由其它电脑用户使用。

远程代理仅能用在 64 位系统上。

为节省流量和磁盘空间, 以及出于安全原因:

  • 智能交易系统的消息 (Print() 函数), 和关于交易操作的消息均未添加到日志里;
  • DLL 调用在远程代理中是禁用的。

如何连接代理

打开策略测试器。在 "代理" 栏里, 选择 "本地网络领地" 并在关联菜单里点击 "添加"。

如何添加远程代理

最简单和最快速的方法是自动扫描局域网内的一片范围的 IP 地址和端口。选择它们并输入安装时指定的代理连接密码。

在局域网里搜索代理

点击 "完成", 所有已发现代理可用于测试。

添加代理的其它选项:

  • 添加代理 (通过 IP 地址或域名) ― 指定安装代理的服务器 IP 地址或域名, 以及端口范围和连接代理的口令。
  • 从文件 *.mt5 导入― 选择此选项, 点击 "下一步" 并指定您打算导入的代理 *.mt5 文件。

使用 MetaTester 5代理管理器在电脑上安装的代理, 可以在同一电脑上作为远程代理连接。在计算期间, 如果处理器核心有富余的计算能力, 它们能使用所有计算能力来获取更高负载。

如何修改代理设置

为了修改设置, 在关联菜单里点击 "编辑编辑" 命令。

代理设置

以下字段在设置窗口里可用:

  • 名称 ― 代理名称;
  • 地址 ― 连接代理的 IP 地址和端口, 以冒号分隔;
  • 密码 ― 连接密码;
  • 启用 ― 此选项可以在测试和优化期间启用或禁用代理。

在本地代理设置里只有启用/禁用选项可用。

导入和导出远程代理设置

为令远程代理设置更加容易, 平台提供一个功能来导入和导出它们的设置。设置文件具有 *.mt5 扩展名。导入和导出命令位于 "代理" 栏的关联菜单里。

设置文件有如下格式: 名称;地址:端口;密码;描述;启用。

  • 名称 ― 代理名称;
  • 地址:端口 ― 连接代理的 IP 地址和端口, 以冒号分隔;
  • 密码 ― 连接密码;
  • 描述 ― 正在运行代理的硬件描述;
  • 启用 ― 代理操作模式: 1 ― 代理启用, 0 ― 代理禁用。

不同的代理设置相互间以换行分隔。

如何使用 MQL5 云网络加速优化

MQL5 云网络利用数以千计的电脑能力快速优化您的 EA。网络组合远程代理并在它们之中分派优化任务。策略测试器通过多个存取点连接云网络, 即按领域分派 (如, MQL5 云欧洲)。

MQL5 云网络特点

  • 整个 MQL5 云网络的能力仅用于 完整慢速优化
  • 遗传优化 期间, 只使用一个存取点的代理。它与遗传算法的具体特点相连。
  • 当优化步骤总数超过一亿, 遗传优化模式自动启用。
  • MQL5 云网络仅能用在 64 位系统上。
  • 除了使用 MQL5 云网络, 您可以在网络里提供您的 CPU 计算能力。使用特别工具 MetaTester 安装远程代理并将其融入网络。
  • 参阅更多有关 MQL5 云网络信息, 请至 官方网站

支付 MQL5 云网络使用费

  • 使用 MQL5 云网络的代理是付费的。开销计算公式在 单独章节 里描述。当前 MQL5 社区账户余额显示在云代理列表的上边。
  • 要使用 MQL5 云网络, 一名用户需要在 MQL5 社区的账户里至少有 1 美元。任务通过封包并发传送到若干存取点, 用户必须能够支付完整的任务。网络不能准确计算开销, 因为在开始计算之前, 所需时间和资源无法评估。

启用 MQL5 云网络

为了使用网络代理, 在关联菜单里使用命令 "启用 启用"。由于 MQL5 云网络是付费服务, 用户必须在 MQL5 社区 网站上有一个账户, 通过它所有计费操作被执行。账户详情在平台设置的 MQL5 社区 栏里指定。

在启用 MQL5 云网络代理之前, 如果您未能在您的 MQL5 社区账户里指定详情, 您将被要求完成这步。

启用 MQL5 云网络

如果您还未在网站上注册, 使用 创建新账户 链接。

使用 MQL5 云网络开始计算

就像常规的优化, 您需要设置所有的测试选项和智能交易系统的输入参数。在代理栏, 您可以监控策略测试器如何分派任务到可用的代理。显示每个存取点可用以及当前使用的代理数量。

使用 MQL5 云网络代理运行分派的计算

交易者可能需要在合理的时间内运行几十万次优化过程。利用多线程策略测试器和 MQL5 云网络, 在一小时内您就可以完成无网络环境需要数天的计算量。数千核心计算能力可直接在交易平台上使用。