本篇重点:本篇用软件自带的「双均线精简」示例,从下载数据到看到回测报告,完整跑通第一次回测。
1 开始之前
请先完成:
- 1.3 安装与首次启动:选好数据目录,并勾选下载沪深300作为比较基准。
- 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 后,在左侧「股票池设置」自行添加股票并保存配置;单股票案例填一只,多股票案例可填多只。随后到数据管理下载同一批标的、同一周期的行情,预留指标预热期,再开始回测。示例不会替你选股。下方视频和截图展示的是手动添加标的后的演示状态。
- 点主界面工具栏最左边的「加载配置」。
- 弹出「加载配置文件」对话框。第一次打开时,对话框直接定位到用户策略目录
文档\KhQuant_OS\strategies,能看到 4 个示例.kh文件;右下角的文件类型是「看海配置文件 (*.kh)」,同名的.py策略文件不会列出来。 - 选中「【1-MA策略案例】双均线精简_使用khMA函数.kh」,点「打开」(或直接双击)。
加载成功后:
- 窗口标题栏末尾会显示配置文件名。
- 右侧「系统日志」里出现一条「配置已从以下位置加载:……」。
- 左侧、中间面板的参数全部按配置填好,「策略文件」一栏填入了同名的
.py文件。
配置文件里的策略文件路径是相对于 .kh 所在目录记录的,所以不需要再手动重新选择策略文件。

软件每次启动时,会把自带的示例复制到用户策略目录,已经存在的同名文件不会被覆盖。改坏了示例想恢复原样,可以把用户策略目录里对应的 .kh 和 .py 删掉,重启软件后会重新复制一份。
软件启动时会自动加载上一次打开的配置文件,不用每次都点「加载配置」。
自带案例更多。 V3 自带 13 个策略案例:除了这 4 个基础案例,还有 T+0 ETF 网格 4 个、数据库指标读写 4 个、日内多次触发 1 个,用户策略目录在 文档\KhQuant\strategies。
专栏案例持续更新。 在软件自带的 13 个之外,「看海的圈子」里还有持续更新的专栏案例,对 V3 用户开放。每篇都附完整的策略代码和配置文件,并逐段讲解写法。目前有两个专栏:
不开界面也能跑。 同一份 .kh 配置,在 V3 里有三种跑法:
- 图形界面:和本篇操作完全相同;
- 命令行:
kh run 配置文件.kh,不打开界面直接回测,还能在命令里覆盖参数,适合写脚本批量回测; - 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,可以把「开始日期」「结束日期」改到已下载的范围内。

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

5 开始运行
- 点工具栏上绿色的「开始运行」。
- 软件先做回测前的数据检查,弹出「数据完整性检查」进度框,检查股票池和基准在回测区间内的数据是否齐全。检查按每只股票的上市、退市日期判断,上市前和退市后的日子不会被算成缺数据。
- 数据齐全时,回测直接开始:
– 「开始运行」变灰,红色的「停止运行」变为可用;
– 底部状态栏左侧出现进度条,显示「回测进度: x%」,右侧状态文字变为「回测进行中…」。 - 运行结束后,状态栏显示「回测完成」,同时自动弹出回测结果窗口;等延迟的日志全部显示完,状态文字变为「日志加载完成」。演示的 1 只股票、半年日线,一两秒就跑完了。
「设置 → 基本设置」里的「延迟显示日志」默认开启,所以回测过程中右侧日志比较安静:运行日志先缓存起来,回测结束后一次显示。回测结束时,日志里出现「延迟显示模式已启用,正在收集所有日志,请稍候…」,随后缓存的日志一次性显示出来,末尾是「延迟日志显示完成,共显示 N 条日志」。

在缓存的日志里可以找到这次回测的细节,往上翻就能看到:
- 「随机参数: 短期均线=10日, 长期均线=19日」这类行,记录这次运行随机取到的参数;
- 「生成买入信号」「生成卖出信号」行,写明股票、价格、数量和原因,例如「10日线(10.59) 上穿 19日线(10.53),全仓买入」;
- 每个交易日一行「每日统计」,列出总资产、日收益率、基准净值、持仓市值和可用资金;有成交的日子,末尾还会写「今日成交: N笔」。
这些都是 INFO 级别(白色)。蓝色的 TRADE 级别只用于策略里自己以 [TRADE] 开头写的日志,以及委托出错的提示,详见 1.9。
如果数据检查发现缺数据,会弹出「数据完整性检查」对话框,写明哪些股票缺了多少个交易日,并在「缺失数据明细列表」里逐条列出。对话框底部有三个按钮:
- 打开数据管理:去补下载数据,回测不会开始。
- 取消:取消这次回测。
- 继续回测:不补数据直接回测,结果可能不准确。

第一次跑建议点「打开数据管理」,把缺的数据补齐再运行。
数据检查只检查回测区间本身。策略计算均线等指标需要回测开始日期之前的历史数据,这部分不在检查范围内。缺少预热期数据时,策略可能不报错也不交易。下载时请把开始日期往前多留一段。
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)。
- 图形界面:和本篇操作相同
- 命令行:kh run 配置文件.kh,不开界面直接回测
- Web 工作台:浏览器里点「运行回测」,手机上也能看进度
本篇基于开源 V2 和 V3.4.1.10 编写。