MetaTrader 5帮助算法交易, 交易机器人策略优化

策略优化

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

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

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

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

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

如何优化 #

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

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

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

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

快速选择优化任务 #

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

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

在开始页面选择一个热门任务以便快速启动测试。

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

下面将解释所有可用的优化选项。

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

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

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

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

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

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

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

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

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

选择优化设置 #

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

Selecting testing parameters

交易品种和周期

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

日期

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

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

如果没有足够的历史数据形成额外的100柱形图(这对于“月”和“周”的时间周期尤为重要),例如,当指定测试开始日期接近现有历史数据的开始日期时,则测试的开始日期将自动更改。 一条相应的消息添加到策略测试的日志中。

前向

此选项可以使用预置前向周期来验证优化结果,以避免过度拟合优化时间间隔。在前向优化期间,根据所选的前向周期,将“日期”字段中设置的时间段分为两部分(指定前测开始日期时的二分之一、三分之一、四分之一或自定义时间段。)

使用第一时间段的数据进行EA优化。然后选择10%(在全搜索中)或25%(在遗传算法中)的最佳运行,并在前向周期进行测试。两个时间段运行的最佳优化结果可在优化结果前向结果的选项卡上进行比较。

执行

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

现价执行模式下,用户还可以检查EA交易对交易服务器重新报价的反馈。如果要价和现价执行之间的差额超过订单中指定的偏差值,则EA会收到重新报价。

请注意,延迟仅适用于由EA执行的交易(下单,更改停损级别等)。例如,如果EA使用挂单,那么延迟只能用于下单而不能用于订单执行(在真实条件下,订单执行只能在无网络延迟时进行)。

无延迟

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

随机延迟

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

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

固定延迟

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

报价生成模式

选择一种报价生成模式:

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

有关报价生成的更多信息,请参阅相关部分

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

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

初始入金和杠杆

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

其次选择用于测试和优化的杠杆。杠杆作为持仓和订单的预付款,影响的是账户上保留的资金数额

快速跳转到EA编辑

如果您拥有所选EA的源代码,您可以点击此按键以切换到MetaEditor中的编辑页面。

管理优化设置

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

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

此外,您可以快速访问以前的任何优化结果,以及获得结果的设置。

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

您可以更改用于测试/优化的主要交易品种的设置。几乎所有规格参数都可以被重写:交易量、交易模式、预付款要求、执行模式和其他设置。

高级测试设置

当测试策略(例如交易限制、预付款设置和手续费)时,设置您自己的交易账户参数。此选项可以模拟交易商提供的不同交易条件。

优化

选择优化模式:

  • 慢速完成算法 ― 测试所选输入参数的所有可能组合。
  • 快速遗传算法 ― 根据遗传算法搜索输入参数的最佳值。
  • “市场报价”中选择的所有交易品种 ― 使用不同的交易品种测试同一组输入参数。

有关可用类型的更多详细信息,请参阅相关部分

优化标准

优化标准是一个特定因素,该值定义了一组经过测试的参数的质量。优化准则的值越高,给定参数集的测试结果就越好。这仅用于遗传优化。

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

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

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

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

选择输入参数 #

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

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

选择输入参数进行优化

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

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

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

高级测试设置 #

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

高级测试设置可以模拟交易商提供的不同交易条件。

常用

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

预付款

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

Margin settings

风险管理模式:OTC(场外模式)和交易所模式、单边系统模式或锁仓系统模式。

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

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

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

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

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

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

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

手续费

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

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

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

Commission settings

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

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

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

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

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

  • 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)。默认情况下,以基础货币计算的交易/周转值转换为入金货币;然后根据结果值计算最终的手续费(指定百分比)。

手续费收取类型:

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

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

您可以重写主要交易品种的设置,并为此执行测试/优化。几乎所有规格参数都可以重写:交易量、交易模式、预付款需求、执行模式和其他设置。因此,如果您需要在不同条件下检查EA,则无需创建单独的自定义交易品种和下载其历史记录。这可以通过更改标准的交易品种设置来完成。

编辑主要测试交易品种的任何设置以在不同的交易条件下测试策略

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

如果交易品种设置已被更改,则该交易品种将用特殊图标标记

开始优化 #

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

何处查看优化结果 #

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

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

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

优化结果

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

  • 递进 ― 测试运行的数量;
  • 结果 ― 根据 优化准则 得到的参数结果值, 用于选择最佳运行;
  • 利润 ― 运行之后得到的盈利/亏损;
  • 交易总数 ― 运行时得到的交易执行总数 (成交是有固定盈利或亏损的结果);
  • 盈利因子 ― 总赢利与总亏损的百分比。数值为一则表示参数相等;
  • 预期回报 ― 一个统计计算值, 反映一笔交易的平均盈利/亏损;
  • 回撤 ― 净值相对回撤, 最大亏损和最大净值的百分比。优化期间智能交易系统提取的资本在 回撤计算时已经考虑在内;
  • 恢复因子 ― 此值反映了策略的风险程度 (使用资金博取盈利)。它的计算方法, 所获盈利与最大回撤的比值;
  • 夏普比率 ― 一种经典的衡量标准,通常用于评估投资组合经理、基金业绩或交易系统的表现。该比率计算为(Return – Risk-Free Rate)/Standard Deviation of Return。在策略测试中,假设无风险比率(Risk-Free Rate)为零。夏普比率通常描述如下:
  • 夏普比率 < 0 ― 该策略无利润。不好。
  • 0 < 夏普比率  < 1.0 ― 风险不会得到回报。当没有其他选择时,可以考虑这种策略。不明确。
  • 夏普比率 ≥ 1.0 ― 这可能意味着风险得到回报,并且投资组合/策略可以显示结果。好。
  • 夏普比率 ≥ 3.0 ― 高数值表示在每笔特定交易中获得损失的概率非常低。非常好。
  • 优化输入 ― 额外的通用统计数值, 本次运行时的 输入参数 集合值显示于此。

