上一篇用 180 组回测对比了固定网格和浮动网格,结论是两者整体打平,胜负看网格形态和行情形状是否匹配。但有个老问题没解决:固定网格在单边下跌市平均要亏 7%,浮动网格也只是少亏一点,并没有翻盘。
回测用的是 1 分钟 K 线,有些时候一根 K 线之内价格会跌穿或涨穿好几条网格线。之前的网格策略对这种情况做了简化处理:不管一根 K 线跨了几层,跌穿只买入一笔、涨穿只卖出一笔。这样做主要是图实现简单,也避免单根异常波动一次性触发太多下单。这一篇换一种处理方式——跌穿几层就买入几笔、涨穿几层就卖出几笔,看看效果如何。
这是网格策略改进探索系列的第二站。每个想法都用同一套参数扫描跑一遍,让数据说话,而不是凭直觉。
一、改之前先押一注
技术上原策略是这么做的:每次触发只下一笔单,成交完把 base_level 直接跳到当前所在层。中间那些被略过的层级永远不会再触发——这是真正”漏单”的地方。
漏的频率其实不高:日常震荡里绝大多数 K 线都只跨 1 层,根本不存在漏单问题。会出大事的是开盘跳空和急跌时段,一根 K 线就能跨十几甚至几十层。
那把这一笔改成”跨 N 层就成交 N 笔”,结果会怎样?凭直觉,我事前的预判是:
- 下跌时 N 倍买入 → 应该亏更多
-
上涨时 N 倍卖出 → 应该踏空更多
但回测结果不是这样。下面看数据。
二、改进一:跨层补单(只改一行)
2.1 原策略 vs 新策略
| 情形 | 原策略 | 新策略 |
|---|---|---|
| 跨 1 层 | 1 笔 | 1 笔 |
| 跨 N ≥ 2 层 | 仍只 1 笔 | N 笔(按 N × 单笔量) |
| 锚点 | 永不变 | 永不变(一致) |
base_level 推进 |
直接跳到 target_level |
直接跳到 target_level(一致) |
其他逻辑一字未改。
2.2 代码
# 原策略if target_level > base_level: sigs = generate_signal(..., trade_amount/price ...) # 永远只算 1 笔# 新策略if target_level > base_level: cross_layers = target_level - base_level # 新增:跨越层数 N total_vol = (trade_amount/price) * cross_layers # 新增:N × 单笔 sigs = generate_signal(..., total_vol ...)
卖出受可用持仓限制(min(N × 单笔, 持仓)),买入受现金限制(min(N × 单笔, 现金上限))。两个安全阀都保留。
三、跨层补单的回测结果
为了和上一篇直接可比,标的、回测区间、滑点佣金这些设置全部沿用上一篇,唯一变的就是策略换成了跨层补单。
3 标的 × 6 间距 × 5 金额 = 90 组(新策略),与上篇的固定/浮动网格 180 组基线对齐。零滑点、佣金万 0.5、初始资金 100 万、初始 50% 底仓、14 个月(274 个交易日)1 分钟 K 线。
3.1 全局对比
| 策略 | 平均收益率 | 平均最大回撤 | 平均成交笔数 |
|---|---|---|---|
| 固定网格 | +6.74% | 11.74% | 2872 |
| 浮动网格 | +7.21% | 11.09% | 781 |
| 跨层补单 | +11.01% | 6.82% | 3154 |
收益高了约 4pct,回撤砍了将近一半。
3.2 分标的逐场景
| 标的(行情) | 策略 | 平均收益 | 平均回撤 | 最优 | 最差 | 平均成交 |
|---|---|---|---|---|---|---|
| A · 单边下跌 | 固定网格 | −6.98% | 15.75% | +3.78% | −17.65% | 1565 |
| 浮动网格 | −5.63% | 15.71% | +2.95% | −18.38% | 979 | |
| 跨层补单 | +6.09% | 8.59% | +13.18% | +0.56% | 3222 | |
| B · 震荡偏强 | 固定网格 | +14.13% | 16.86% | +33.46% | +6.84% | 5941 |
| 浮动网格 | +11.22% | 14.37% | +20.41% | −9.75% | 1204 | |
| 跨层补单 | +15.44% | 9.84% | +34.44% | +2.76% | 5393 | |
| C · 单边强涨 | 固定网格 | +13.08% | 2.61% | +37.05% | +0.82% | 1110 |
| 浮动网格 | +16.02% | 3.19% | +38.92% | +0.92% | 161 | |
| 跨层补单 | +11.52% | 2.02% | +37.60% | +0.76% | 848 |
把每个标的的平均收益和平均回撤画成柱状图,一目了然:

A·单边下跌 三方对比

B·震荡偏强 三方对比

C·单边强涨 三方对比
逐组对比(同一参数下补单减固定网格的收益差):
| 标的 | 胜率 | ≥+5pct 大胜 | 平均差值 |
|---|---|---|---|
| A | 30/30(100%) | 21 组 | +13.07pct |
| B | 23/30(77%) | 2 组 | +1.30pct |
| C | 13/30(43%) | 0 组 | −1.56pct |
A 全场无败绩、且 70% 是 ≥+5pct 大胜;B 多数占优但优势小;C 一半多的组合略输。

A·单边下跌 收益差热图

B·震荡偏强 收益差热图

C·单边强涨 收益差热图
三张热图各看各的(红=补单更优,绿=固定更优):A 全部为红,最深的格子在 0.3% 间距档(最深约 +31pct);B 多数浅红、夹杂几格浅绿,整体平淡;C 红绿夹杂,小间距 × 小金额那一角是深绿(最深约 −17pct),大间距区有零星浅红。三张图的色板都以 0 为中心、按各自的最大幅度撑满,所以”颜色深浅”在同一张图内可比,跨图比较看数字。
到这里有两个问题待解释:为什么下跌市能逆袭?为什么强涨市反而略输? 下一节就来拆解这两个问题。
四、为什么补单在下跌市能逆袭、在强涨市吃亏?
4.1 跨多层是少数事件,但权重很大
事前我以为补单的收益来自频繁触发——错了。
从 3 个典型参数组合的 trades.csv 反推每笔成交跨了几层:
| 样本 | 总笔数 | 跨多层笔数 | 占比 | 最大 N |
|---|---|---|---|---|
| A · 0.3% × 1.5万 | 9278 | 610 | 6.6% | 27 |
| B · 0.5% × 3万 | 3718 | 71 | 1.9% | 13 |
| C · 0.3% × 0.5万 | 3361 | 112 | 3.3% | 16 |
九成以上的交易其实只跨 1 层,和原策略完全一样。

A·单边下跌 跨越层数分布

B·震荡偏强 跨越层数分布

