策略回测使用说明:从示例策略到自己写条件

策略回测怎么用玩法指南 · 全部指南 · 发布 2026-07-15 · 更新 2026-08-24

回测回答的是「这个想法过去成不成立」,不是「今天买什么」。页面打开时上面就有几个可以直接跑的示例——点一下装进画布,再点「开始回测」。每个例子演示一种写法,从最简单的单条件到用函数、到卖出条件里用持仓字段。

两种写法

积木:选字段、选比较、填数
适合不想记字段名的时候。左边选字段(按十类分组),中间选 ≥ / ≤ / =,右边填数。多行之间默认是「同时满足」,勾上「满足任一条」就变成或。积木下方实时显示等价表达式——那就是真正送去回测的东西,积木只是它的输入界面。
表达式:直接写条件

形如 rs3m >= 90 and dist_ma20 >= 0。支持 and or not、比较、四则运算和括号。可用函数:

函数含义
ma(20) / ma(close,20)20 日均值,省略第一个参数时对收盘价
ema(20)指数均值
ref(close,1)前 1 日的值
count(zt>0,5)近 5 日里满足条件的天数
sum(amt,5)近 5 日求和
hhv(high,20) / llv(low,20)近 20 日最高 / 最低
std(close,20)近 20 日标准差
cross(ma(5),ma(20))前者上穿后者
abs(x)绝对值

滚动类函数(ma/ema/count/sum/hhv/llv/std)一条表达式里最多 5 个——每个都要把全市场全历史算一遍,多了会让回测排队。先用少几个条件把方向试出来。

可用字段(共 65 个,分 11 类)

点开看全部
分类字段
强度nhbp 强度新高但价未新高、rsnh 强度线新高、rs12m 相对强度·12月(0-99)、rs1m 相对强度·1月(0-99)、rs3m 相对强度·3月(0-99)、rs6m 相对强度·6月(0-99)
均线位置ma20r 60日内站上20日线占比、bull_ma 均线多头排列、dist_ma10 距10日线、dist_ma120 距120日线、dist_ma20 距20日线、dist_ma250 距250日线、dist_ma30 距30日线、dist_ma5 距5日线、dist_ma60 距60日线
涨跌幅p20 20日涨幅、p250 250日涨幅、p5 5日涨幅、pct60 60日涨幅、p1 当日涨幅、d52 距52周高点、dist_hi 距63日高点、gap 跳空
涨停zt 当日涨停、zt_mla 涨停且属主线、lb 连板数
量能ud 20日U/D量比、amt 成交额、turn 换手率、rv 相对量(50日)、vr10 量比(10日)、vr20 量比(20日)、vr 量比(5日)、vr60 量比(60日)、vhy 量能52周新高
市值与上市ldays 上市交易日数、mc 总市值、fmc 流通市值
波动与振幅adr 20日均振幅、boll_w BOLL带宽、amp 当日振幅、ampr 振幅/20日均振幅、dcr 收盘在当日区间位置、vw 近15日日均波幅
形态vcp VCP波动收缩、nh52 创52周新高、px_nh 创63日新高、cup 杯柄形态、stage 阶段
技术指标boll_pos BOLL带内位置、kdj_d KDJ-D、kdj_j KDJ-J、kdj_k KDJ-K、macd_dea MACD-DEA、macd_dif MACD-DIF、macd MACD柱、macd_x MACD金叉、rsi12 RSI(12)、rsi24 RSI(24)、rsi6 RSI(6)
均线交叉cross10_20 10日线叉20日线、cross20_60 20日线叉60日线、cross5_10 5日线叉10日线、cross5_20 5日线叉20日线
其它tape_amt tape_amt

字段右边的单位提示在积木里会显示。close/open/high/low/vol 这些基础序列在表达式里能用,但不出现在积木清单里。

买多少、怎么卖