使用关联菜单您可以显示/隐藏上述的一些列。为了您的方便,请勾选“切换到优化结果”选项:优化进程一旦完成,策略测试将会自动切换到结果标签。在日志标签的快捷菜单也可找到相同的命令。

使用过滤器隐藏列表中的不成功的通过:

  • 无交易通过
  • 亏损通过
  • 盈亏通过高于50%
  • 采收率通过低于1
  • 夏普比率通过低于0.5

优化结果表格配色如下,以便更有效地进行视觉分析:

  • 结余:大于初始入金的值用蓝色显示,小于初始入金的值用红色显示。
  • 盈利:大于零的值使用蓝色,小于零的值使用红色。
  • 期望收益:大于零的值使用蓝色,小于零的值使用红色。
  • 盈亏:从绿色(0-5%)到红色(高于30%)。
  • 夏普比率:从绿色(高于2)到红色(小于0)。
  • 采收率:从绿色(高于2)到红色(小于1)。
  • 复杂标准: 从深绿色(大于80)到红色(小于20)。
  • 如果优化包括 前测测试, 这一栏也包括相应的用于从后和向前测试的优化参数值 (优化准测)。您可以使用关联菜单在回测和前测之间切换。
  • 双击优化结果其中之一, 智能交易系统采用这次运行的参数开始 测试 (该优化已完成)。
  • 遗传优化 期间, 测试运行之一 (一名种群成员) 可能与前次测试运行的参数相同 (遗传)。在这种情况下, 本次运行不会显示在结果栏, 因为它已经有相同测试结果了。然而, 优化图形 显示所有测试运行的可视过程用于发现最佳结果。
  • 如果优化运行有一条红色背景线, 它意味着在智能交易系统操作期间有一个 错误 发生。还有一条相应的消息加到测试器 记录 里 ("测试出错")。

优化缓存 #

这个缓存存储了关于以前计算的优化传递的数据。策略测试存储了暂停之后恢复优化和避免重新计算已经计算的测试传递的数据。

优化缓存作为每个EA每组优化参数的单独的二进制文件存储在[平台数据目录]\Tester\cache。文件根据以下规则命名:ExpertName、Symbol、Period、StartDate、EndDate、GenerationMode、OptimizationMode、Hash、opt。其中:

  • ExpertName ― 优化EA交易的名称。
  • Symbol ― 交易品种。
  • Period ― 时间周期(M1,H1,...)。
  • StartDate ― 优化开始日期。
  • EndDate ― 优化结束日期。
  • GenerationMode报价生成模式:0 ― “每一报价”,1 ― “基于真实报价的每一报价”,2 ― “一分钟高开低收(OHLC)”,3 ― “仅开盘价”,4 ― “数学计算”。
  • OptimizationMode优化类型:0 ― “显示完整算法”,1 ― “计算算法快速遗传”,2 ― “市场报价中选择的所有交易品种”。
  • Hash ― 用于查找缓存文件的所有上述参数的散列导数。

缓存文件可以查看之前优化的结果。打开“优化结果”选项卡,选择一个EA交易和带有所需优化缓存的文件:

查看之前优化的结果。

列表包含了磁盘上可用的所有EA交易优化缓存文件,且每个文件都显示了优化日期、测试设置(交易品种、时间周期和间隔)和输入参数。您还可以通过交易服务器过滤优化结果。

通过结果查看模式,您还可以更改您在优化初期选择的优化准则。它显示在结果选项卡,并确定了一组测试输入参数的质量。优化准则的值越高,所考虑的测试传递就越好。在选项卡顶部的列表中选择所需的准则,测试将在“结果”列自动重新计算所有值。

若要使用第三方程序分析结果,例如,Office Excel,优化报告可被保存为文件,通过快捷菜单的“导出XML导出XML”命令。另外,快捷菜单还包括导出和导入缓存文件的命令。使用这些命令,在不同平台之间传输优化结果。

  • 为了优化磁盘空间的使用率,如果30天内没有访问,缓存文件被自动删除。
  • 遗传优化 期间, 每一代计算之后的过渡结果保存在高速缓冲区里 (平台_数据_文件夹/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代理管理器在电脑上安装的代理, 可以在同一电脑上作为远程代理连接。在计算期间, 如果处理器核心有富余的计算能力, 它们能使用所有计算能力来获取更高负载。
  • 如果在扫描网络时无法连接或未找到代理,请打开远程计算机上的Windows防火墙设置,为application\[平台安装目录]\metatester64.exe添加允许传入规则。

如何修改代理设置 #

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

代理设置

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

  • 名称 ― 代理名称;
  • 地址 ― 连接代理的 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 云网络, 在一小时内您就可以完成无网络环境需要数天的计算量。数千核心计算能力可直接在交易平台上使用。

每个优化过程都有限制。优化过程中,EA交易不得向磁盘写入超过4GB的内存(RAM) 。如果超出限制,网络代理将无法正确完成计算,您将不会收到结果。但是,您需要为计算所花费的所有时间付费。