跳转至

如何优化 cBot

在 cTrader 中,可以创建具有任意数量可自定义参数的 cBot,这些参数会影响其行为,例如订单保护级别或默认订单交易量。 这就提出了一个问题:交易者如何准确确定这些参数的最佳值。 幸运的是,cTrader 提供了一个内置工具来处理优化,为交易者节省宝贵的时间。

在本用户指南中,我们重点介绍用户如何优化他们的 cBot,并展示为什么 cBot 优化对于任何算法开发者来说都是必不可少的。

cBot 优化的工作原理

将优化视为一系列回测。 每次回测都在相同的数据上进行,但使用不同的参数值,这些参数值已在 cBot 中编码。

考虑一个 cBot,它可以对快速和慢速周期移动平均线交叉的情况做出反应(快速移动平均线穿越慢速移动平均线)。 我们希望能够自定义 cBot 接收数据的快速和慢速周期数量。

因此,我们的 cBot 应具有以下两个参数。

1
2
3
4
5
[Parameter("Slow Periods", Group = "Moving Average", DefaultValue = 10)]
public int SlowPeriods { get; set; }

[Parameter("Fast Periods", Group = "Moving Average", DefaultValue = 5)]
public int FastPeriods { get; set; }

为了定义最佳参数值,我们需要广泛测试 cBot 在各种市场条件下的表现,以及当给定上述两个参数的不同值时的情况。 如果我们手动执行这些测试,它们将花费大量时间,并且不会提供易于解释的结果集。

幸运的是,我们可以让 cTrader 自动运行这些测试,并在测试结束时提供某些参数值,使 cBot 能够实现最佳结果。 这个过程被称为 cBot 优化。

访问 cBot 优化

要访问 cBot 优化,请执行以下操作。

首先,选择您要优化的 cBot 实例。 如有必要,通过点击 加号 图标并选择一个交易品种,或点击 更多 图标打开上下文菜单并选择 添加实例 来创建新实例。

然后,切换到位于 回测 选项卡右侧的 优化 选项卡。 此选项卡中的中央屏幕应如下所示。

配置优化设置和 cBot 参数

由于优化是一系列回测,您可以配置与常规回测相同的设置。 为此,点击 齿轮 图标并在新打开的菜单中更改值。

要选择 cTrader 需要优化的确切参数,请点击 齿轮 图标右侧的 参数 按钮。

在此子部分中,启用或禁用每个参数名称左侧的标志,以在优化过程中包含/排除这些参数。 请注意,时间框架 参数存在于所有 cBot 中,无论其配置如何。

我们希望优化确定 cBot 启动时将考虑的慢速和快速周期的最佳值。 然而,我们暂时不想尝试其他移动平均线类型。

定义优化标准和算法

可以确定 cTrader 将使用哪些确切标准来在其将进行的回测中选择最佳参数值。

为此,点击由向上线图标表示的 标准 按钮。 您将看到以下部分。

每个标准的设置包括两个菜单。 在左侧菜单中,选择是否应最小化或最大化该标准。 在右侧菜单中,从一组预定义选项中选择应最小化或最大化的标准。 可以通过点击 添加标准 来添加新标准。

在上面的截图中,我们希望 cTrader 最大化我们的净盈利和 cBot 的盈利交易数量。 同时,我们希望最小化最大净值回撤百分比。

为了简洁起见,本文不涵盖自定义优化标准和 GetFitness() 方法。 要了解更多信息,请参阅我们的 技术文档

要选择特定的优化算法,请点击 标准 按钮右侧的 算法 按钮。 应打开以下子部分。

穷举搜索算法非常准确,但资源密集。 当选择 网格 选项时,cTrader 会创建所有可能参数值的网格,并运行所有所需的回测来测试它们。 虽然这个过程很彻底,但可能需要一些时间。

幸运的是,cTrader 包括 遗传算法 选项。 该算法通过将每次回测视为个体,cBot 参数视为基因,优化标准的适应度视为适应性来模拟自然选择。 一旦遗传算法检测到某些参数值的更改将对 cBot 有效性产生递减回报,它就会停止。

由于遗传算法比穷举搜索资源密集度低,但仍能产生准确的结果,我们建议选择此优化方法。

分配资源并执行 cBot 优化

要执行 cBot 优化,请选择 cTrader 将运行回测的历史数据范围。 为此,请使用 优化 选项卡顶部的 日历滑块 或其左右两侧的菜单。

请注意,优化是一个资源密集型过程,可能需要一些时间才能完成。 由于我们希望相对快速地获得结果,我们将选择一年作为优化周期。

cTrader 还允许确定分配给优化过程的 CPU 资源的精确百分比。 要自定义此设置,请点击最左侧日历菜单左侧的 资源 按钮。

在新出现的部分中,拖动滑块以增加或减少 CPU 消耗。

完成资源分配后,您应该准备好进行优化。 为此,请点击最右侧日历菜单右侧的 播放 按钮。 在 cTrader 加载历史数据后,您将看到优化回测实时添加到中央屏幕。

在网格顶部,您还将看到当前的回测次数、已用时间和剩余的优化时间。

任何完成的回测都将标记为绿色勾号。 所有在 cBot 达到止损时进行的回测将标记为灰色勾号。

注意

您可以保存和加载 优化结果,这允许您在不同设备之间传递它们。

解释并应用优化结果

在中央网格中,cTrader 将显示每次回测的多个指标,包括您的 cBot 的盈利交易数量和最大净值回撤百分比。

特别值得注意的是 适应度 列,它显示每次回测的适应度分数。 将适应度分数视为评估回测在最大化/最小化您选择的优化标准方面的程度的指标。 较高的适应度分数表明与这些标准的较高契合度。

要快速选择具有最高适应度分数的回测,只需启用位于中央网格上方的 自动选择最佳回测 标志。 请注意,您可以在优化过程中启用 自动选择最佳回测 标志,cTrader 将动态搜索最佳参数值。

如您在 适应度 列中所见,第 33 次回测提供了与所有其他回测相比的最佳适应度分数。

我们可以安全地点击第 33 次回测旁边的 应用,此回测中使用的参数值将立即应用于我们的 cBot 实例。

慢速周期快速周期 参数的默认值分别为 10 和 5。

与回测一样,交易看板 显示将提供一个净值图表和详细的交易统计信息,总结我们的 cBot 在特定回测期间采取的行动。 请注意,净值图表仅显示中央网格中前 20 次最佳回测。

稳步上升的 余额净值 线进一步证明了第 33 次回测提供了使我们的 cBot 有效运行所需的参数值。

摘要

简而言之,cBot 优化是确保您的自动交易顾问配置得当的强大工具。 我们强烈建议使用不同的标准进行多轮优化,以了解哪些参数值最适合您自己开发或从其他开发者那里获得的 cBot。