OptiNod 学院
网格交易:在震荡中积累价差的机器人,为什么一轮趋势就会崩溃
网格交易平滑的累计曲线,画的只是已实现价差。曲线越平稳,越说明尚未止损的浮亏堆得越深。本文用经过验证的BTC案例,说明在震荡区间积累价差的结构如何被一轮趋势打垮,以及只在区间假设有效时才运行机器人的运作标准。
网格平滑的累计曲线看上去像一条平稳的上升线。实际上,是尚未止损的反向浮亏像梯子一样堆在那里。
所以曲线越平滑,越应该读成被推迟平仓的欠债越深。网格交易(Grid Trading)是把设定好的价格区间按固定间隔切开形成网格(grid),价格每下降一格就买入,每上升一格就卖出,机械地重复。如果一格宽度为1%,扣除0.5%的手续费,每往返一次,这一格的价差就实现一次。价格只要在同一区间里上下波动,同样的本金一天就能积累几十次价差,累计盈亏曲线几乎像一条直线向右上方延伸。
大众看到这条曲线,称它为“放着不管钱也会自己出来的自动赚钱机”。机器人交易所宣传的“每月几个百分点的稳定收益”回测曲线,大多也是这条平滑的直线。这条直线只画了已实现盈亏。网格在价格下跌时每格都买入,所以下跌不停,无法平掉的多单就像梯子一样不断堆积。这些浮亏不会显示在曲线上。
因此,网格曲线平滑这件事,看上去像是运转良好。实际上,意味着持有的反向仓位一次都没有止损。曲线的平滑程度与持有的浮亏欠债深度一起增长。读完这篇文章,再看网格的累计曲线时,就不会只看直线的斜率,而会先看它下面压着多深的浮亏。

累计盈亏曲线只画已实现部分,平滑就是被推迟的欠债
网格的累计盈亏曲线之所以平滑,原因很简单:曲线只累加往返格子实现的价差。价格下跌、买入格被成交后,这个仓位会以浮亏状态留在账户里,曲线却没有任何变化。平坦的曲线看起来像是亏损消失了,实际上是把亏损推到了曲线之外。
这之所以危险,是因为交易者看到的画面与账户的实际风险错开了。只看已实现曲线的话,下跌行情里价差也在不断积累,所以画面上机器人似乎在赚钱。与此同时,账户的实际价值被浮亏梯子一点点削减。如果只用已实现盈亏曲线来衡量最大回撤(Maximum Drawdown),这个风险连测量都测不到。
2024年9月,BTCUSDT整个月都在最低52,550美元到最高66,498美元之间波动,9月1日收盘价为57,301美元。如果在这个区间铺一个宽度1.5%的网格,格子往返会发生几十次,已实现曲线会干净利落地向上。同一个机器人在趋势区间原样运行,曲线形状就完全不同了。
在图表上运行网格机器人时,请始终同时显示已实现累计曲线和账户估值(权益)曲线。两条曲线开始拉开的那一刻,就是浮亏梯子开始堆积的那一刻。
网格只向均值回归单向下注,趋势一来机器人就崩溃
网格的每一格都建立在同一个假设上:价格会回到这个区间。价格下降一格就买入,这个动作就是一种押注,押价格很快反弹、能在上一格卖出的均值回归(Mean Reversion)。不设定区间假设的网格是不存在的。
所以价格一旦离开区间、持续单边运行,网格就会按设计好的规则,重复最不利的交易。下跌趋势里,每掉一格就买入,压低均价,让亏损仓位无止境地增加。趋势一来机器人就崩溃,是因为网格的规则只把下跌当作能买得更便宜的机会。趋势跟踪与均值回归只在完全相反的市场阶段赚钱,而网格是把所有格子都押在均值回归一边的最极端形态。
2022年11月FTX崩盘就是教科书案例。BTCUSDT从11月7日收盘价20,591美元,到9日最低15,588美元,用两天时间崩了下来。在20,000~22,000美元区间铺了网格的机器人,下跌过程中每一格都在重复买入,跌破区间下沿时,整个账户已经被浮亏梯子填满。已实现曲线直到那时,仍然显示着几天前落袋的价差。
价格一旦突破网格上沿或下沿,机器人从那一刻起就再也赚不到钱,只会反复加仓摊平。把区间边界在图表上画成水平线,把价格触及边界的时刻,看作机器人正常运转区间的终点。