C·单边强涨 跨越层数分布
但长尾那 2~7% 决定胜负:A 标的最大单根 K 线跨 27 层——相当于 1 分钟内价格跌 8%。这种事件一年只出现一两次,全年成败就压在它们上面。
4.2 跳水一次到底意味着什么
拿 A 标的最大增益组(0.3% × 1.5 万)的关键事件复盘。
某次开盘跳空急跌:
- 价格一根 K 线从 base=0 跌到 target=−27(跨 27 层)
-
原策略:买 1 笔 1.5 万,
base_level = −27 -
新策略:买 27 笔 = 40.5 万,
base_level = −27
之后反弹时,两种策略的单笔卖出动作其实是一样的——价格每爬 1 层 cross_layers = 1,都只卖 1 倍量(1.5 万)。差别不在单次卖多少,而在底仓里有多少可卖:
- 原策略多了 1 × 1.5 万的底仓,反弹 1 层就卖完,剩下 26 层涨幅无货可卖
-
新策略多了 27 × 1.5 万的底仓,反弹每爬 1 层都能卖 1 笔,一直卖到
base=0累计兑现 27 笔
新策略真正赚的钱来自这里:同一个跳水-反弹周期,原策略只能兑现 1 笔网格利润,新策略能兑现 27 笔。单笔利润相同,次数差出几十倍。
4.3 强涨市为什么反而吃亏
把同样的逻辑放到 C 标的(单边强涨):
- 跳空涨穿 16 层时,新策略一次卖出 16 倍量,仓位过早清空
-
之后继续上涨时手里没货,踏空加剧
-
这就是 C 上略输的根源
一句话归因:跨层补单是在极端跳空时一次性补足该方向的仓位。下跌方向的极端跳空之后大概率反弹,多接的筹码全部兑现成利润;上涨方向的极端跳空之后未必快速回踩,多卖的仓位接不回,就成了亏损。
这里藏着第二个改进的线索:C 上吃亏,根子是固定锚点在上涨途中把仓位过早卖空。如果锚点能跟着价格往上走呢?——那正是上一篇浮动网格干的事。
五、改进二:把补单套到浮动锚点上
第一版的跨层补单用的是固定锚点,一次性确定后永不变动。换成浮动锚点——每次成交后锚点漂移到当前价——逻辑改动只有一条:
# 浮动网格触发买入时,按距离锚点的层数补单cross_layers = max(1, int((anchor - price) / (anchor * grid_gap)))total_vol = (trade_amount / price) * cross_layers# 卖出对称:cross_layers = max(1, int((price - anchor) / (anchor * grid_gap)))
同一套 90 组参数再跑一遍,四方对比。
5.1 全局对比
| 策略 | 平均收益率 | 平均最大回撤 | 平均成交笔数 |
|---|---|---|---|
| 固定网格 | +6.74% | 11.74% | 2872 |
| 浮动网格 | +7.21% | 11.09% | 781 |
| 跨层补单(固定锚点) | +11.01% | 6.82% | 3154 |
| 浮动+跨层补单 | +11.82% | 6.52% | 523 |
收益最高、回撤最低、成交笔数最少。最后这一项是意外收获:浮动锚点把每次成交后的触发线推开,消化掉了大量低质量的来回震荡——用五分之一的交易量拿到更好的结果。
5.2 分标的对比
| 标的(行情) | 策略 | 平均收益 | 平均回撤 | 最优 | 最差 | 平均成交 |
|---|---|---|---|---|---|---|
| A · 单边下跌 | 跨层补单 | +6.09% | 8.59% | +13.18% | +0.56% | 3222 |
| 浮动+跨层补单 | +5.88% | 7.71% | +16.05% | +0.62% | 608 | |
| B · 震荡偏强 | 跨层补单 | +15.44% | 9.84% | +34.44% | +2.76% | 5393 |
| 浮动+跨层补单 | +15.44% | 9.22% | +26.76% | +10.53% | 857 | |
| C · 单边强涨 | 浮动网格 | +16.02% | 3.19% | +38.92% | +0.92% | 161 |
| 跨层补单 | +11.52% | 2.02% | +37.60% | +0.76% | 848 | |
| 浮动+跨层补单 | +14.14% | 2.63% | +39.10% | +0.98% | 106 |
(固定/浮动网格基线见第三节,此处只列与补单相关的对比。)
三个标的各有看点:
- A(下跌市):和纯跨层补单几乎打平(+5.88% vs +6.09%),但回撤更低、最优档更高。底仓加厚的好处还在,浮动锚点让它更克制。
-
B(震荡偏强):平均收益一致,但最差档从 +2.76% 拉到 **+10.53%**。哪怕参数选得最差也能稳赚 10pct,对实盘是更可靠的状态。
-
C(强涨市):从纯跨层补单的 +11.52% 反弹到 +14.14%,超过固定网格——正是第四节那个短板被修复了:锚点跟着价格上抬,不再过早卖空。只是仍不及纯浮动网格的 +16.02%。
两个改进各管一件事,正好正交:跨层补单管”漏成交”(跨多层时按 N 倍补齐),浮动锚点管”成交后要不要在原位死等回踩”(锚点跟着价格走)。合起来,三个标的的最差档全部被抬进正收益,全局最差也只有 +0.62%。
六、软肋和参数经验
软肋:单边强趋势仍然不解
补单也好、浮动也好,都解决不了网格打不过趋势这件事。C 标的单边强涨 +83%,四种策略都只赚 11%~16%,远远跑输买入持有。优化成交规则救不了方向判断错误。
参数经验
- 网格越密,补单价值越大:A 标的 0.3% 档的增益比 2.5% 档高约 20pct——间距越小,一次跳空跨越的层数就越多。
-
单笔金额仍建议占初始资金 1%~5%,不要因为有补单就把基础单笔放大。极端事件下的实际仓位 = 单笔 × N,N 失控时单笔再大就危险。
七、总结
这一篇做了两个递进的小改动:
- 跨层补单只改一行,就把单边下跌市从平均亏 7%(最差档 −17.65%)翻成正收益(平均 +6.09%、最差档 +0.56%),全局收益提升约 4pct、回撤砍半。
-
浮动+跨层补单在它的基础上再修掉强涨市的短板,全局收益 +11.82%、回撤 6.52% 都是四种策略里最好的,交易量还只有五分之一。
但它们都不是通用解:单边强涨市仍跑输纯浮动网格,网格打不过单边趋势的老问题也没解。
我事前猜的是”看起来更激进、实测会更糟”,结果反了过来。这个系列做下去的意义就在这里——直觉常常是错的,只有完整跑一遍参数扫描才知道一个改进到底值不值得。