账户模式 vs 等权篮子
账户模式(默认)算的是「拿 10 万块跟着它做会怎样」:有本金上限、一手 100 股、最多同时持有 N 只、买过的不重复买。等权篮子假设每个信号都买得上,算的是选股条件的平均质量。实测同一策略两者差 39 个百分点,差额全在「信号给了但你没买上」——详见 账户级 vs 等权篮子
卖出条件
止盈、止损、持有天数三个框各管一件事,任一触发就卖。还可以再写一条自定义条件,用持仓字段:profit 盈亏%、held 持有天数、cost 买入价、px 当前价。例如 profit >= 10 and dist_ma5 < 0 ——赚够 10% 且跌破 5 日线才走。多条之间是「满足任一条就卖」。

一字板:买不买得到,要你自己决定

我们用真实成交数据量过这件事

回测里最容易高估收益的地方,是把开盘一字板的涨幅算成你的收益——你挂单排队,成交回报永远不来。所以默认口径是当作买不到

但我们用 2020 年以来的真实大单数据核过这一刀,发现它切得偏狠:

类别样本当天成交额中位换手中位成交笔数中位
真一字(开=高=低=涨停价)33246472 万1.53%846
开盘涨停但盘中开板225350168 万9.62%1868
盘中封板4550937129 万7.58%2455

真一字当天成交中位 6472 万、846 笔,不是零。但时点分布说明了另一半:那批最大的成交几乎全在 09:30 那一分钟,三分之一的一字板 20 笔大单全挤在 5 分钟内——队列开盘就排满了,成交给的是集合竞价就把单子挂进去的人。

三种口径,以及一个反直觉的发现

能否成交取决于队列位置,而队列深度我们观测不到(封单数据 2025 年 6 月才有)。所以我们不猜一个成交概率,而是把假设摆出来让你选:

口径含义适合
当作买不到(默认)一手也买不到,按现金计保守估计,也符合常识
按当日成交额判订单金额不超过当天成交额的百分之一才算排得上;没有数据的一律当买不到大账户
当作买得到按涨停价成交看上限,不是结论

反直觉的一点:中间那档对小账户完全不起作用。实测同一个连板策略、阈值不变、只改本金:10 万和 100 万一次都没被卡住,500 万(每格 50 万)才开始出现 4 次,1 亿本金 54 次。

也就是说——小账户买不到一字板,不是成交额不够,是排队排不上;大账户才变成成交额的问题。前者我们没有数据可以判,所以默认保留最保守的口径。

覆盖范围:大单数据只采当日龙虎榜上榜股与涨停股,涨停类策略的信号有 97%~99% 能对上;趋势与形态类策略基本没有,所以那些策略换这个口径不会有变化。

买 top 几:一个比选股条件更影响结果的维度

同一套条件,七种挑法,跨度 68 个百分点

选股条件选出 227 只,账户只能买 10 只——挑哪 10 只,本身就是策略的一部分,而且影响可能比条件本身还大。

实测本站选股器的「小盘高换手活跃」模板(日均匹配 227 只,持有 10 日,15% 止盈 8% 止损,2022 年起):

买前 10 只的挑法年化相位极差笔数
按总市值 小→大+17.33%3.42pp2235
随机挑-29.13%10.54pp2380
按振幅 小→大-27.59%4.87pp1964
按当日涨幅 大→小-48.59%0.47pp3309
按成交额 大→小-49.70%0.33pp3357
按换手率 大→小-50.80%0.34pp3548
按相对强度·3月 大→小-50.96%0.36pp3225

从 -50.96% 到 +17.33%,跨度 68 个百分点。选股条件一个字没改。

三件值得注意的事

一、最直觉的几种挑法全是最差的。按强度、按成交额、按涨幅、按换手——四个「看着最该选」的指标全在 -48% 到 -51%。唯一为正的是按市值从小到大。在一个「小盘高换手」的池子里再往小市值挑,这个结果本身合理(小市值因子),但它说明排序字段不是随便选的,它本身就是一个策略维度

二、指定排序后相位极差塌了。随机挑是 10.54pp,一旦指定排序就掉到 0.33~0.47pp。这不是好事——排序把「买哪几只」的随机性彻底消掉了,结果变得高度确定,但那是对这段历史的确定。相位极差变小,意味着「收益要压得住噪音」这一关变容易通过了,而它本该更难通过。