“无限网格”这个说法背后,是资金无限的前提
“无上限网格”“无限网格”这类设置之所以危险,是因为价格区间没有下沿,就等于预设了资金也没有下沿。价格不管跌到多低都要继续买入,支撑这些买入的资金就必须无限。现实中的账户是有下沿的。
在使用杠杆的网格里,这个前提会直接变成破产概率(Risk of Ruin)。浮亏梯子越深,账户保证金被削减得越多,到某一格碰到爆仓价,即使机器人一次都没有止损,整个仓位也会被强制平仓。网格靠稳定实现小额价差,换来的是要承担一次虽然罕见、却可能输光整个账户的尾部亏损。
2021年5月19日,BTCUSDT从当日开盘价42,850美元,到最低30,000美元,一天之内跌了将近30%。在40,000~45,000美元区间运行3倍杠杆无限网格的账户,仅凭一天的波动,整个梯子就会陷入深度浮亏,这样的跌幅足以碰到爆仓价。机器人的已实现曲线直到前一天,都还是平滑上升。
评估无限网格时,请先用数字算出“价格从区间下沿再下跌多少,保证金会归零”。如果这个数字小于过去单根日K线的波动幅度,这个网格就只是名字叫无限,实际上是有限且很短的网格。
缩小格距,价差变小,手续费会吃掉价差
格距越窄,往返次数越多,曲线看起来越平滑,但这种平滑要付出代价。格距是一次所能赚取价差的上限,而两边的手续费与滑点(Slippage and Fees)都要从这个价差里扣除。缩小格距后曲线更平滑,但每格的净价差也会被手续费削掉相应的部分。
例如,格距定为0.3%,市价往返两边各0.1%、合计0.2%,那么往返一格后留在手里的净价差只有0.1%。波动率达不到格距、格子几乎不成交的日子,往返根本不发生,缩小格距只会赚不到价差,浮亏梯子反而堆得更密。缩小格距,是根据过去的波动率精细地调整网格,这正是过拟合(Overfitting)的典型形态。
格距要按该资产的波动率来定。用ATR(Average True Range)来定格距,波动率大的资产会自动分到较宽的格子,波动率小的资产则分到较窄的格子。把格距设为 ATR 的若干倍,而不是固定的百分比,并先确认这一格留下的净价差至少是手续费的3倍。3倍是最低余量,用来吸收滑点和未成交造成的已实现价差低于计算值的部分。

网格的收益来自选好区间的判断
网格机器人赚钱的关键,看上去是往返格子的重复动作。实际赚钱的依据是“这个资产现在不会离开这个区间”的判断。机器人只在这个判断成立期间赚钱,判断一旦错误,就只会反复摊平。自动化只是执行判断的工具,决定盈亏的,是人选定的区间。
所以铺网格的位置,应当是支撑、阻力(Support and Resistance)清晰封住两侧的震荡箱体。唐奇安通道(Donchian Channel)的上下轨在一段时间内平坦地压住,同时ADX(平均趋向指数)较低、显示趋势较弱,这样的位置,区间假设最安全。相反,通道宽度开始拉开,是箱体正在崩塌的信号,必须停掉机器人。
下面是在震荡箱体中铺网格的一种设置。止盈标签中“箱体宽度70%”这个值,是在失效条件(偏离 1 ATR)触发之前,提前减少新增买入,防止梯子继续变长的预防线。
- 入场(区间设定):最近20天最高价与最低价之差,相对该区间中心价收窄到 ±3%以内,且
ADX<20时,把箱体上沿与下沿之间设为网格区间。 - 格距:取日线
ATR×0.5作为格距,并先确认每格净价差至少是往返手续费的3倍。 - 资金分配:把全部运营本金除以格数,即使价格一路跌到箱体下沿、所有买入格都成交,保证金也不会碰到爆仓价,因此杠杆设为1倍。
- 止盈/管理:价格从箱体下沿上行,越过箱体宽度70%的位置(距离上沿剩30%)时,停止新增格子,只结算已成交的仓位。
- 失效(机器人停止):收盘价偏离箱体上沿或下沿
1 ATR以上时,停止机器人,并单独管理剩余的浮亏仓位。
箱体维持期间,机器人照常运行;失效条件一旦触发,就由人介入,切断梯子。平滑曲线看起来最好的时候,正是未结算的欠债堆得最长的时候。在运行机器人之前,先用数字定好这笔欠债在哪里切断,这是网格运作的核心。
常见的陷阱
只看已实现曲线就扩大网格。已实现曲线平滑向上,于是追加资金、增加格子。平滑是浮亏梯子尚未结算的信号,所以追加资金,等于扩大未结算欠债的规模。曲线看起来最好的时候,往往正是梯子堆得最长的时候。
误以为没有止损的结构就安全。网格不止损,所以认为不会亏损。不止损,只是不把亏损实现,而是以浮亏的形式累积;这是为了积累小额价差,而把罕见的尾部亏损整个承担下来的结构。没有止损的结构,看起来像是风险消失了,实际上是把风险推迟,让它一次性压过来。
确认箱体有效之后,才运行机器人
让网格变得稳固的关键,是在运行机器人之前确认区间假设仍然有效的程序。网格的全部风险,都是在区间假设崩塌的那一刻集中出现的,所以检查这个假设,是最大的安全装置。只有以下各项全部满足时,才运行机器人。
- 最近20天最高价与最低价之差,相对该区间中心价收窄到 ±3%以内,且
ADX<20。 - 唐奇安通道上下轨的宽度,相对前一区间没有拉开,保持不变。
- 每格净价差(格距减去往返手续费)至少是往返手续费的3倍。
- 即使所有格子都成交到箱体下沿,保证金也不会碰到爆仓价(以1倍杠杆为准)。
- 已事先设好失效条件:收盘价偏离箱体边界
1 ATR,就停止机器人。
再回头看网格的平滑曲线,它像是机器人表现良好的证据。实际上,这个画面并没有显示尚未止损的反向仓位堆了多少。曲线最平稳的时候,梯子最深,而把这个梯子一次性结算掉的那一轮趋势,会把此前的收益全部抹去。
