1.5 跑通第一个回测

适用版本 V2V3

本篇重点:本篇用软件自带的「双均线精简」示例,从下载数据到看到回测报告,完整跑通第一次回测。

1 开始之前

请先完成:

  1. 1.3 安装与首次启动:选好数据目录,并勾选下载沪深300作为比较基准。
  2. 1.4 数据管理模块:用 BaoStock 下载你自行选择的股票的日线。示例的回测区间在 2025 年上半年,用 BaoStock 默认的「近 10 年日线」就能覆盖,也包括了计算均线需要的预热期。

随包示例不预填股票,股票池默认为空。先完成第 3 步加载配置,再在左侧「股票池设置」自行添加研究标的,随后下载同一批标的的数据。

2 自带的示例有哪些

V2 自带 4 个示例,每个示例是一对同名文件:.kh 是配置文件,.py 是策略文件。

示例配置 策略做什么 股票池
【1-MA策略案例】双均线精简_使用khMA函数 单只股票:短期均线在长期均线之上且没有持仓时全仓买入,短期均线在长期均线之下且有持仓时全仓卖出。均线用 khMA 计算。 默认空;自行填 1 只
【1-MA策略案例】双均线多股票_使用khMA函数 同样的规则,对股票池里每只股票分别判断。 默认空;自行填入多只
【1-MA策略案例】双均线多股票_使用MA函数 同上,均线改用 MyTT 库的 MA 函数计算,演示先取历史行情再算指标的写法。 默认空;自行填入多只
【2-RSI策略案例】RSI策略 RSI 上穿买入线且没有持仓时买入,下穿卖出线且有持仓时卖出。RSI 用 MyTT 库的 RSI 函数计算。 默认空;自行填入多只

4 个示例的共同设置:日 K 线触发、前复权、初始资金 100 万元、基准为沪深300。回测区间:3 个双均线示例是 2025-01-01 至 2025-07-03,RSI 示例是 2025-01-01 至 2025-06-01。

注意

示例策略的参数故意加入了随机数:双均线示例的短期均线在 3~10 日之间随机取值,长期均线在 15~30 日之间随机取值;RSI 示例的周期和买卖阈值也在一定范围内随机取值。所以每次运行的结果都不一样。示例只用来演示策略的写法,不构成任何策略或投资建议。自己研究时,请把参数改成固定值(策略写法见第 3 部分)。

3 加载示例配置

先填自己的股票池

加载 .kh 后,在左侧「股票池设置」自行添加股票并保存配置;单股票案例填一只,多股票案例可填多只。随后到数据管理下载同一批标的、同一周期的行情,预留指标预热期,再开始回测。示例不会替你选股。下方视频和截图展示的是手动添加标的后的演示状态。

  1. 点主界面工具栏最左边的「加载配置」。
  2. 弹出「加载配置文件」对话框。第一次打开时,对话框直接定位到用户策略目录 文档\KhQuant_OS\strategies,能看到 4 个示例 .kh 文件;右下角的文件类型是「看海配置文件 (*.kh)」,同名的 .py 策略文件不会列出来。
  3. 选中「【1-MA策略案例】双均线精简_使用khMA函数.kh」,点「打开」(或直接双击)。

加载成功后:

  • 窗口标题栏末尾会显示配置文件名。
  • 右侧「系统日志」里出现一条「配置已从以下位置加载:……」。
  • 左侧、中间面板的参数全部按配置填好,「策略文件」一栏填入了同名的 .py 文件。

配置文件里的策略文件路径是相对于 .kh 所在目录记录的,所以不需要再手动重新选择策略文件。

「加载配置文件」对话框,位于 strategies 目录,列出 4 个示例 .kh 文件
「加载配置文件」对话框,位于 strategies 目录,列出 4 个示例 .kh 文件
提示

软件每次启动时,会把自带的示例复制到用户策略目录,已经存在的同名文件不会被覆盖。改坏了示例想恢复原样,可以把用户策略目录里对应的 .kh 和 .py 删掉,重启软件后会重新复制一份。

提示

软件启动时会自动加载上一次打开的配置文件,不用每次都点「加载配置」。

V3 亮点V3:13 个自带案例,外加圈子里持续更新的专栏案例

自带案例更多。 V3 自带 13 个策略案例:除了这 4 个基础案例,还有 T+0 ETF 网格 4 个、数据库指标读写 4 个、日内多次触发 1 个,用户策略目录在 文档\KhQuant\strategies。
专栏案例持续更新。 在软件自带的 13 个之外,「看海的圈子」里还有持续更新的专栏案例,对 V3 用户开放。每篇都附完整的策略代码和配置文件,并逐段讲解写法。目前有两个专栏:

请注意:无论是软件自带的案例,还是专栏里的案例,都只用来演示策略的写法。案例中股票池只是示例(请换成你自己选的标的),关键参数含随机数,回测结果不代表未来收益,不构成任何策略或投资建议。