三、这个控件默认「随机挑」。随机无偏,但不是真人做法——真人会按某个指标排序。那个选择本身就是策略的一部分,所以我们不替你选,也不建议照抄上表里最好看的那个:它只是七种挑法里在这段历史上最好的一个。

上表第一行怎么配出来的

照着填一遍,能看清一套策略是由哪几块拼出来的:

填哪里填什么为什么
选股条件mc <= 80 and turn >= 10 and amt >= 2市值 80 亿以内、换手 10% 以上、成交额 2 亿以上(本站选股器「小盘高换手活跃」模板的条件)
持满10 日没有更早的卖出信号时,第 10 天收盘卖
止盈 / 止损15% / 8%先到哪个算哪个;不填就是裸持到期
买前几只按什么挑总市值 小→大这一栏在买入节点上。条件每天选出约 227 只,账户只买得起 10 只,这里决定挑哪 10 只
本金 / 最多持有10 万 / 10 只决定每格多少钱,也决定一手 100 股买不买得起
起始2022-01-01面板从这天起
扰动扫描勾上不勾只给一条曲线,勾上才给相位极差

换掉其中任何一格,结果都会变。上表七行的差别只来自「买前几只按什么挑」这一格——其余六格完全一样。

这也是我们不把它当成推荐的原因:它是七种挑法里在这段历史上最好的那个。真正该带走的不是这个配置,而是「买 top 几」这一格值得你认真想

为什么结果是一组数而不是一条曲线

相位分歧
勾着「扰动扫描」时,同一策略会按起始日逐日后移各跑一遍。同一策略仅起始日差一天,年化可以差 10~100 个百分点——结果页上那条「相位分歧」散点就是这个量级。比它小的任何差异都不足以说明问题,包括你调参数调出来的那点提升。详见 相位分歧
成交记录要看
结果页的「成交记录」标签里是每一笔成交,带卖出原因。概览里还会印「信号给了但你没买上 N 次」的拆分——资金不足、一字买不到、已持有、满仓。很多人回测赚钱、实盘亏钱,差额就在这几个数里。

常见问题

策略回测怎么用?

先点页面上的示例装进画布,再点「开始回测」。条件有两种写法:积木(选字段、选比较、填数)和表达式(直接写 rs3m >= 90 and dist_ma20 >= 0),两者等价,积木下方会实时显示等价表达式。

回测有多少个字段可以用?

65 个,分 11 类:强度、均线位置、涨跌幅、涨停、量能、市值与上市、波动与振幅、形态、技术指标、均线交叉。表达式里还能用 close/open/high/low/vol 这些基础序列,以及 ma/ema/ref/count/sum/hhv/llv/std/cross/abs 十个函数。

账户模式和等权篮子有什么区别?

账户模式算的是「拿 10 万块跟着它做会怎样」:有本金上限、一手 100 股、最多同时持有 N 只、买过的不重复买。等权篮子假设每个信号都买得上,算的是选股条件的平均质量。实测同一策略两者差 39 个百分点,差额全在「信号给了但你没买上」。

符合条件的股票比仓位多时,买哪几只?

由你自己指定。买入节点上有一栏「按什么挑前几只」,可以按成交额、换手率、相对强度、市值等排序,默认随机挑。这一格影响很大——实测同一套选股条件、七种挑法,年化跨度 68 个百分点。

为什么结果给的是一组数而不是一条曲线?

同一策略仅起始日差一天,年化可以差 10~100 个百分点。勾上「扰动扫描」后,回测会按起始日逐日后移各跑一遍,结果页上那条「相位分歧」散点就是这个量级。比它小的差异不足以说明问题。

卖出条件怎么写?

止盈、止损、持有天数三个框各管一件事,任一触发就卖。还可以再写一条自定义条件,用持仓字段:profit 盈亏百分比、held 持有天数、cost 买入价、px 当前价。例如 profit >= 10 and dist_ma5 < 0,赚够 10%% 且跌破 5 日线才走。

本站所有内容仅供研究与学习参考,不构成任何投资建议,据此操作风险自担。市场有风险,投资需谨慎。👥 交流群京ICP备19006701号-1