优化器与市场状态预设
优化器用不同的设置把行情记录回放成千上万次,然后告诉你最好的那一组能被信任到什么程度。
搜索
你选择哪些设置自由、哪些锁定。优化器在自由设置的范围内采样,然后围绕最佳点细化。一个入选结果按它的邻域来评分:如果一组设置的近邻表现都很差,那它只是侥幸,不是发现。在给定随机种子下,运行结果是确定的。
你可以按净收益排名,也可以按扣除不确定性的保守分数排名。两者始终都会显示,并列出轮次、胜率和最大回撤。
有哪些数据可用
行情记录有两份,两份都是私有的。管理器在你自己的电脑上记录一份。在线的回测和优化在我们的运行器上进行,使用我们自己记录的行情记录,每次一个按小时划分的文件。两份都不提供下载,在线服务返回的只有结果(统计数据、设置、时间以及每一轮的净收益),绝不包含价格或逐笔数据。
由于行情记录只存在于开始记录之后,数据量有限,并且每小时都在增长。设置步骤以可用数据面板开头,针对机器人的币种并按你的本地时区说明:
- 已记录了多少、从何时到何时,例如“ETH:已记录 74 h,从 10 月 20 日 14:00 到 10 月 23 日 01:10 CEST”;
- 新鲜程度:“正在记录”,或者当最新数据已经很旧且没有更新的数据到达时,显示“已过期”以及它是多久前结束的;
- 有多少个缺口、最大的缺口是多少,以及有多少个完整的小时(不完整的小时价格更新太少,不计入);
- 或者在尚无数据时显示“尚未记录 ETH。记录服务会持续记录;请一小时后再来看。”
应用显示记录中最近 14 天的内容。
选择时间范围
时间范围是一段已记录的行情记录。优化器只从你选定的时间范围中学习,别无其他。时间以你的本地时区显示(会显示时区名称,例如 CEST);底层数据仍保持 UTC。
预设
预设按钮会在你按下之前显示它将添加的内容,例如“最近 24 小时 · 23 h 40 m”。这个数字是那段时间里实际已记录的部分。“最近”指的是最新已记录的行情。如果记录落后了,应用会说明,并显示行情记录是多久前结束的,让你知道“最近 24 小时”并不是截止到现在。
市场状态
你可以不选日期,而是选择一种市场类型。每个状态按钮会显示有多少已记录的小时符合它,例如“趋势上行 · 9 h”。状态是相对的:它会挑出你自己记录中(或你衡量的区间内)排在最前面的小时,所以即使是平静的一周,也总会有“最活跃”的小时。多个状态可以叠加。不完整的小时从不计入。
手动设置时间范围
在图表上拖动,点击某个小时或在其上按 Enter,或者按你的本地时间输入起始和结束。重叠的时间范围会合并。每个时间范围标签会写明它覆盖的时间以及其中的缺口,例如“10 月 22 日 08:00 至 14:00 CEST(6 h 中的 5 h,1 个缺口)”。
缺口与预热
记录中断的地方没有行情记录。跨越缺口的时间范围会跳过它,缺口之后回放会干净地重新开始。每一段不间断行情的第一分钟是预热:策略需要这段时间来建立成交量基线,并且不在其中交易。剩下的就是可交易时间,所以一个时间范围的可交易时间总是比覆盖时间略少,许多零碎的片段损失的比一段长的更多。
合并或分别
合并会找出一组对所有时间范围都有效的设置。分别则对每个时间范围各运行一次搜索,当你选了两种或更多市场状态时则对每种市场状态各运行一次,方便你比较。然后每个时间范围单独验证,因此较短的时间范围只能做样本内测试,所需时间大约是时间范围个数的倍数。
选择计量条
在时间范围列表下方,计量条会说明你选了多少已记录的数据,以及这能带来什么,例如:
已选 6 h 10 m / 可用 74 h(8%) · 预热后约有 6 h 可用于交易
允许:已在未见过的数据上测试(滚动前向验证)
再增加约 42 h 即可达到按天验证,留出若干天作保留集。
进度条显示同样的比例。“再增加约”这一行指出下一个级别,以及还需要多少覆盖的行情记录。如果即便把所有已记录的数据都用上也不够,计量条会这样说明,唯一的办法就是等待更多行情记录。这些都是按优化器所用的同一套规则做出的估算。运行结束时,最终结果会重新评级。
验证
入选结果如何被检验,取决于覆盖的行情记录(你的时间范围内有行情记录的时间,预热之前):
| 覆盖的行情记录 | 验证方式 |
|---|---|
| 不足 1 h 20 m,或交易轮次很少 | 仅样本内。结果会标注为样本内,且评级不能高于轶事级。 |
| 1 h 20 m 至两天 | 滚动前向验证:每一段都用仅在更早的行情记录上搜索出的设置来评分。 |
| 两天或以上 | 按天做滚动前向验证,另加最近四分之一的保留集,在你揭晓之前一直隐藏。 |
无论行情记录允许什么,只有当入选结果产生足够多的交易轮次(每个切片约 20 轮或以上)时,未见过的数据上的测试才算数。
结果以什么开头
最大的数字是未见过的数据上的净收益:入选结果在搜索从未见过的切片上赚了多少。设置所拟合的数据上的利润显示得更小,标为“在同一数据上拟合”,因为它有美化作用。当一次运行无法在未见过的数据上测试时,标题会写未在未见过的数据上测试,而不是显示一个数字。
当入选结果在未见过的数据上亏钱,或者表现比随机有效设置的中位数更差时,会出现警告(“此选择在未见过的数据上比随机设置更差”)。机器人的“依据”区块保留相同的数字:先是未见过的数据上的净收益,然后是拟合净收益,以及成交延迟翻倍时的净收益。
可靠度等级
| 等级 | 依据 |
|---|---|
| 噪声 | 入选结果背后的交易轮次少于 10 轮。 |
| 轶事级 | 10 到 100 轮,或者轮次更多但没有非负的样本外结果。 |
| 参考级 | 101 到 300 轮,且样本外净收益不为负。 |
| 可用 | 超过 300 轮,样本外为正,成交更慢时仍为正,并且领先于基准。 |
如果成交被建模为瞬时成交,最高等级会被封顶,因为更慢成交的压力测试将失去意义。管理器的默认值是 1 到 3 秒的成交延迟。如果没有任何设置能产生哪怕一轮交易,结果就是“没有可排名的内容”,而不是编造一个赢家。
市场状态预设
不选日期,而是选择一种市场类型。预设会用相对于你自己行情记录的阈值来挑选已记录的小时,然后把它们合并成时间范围。
| 预设 | 挑选符合以下条件的小时 |
|---|---|
| 趋势(向上、向下或任一方向) | 有方向性:价格相对其波动区间移动很远,且超过大多数小时。 |
| 震荡 | 波动区间很大但原地不动。 |
| 高波动 | 波动区间属于最宽的一档。 |
| 平静 | 波动区间窄且成交量低。 |
| 活跃 | 成交量属于最高的一档。 |
| 与当前相似 | 在漂移、波动区间和成交量上最接近最近几个小时。 |
选择多个预设并选择分别优化,可以为每种市场状态得到一组设置;选择合并则得到一组折中的设置。如果各市场状态下的设置看起来毫无相似之处,那本身也是一种信息。
入选结果只是模拟运行的候选,绝不是切换到实盘的指示。