不开界面也能跑。 同一份 .kh 配置,在 V3 里有三种跑法:

  • 图形界面:和本篇操作完全相同;
  • 命令行:kh run 配置文件.kh,不打开界面直接回测,还能在命令里覆盖参数,适合写脚本批量回测;
  • Web 回测工作台:在浏览器里选配置、点「运行回测」,关掉浏览器任务照常运行,用手机也能看进度。
V3 的 Web 回测工作台,左边是回测参数,右边是运行状态和实时日志(图片来自2.6《Web 端》)
V3 的 Web 回测工作台,左边是回测参数,右边是运行状态和实时日志(图片来自2.6《Web 端》)

4 看一遍参数

加载「双均线精简」后,界面上主要参数如下。这一步只需要看一眼,知道每项在哪里,详细说明在 1.7 和 1.8。

位置 参数 示例的值
左侧「策略配置」 策略文件 【1-MA策略案例】双均线精简_使用khMA函数.py
左侧「回测参数」 基准合约 sh.000300(沪深300)
左侧「交易成本设置」 最低佣金 / 佣金比例 / 卖出印花税 / 流量费 5 元 / 0.0001 / 0.0005 / 0 元
左侧「交易成本设置」 滑点类型 / 滑点值 按成交金额比例 / 1(双边合计 1%)
左侧「回测时间设置」 开始日期 / 结束日期 2025-01-01 / 2025-07-03
左侧「数据设置」 复权方式 / 周期类型 前复权 / 1d
左侧「股票池设置」 股票列表 默认空;请自行填写(旧截图演示为 1 只)
中间「触发方式设置」 触发类型 / 日内触发上限 日K线触发 / 1
中间「账户信息」 初始资金 / 最小交易量 1000000 / 100
中间「盘前盘后触发设置」 触发盘前回调 / 触发盘后回调 都不勾选

左侧面板内容较多,用鼠标滚轮往下滚动才能看到股票池。鼠标停在下拉框、日期框上滚动时,不会误改里面的值。
如果你下载的数据没有覆盖 2025-01-01 至 2025-07-03,可以把「开始日期」「结束日期」改到已下载的范围内。

加载「双均线精简」后的主界面。标题栏末尾显示配置文件名,左侧是策略文件、基准合约、交易成本、回测时间,中间是触发方式和账户信息
加载「双均线精简」后的主界面。标题栏末尾显示配置文件名,左侧是策略文件、基准合约、交易成本、回测时间,中间是触发方式和账户信息

左侧面板往下滚动,可以看到数据设置和股票池:

左侧面板滚到下半部分:复权方式「前复权」、周期类型「1d」、数据字段全部勾选;截图中的 1 只股票是演示时手动添加,随包股票池为空
左侧面板滚到下半部分:复权方式「前复权」、周期类型「1d」、数据字段全部勾选;截图中的 1 只股票是演示时手动添加,随包股票池为空

5 开始运行

  1. 点工具栏上绿色的「开始运行」。
  2. 软件先做回测前的数据检查,弹出「数据完整性检查」进度框,检查股票池和基准在回测区间内的数据是否齐全。检查按每只股票的上市、退市日期判断,上市前和退市后的日子不会被算成缺数据。
  3. 数据齐全时,回测直接开始:
    – 「开始运行」变灰,红色的「停止运行」变为可用;
    – 底部状态栏左侧出现进度条,显示「回测进度: x%」,右侧状态文字变为「回测进行中…」。
  4. 运行结束后,状态栏显示「回测完成」,同时自动弹出回测结果窗口;等延迟的日志全部显示完,状态文字变为「日志加载完成」。演示的 1 只股票、半年日线,一两秒就跑完了。

「设置 → 基本设置」里的「延迟显示日志」默认开启,所以回测过程中右侧日志比较安静:运行日志先缓存起来,回测结束后一次显示。回测结束时,日志里出现「延迟显示模式已启用,正在收集所有日志,请稍候…」,随后缓存的日志一次性显示出来,末尾是「延迟日志显示完成,共显示 N 条日志」。

回测跑完后的主界面,右侧日志末尾是「延迟日志显示完成」等几行
回测跑完后的主界面,右侧日志末尾是「延迟日志显示完成」等几行

在缓存的日志里可以找到这次回测的细节,往上翻就能看到:

  • 「随机参数: 短期均线=10日, 长期均线=19日」这类行,记录这次运行随机取到的参数;
  • 「生成买入信号」「生成卖出信号」行,写明股票、价格、数量和原因,例如「10日线(10.59) 上穿 19日线(10.53),全仓买入」;
  • 每个交易日一行「每日统计」,列出总资产、日收益率、基准净值、持仓市值和可用资金;有成交的日子,末尾还会写「今日成交: N笔」。

这些都是 INFO 级别(白色)。蓝色的 TRADE 级别只用于策略里自己以 [TRADE] 开头写的日志,以及委托出错的提示,详见 1.9。
如果数据检查发现缺数据,会弹出「数据完整性检查」对话框,写明哪些股票缺了多少个交易日,并在「缺失数据明细列表」里逐条列出。对话框底部有三个按钮:

  • 打开数据管理:去补下载数据,回测不会开始。
  • 取消:取消这次回测。
  • 继续回测:不补数据直接回测,结果可能不准确。
回测前数据检查发现缺数据时的对话框(这里是故意把周期改成 1m 触发的):写明缺几只股票、多少个交易日,明细里逐条列出,底部三个按钮
回测前数据检查发现缺数据时的对话框(这里是故意把周期改成 1m 触发的):写明缺几只股票、多少个交易日,明细里逐条列出,底部三个按钮

第一次跑建议点「打开数据管理」,把缺的数据补齐再运行。

注意

数据检查只检查回测区间本身。策略计算均线等指标需要回测开始日期之前的历史数据,这部分不在检查范围内。缺少预热期数据时,策略可能不报错也不交易。下载时请把开始日期往前多留一段。

6 打开回测结果

回测完成后,「回测结果分析」窗口会自动打开。窗口里有:

  • 左侧的核心指标:总收益、年化收益、与沪深300的对比、最大回撤、夏普比率、胜率等;
  • 收益曲线(策略与基准对比)、回撤、每日盈亏和买卖点;
  • 下方的「交易记录」「日收益」「绩效分析」「个股分析」几个页签。

每个指标的含义和各图表的看法,详见 1.10《看懂回测报告》。

「回测结果分析」窗口:左边是基本信息,右边是收益曲线,下方是交易记录等标签页
「回测结果分析」窗口:左边是基本信息,右边是收益曲线,下方是交易记录等标签页
注意

回测结果只说明策略在过去的数据上表现如何,不代表未来收益。示例策略的参数是随机的,结果更没有参考意义。

每次回测完成都会自动存档。关掉结果窗口后,想再看这次的结果,点主界面右下的「回测历史管理」找到对应记录打开(见 1.9)。
如果结果窗口顶部提示缺少基准数据,点提示里的「补基准数据」下载沪深300,再重新回测。

7 保存自己的配置

在示例的基础上改了参数,想留作自己的配置时:

  • 点「配置另存为」,另起一个文件名保存。建议保存在用户策略目录或自己的文件夹里,不要放在软件安装目录下。
  • 点「保存配置」会覆盖当前打开的 .kh 文件,软件会先弹框确认。如果当前配置是从「回测历史管理」里还原来的,点「保存配置」会让你另存为一个新文件,不会覆盖之前打开的 .kh。

.kh 文件是 JSON 格式的文本文件,可以用记事本打开查看。

8 下一步

  • 想知道每个参数的含义、怎么改:看 1.7《回测配置详解》(策略文件、基准、交易成本、滑点、回测区间、复权、股票池)和 1.8《触发方式与盘前盘后》。
  • 想看懂回测报告:看 1.10《看懂回测报告》。
  • 想写自己的策略:看第 3 部分「策略编写」(从 3.1《框架介绍》开始)。

常见问题

问:点「加载配置」后找不到示例文件?
答:示例在 文档\KhQuant_OS\strategies。对话框会记住上一次打开配置的位置,如果之前从别的目录加载过配置,需要手动切换到这个目录。

问:点「开始运行」后弹出「数据完整性检查」,说数据不完整?
答:回测区间内有股票或基准缺数据。点「打开数据管理」补下载;或者把回测区间改到已下载的范围内。明细列表里写明了缺哪只股票、哪些日期。

问:回测跑完了,但一笔交易都没有?
答:多半是历史数据不够,均线算不出来。示例策略在历史 K 线不足时会直接跳过当天。请把日线的下载开始日期往前挪,至少比回测开始日期早 3 个月。另外,示例参数是随机的,某些参数组合在这段时间里本来就可能不触发交易。

问:同一个示例跑两次,结果不一样?
答:示例参数里有随机数,每次运行取值不同,日志开头会打印这次用的参数。把参数改成固定值后,同样的数据和配置每次结果相同。

问:中途点了「停止运行」,为什么没有结果窗口?
答:「设置 → 基本设置」里「停止后直接退出」默认开启:点停止会直接结束,不显示运行报告,也不保存回测记录。需要停止后也保存记录,可以关闭这一项(见 1.12)。

V3

在 V3 里,跑回测有三种方式
  • 图形界面:和本篇操作相同
  • 命令行:kh run 配置文件.kh,不开界面直接回测
  • Web 工作台:浏览器里点「运行回测」,手机上也能看进度

本篇基于开源 V2 和 V3.4.1.10 编写。

×
没有账号?注册  忘记密码?

风险提示

投资有风险,开户需谨慎。本系统仅为投资者提供量化交易相关的数据处理与分析工具,不构成任何投资建议。 请您在审慎思考后作出选择。特别声明:本系统对您与券商之间的交易、合作不承担任何法律责任。 市场有风险,投资需谨慎。

© 2024 khQuant看海量化回测平台 版权所有

官网:www.khsci.com/khQuant