[TOC]

做合约的朋友大概率都经历过爆仓。轻则亏一部分,重则本金归零。但你有没有想过——你爆仓的那一刻,这笔数据其实被记录下来了。
交易所会实时推送每一笔被强平的仓位信息:什么币、什么方向、多少金额、什么时间。这就是清算数据。
2026-03-10 13:10:19 爆仓数据:{“s”:“DEXEUSDT”,“S”:“BUY”,“o”:“LIMIT”,“f”:“IOC”,“q”:“30.99”,“p”:“5.427000”,“ap”:“5.347646”,“X”:“FILLED”,“l”:“17.21”,“z”:“30.99”,“T”:1773119419184} 2026-03-10 13:10:18 爆仓数据:{“s”:“BEATUSDT”,“S”:“SELL”,“o”:“LIMIT”,“f”:“IOC”,“q”:“21”,“p”:“0.3503000”,“ap”:“0.3573000”,“X”:“FILLED”,“l”:“4”,“z”:“21”,“T”:1773119418458} 2026-03-10 13:10:18 爆仓数据:{“s”:“COAIUSDT”,“S”:“SELL”,“o”:“LIMIT”,“f”:“IOC”,“q”:“35”,“p”:“0.2968000”,“ap”:“0.3115000”,“X”:“FILLED”,“l”:“35”,“z”:“35”,“T”:1773119418118} 2026-03-10 13:10:18 爆仓数据:{“s”:“AIAUSDT”,“S”:“BUY”,“o”:“LIMIT”,“f”:“IOC”,“q”:“537”,“p”:“0.0844900”,“ap”:“0.0823800”,“X”:“FILLED”,“l”:“10”,“z”:“537”,“T”:1773119418118} 2026-03-10 13:10:09 爆仓数据:{“s”:“BABYUSDT”,“S”:“SELL”,“o”:“LIMIT”,“f”:“IOC”,“q”:“1965”,“p”:“0.0161200”,“ap”:“0.0162300”,“X”:“FILLED”,“l”:“1376”,“z”:“1965”,“T”:1773119409616} 2026-03-10 13:10:08 爆仓数据:{“s”:“MBOXUSDT”,“S”:“SELL”,“o”:“LIMIT”,“f”:“IOC”,“q”:“372”,“p”:“0.0173800”,“ap”:“0.0178100”,“X”:“FILLED”,“l”:“372”,“z”:“372”,“T”:1773119408667} 2026-03-10 13:10:07 爆仓数据:{“s”:“GALAUSDT”,“S”:“SELL”,“o”:“LIMIT”,“f”:“IOC”,“q”:“23717”,“p”:“0.00337”,“ap”:“0.00341”,“X”:“FILLED”,“l”:“23717”,“z”:“23717”,“T”:1773119407235} 2026-03-10 13:10:04 爆仓数据:{“s”:“RIVERUSDT”,“S”:“SELL”,“o”:“LIMIT”,“f”:“IOC”,“q”:“17.7”,“p”:“10.945000”,“ap”:“11.109943”,“X”:“FILLED”,“l”:“3.3”,“z”:“17.7”,“T”:1773119404767} 2026-03-10 13:10:04 爆仓数据:{“s”:“ROBOUSDT”,“S”:“SELL”,“o”:“LIMIT”,“f”:“IOC”,“q”:“3000”,“p”:“0.0445100”,“ap”:“0.0451800”,“X”:“FILLED”,“l”:“3000”,“z”:“3000”,“T”:1773119404308} 2026-03-10 13:09:47 爆仓数据:{“s”:“RIVERUSDT”,“S”:“BUY”,“o”:“LIMIT”,“f”:“IOC”,“q”:“48.1”,“p”:“11.287000”,“ap”:“11.122577”,“X”:“FILLED”,“l”:“17.7”,“z”:“48.1”,“T”:1773119387280} 2026-03-10 13:09:45 爆仓数据:{“s”:“DENTUSDT”,“S”:“SELL”,“o”:“LIMIT”,“f”:“IOC”,“q”:“827079”,“p”:“0.000253”,“ap”:“0.000257”,“X”:“FILLED”,“l”:“827079”,“z”:“827079”,“T”:1773119385320} 2026-03-10 13:09:44 爆仓数据:{“s”:“BULLAUSDT”,“S”:“SELL”,“o”:“LIMIT”,“f”:“IOC”,“q”:“526”,“p”:“0.0203300”,“ap”:“0.0213800”,“X”:“FILLED”,“l”:“526”,“z”:“526”,“T”:1773119384220} 2026-03-10 13:09:40 爆仓数据:{“s”:“DENTUSDT”,“S”:“SELL”,“o”:“LIMIT”,“f”:“IOC”,“q”:“554440”,“p”:“0.000253”,“ap”:“0.000257”,“X”:“FILLED”,“l”:“289977”,“z”:“554440”,“T”:1773119380709}
单看一笔,意义不大。但如果你把所有人的爆仓数据汇总起来,就能看到一件很有意思的事——市场上的资金在哪里承压,哪个方向的人已经撑不住了。清算数据被认为是订单分析里非常重要的一部分,它是带血的筹码,是资本最真实的反应,骗不了人。

这篇文章要做的事情很简单:把清算数据作为核心信号,叠加 K 线验证和新闻判断,用 AI 做综合决策,最后通过工作流自动化跑起来——24 小时不间断,不需要人工盯盘。

每时每刻都有仓位在爆。正常的爆仓不是信号,我们要找的是统计意义上的异常——某个币在短时间内爆仓量远超历史基准,说明这个方向的弱势仓位正在被集中清出。
清算之后,趋势往往会延续。这是这套策略的核心假设。
面对大量爆仓,通常有两种操作思路:
逆势的风险在于,你不知道这波爆仓有没有结束。如果多头还在源源不断地被清算,你进去接,相当于在瀑布下面伸手,接到的不是底,是更多的下跌。
所以这套策略选择顺势——多头爆仓做空,空头爆仓做多。
光靠爆仓数据一个维度来做决策,信号太粗糙,容易被噪音干扰。所以在爆仓数据上,我们又叠加了两层:
最后由 AI 综合三个维度做出最终决策。
工作流采用单线结构,每隔固定间隔触发一次,完整流程如下:
整个流程条件不满足就中止,满足就继续,不需要人工干预。
第一次启动时,需要先建立历史基准数据。通过 WebSocket 连接币安合约的强平推送频道,持续采集一段时间的爆仓数据,存入全局变量。
每条数据包含四个字段:时间戳、币种、爆仓方向、爆仓金额。采集过程中会过滤掉两类数据:未完全成交的强平单,以及金额过小的噪音数据。采集完成后写入持久化存储,并标记初始化完成,后续每次触发直接跳过这个节点。
//此段代码节选自源码
var ws = Dial('wss://fstream.binance.com/ws/!forceOrder@arr')
while (Date.now() < endTs) {
var msg = ws.read(1000)
try {
var obj = JSON.parse(msg)
var orders = Array.isArray(obj) ? obj : [obj]
for (var i = 0; i < orders.length; i++) {
var item = orders[i]
if (!item || !item.o) continue
var o = item.o
if (o.X !== 'FILLED') continue
if (EXCLUDE[o.s]) continue
if (!/USDT$/i.test(o.s)) continue // ✅ 只处理USDT结尾
var price = parseFloat(o.ap || o.p)
var qty = parseFloat(o.z)
var value = price * qty
if (value < MIN_VALUE) continue
liquidationData.push({
t: item.E || Date.now(),
s: o.s,
d: o.S,
v: value
})
totalNew++
}
} catch(e) {}
}
_G('liquidationData', liquidationData) // 持久化存储
_G('liqInitialized', true) // 标记初始化完成
每次触发时,先用 WebSocket 采集新的爆仓数据,追加到历史窗口,再对每个币种做 Z-Score 异常检测。
Z-Score 的核心思路:
把基准时间段内的爆仓数据按等长时间段切开,每段记录这个监测时间段内的爆仓总金额。然后取最新监测时间段的爆仓量,和基准时间段内所有历史段的平均值做对比,计算偏离程度。偏离超过阈值,才算异常。
//此段代码节选自源码
var mean = hist.reduce(function(s, v) { return s + v }, 0) / hist.length
var std = Math.sqrt(
hist.reduce(function(s, v) { return s + Math.pow(v - mean, 2) }, 0) / hist.length
)
var z = std > 0 ? (rec - mean) / std : 0
if (z < ZSCORE_THRESH || rec <= 0) continue
这样做的好处是自适应:活跃的币有活跃的基准,冷门的币有冷门的基准,不会因为某个币本来就交易量大而频繁误报。
光有量还不够,还要看方向是否纯粹:
//此段代码节选自源码
var longRatio = total > 0 ? st.longV / total : 0.5
var direction = null
if (longRatio > DIR_THRESH) direction = 'SHORT' // 多头主爆 → 顺势做空
else if (longRatio < 1 - DIR_THRESH) direction = 'LONG' // 空头主爆 → 顺势做多
if (!direction) continue // 多空混爆 → 方向不明,跳过
两个条件同时满足才算触发信号:Z-Score 超过阈值,且多头或空头单边爆仓占比超过 75%。多空混着爆的情况方向不明,直接跳过不做。
触发信号之后,不会马上开仓,而是进入数据补充节点,为后续 AI 判断准备更完整的上下文。
K 线部分: 拉取该币种最近若干根 1 分钟 K 线,计算涨跌幅和波动率,判断当前 K 线趋势方向,并与爆仓信号方向做对比,判断是否一致。信号建议做空,但 K 线还在往上涨,可信度就要打折。
新闻部分: 通过 Brave 搜索接口,拉取该币种当天的最新资讯。有具体事件驱动的爆仓,趋势延续概率高得多;没有新闻只是纯技术性清算,AI 会更保守。
两类数据拿齐之后,一起送给 AI。
AI 拿到爆仓数据、K 线、新闻之后,按照固定的决策框架来判断,三个维度缺一不可:
决策矩阵如下:
| 爆仓强度 | K 线一致 | 新闻 | 决策 |
|---|---|---|---|
| 强 | 是 | 有 | 入场,置信度高 |
| 强 | 是 | 无 | 入场,置信度中 |
| 强 | 否 | 有 | 观望 |
| 中 | 是 | 有 | 入场,置信度中 |
| 中 | 否或无 | — | 不入场 |
AI 输出包含方向、决策、置信度和理由的结构化结果。后续只有置信度达到阈值的入场信号,才会真正去下单开仓。
Prompt 的核心部分如下:
## 判断步骤
Step 1:爆仓强度
- Z-Score 超过高阈值且方向纯度极高 → 强信号
- Z-Score 达到基础阈值且方向纯度满足要求 → 中等信号
- 否则不入场
Step 2:K线趋势
- 与爆仓方向一致 → 趋势延续概率高,加分
- 与爆仓方向相反 → 可能只是短暂清算而非趋势,减分
Step 3:新闻验证
- 有实质利空/利多且与方向一致 → 加分
- 无新闻 → 纯技术清算,降低置信度
- 新闻与方向相反 → 不入场
## 输出格式
严格返回JSON,无任何markdown包裹:
{
"symbol": "币种",
"direction": "LONG或SHORT",
"action": "入场/观望/不入场",
"confidence": "高/中/低",
"liq_note": "爆仓信号一句话评估",
"trend_note": "K线趋势一句话评估",
"news_note": "新闻一句话评估",
"action_reason": "综合决策理由一句话"
}
AI 决定入场之后,交易节点自动执行开仓,同时接管止损管理和可视化面板的更新。
开仓流程:
开仓前先按置信度排序,优先执行高置信度信号。如果该币种已有持仓,且新信号置信度更高,则先平掉旧仓再开新仓;如果置信度未超过旧仓,跳过不做。持仓数量达到上限时,后续信号全部跳过。
开仓金额、杠杆倍数、最大持仓数均通过外部变量配置,张数根据当前市场深度的实时价格动态计算。
//此段代码节选自源码
// 计算开仓张数
var rawQty = OPEN_MONEY * CONFIG.LEVERAGE / refPrice / mkt.ctVal
var qty = floorToStep(rawQty, mkt.amtSize, mkt.amtPrec)
// 市价开仓
var side = direction === 'LONG' ? 'buy' : 'sell'
var oid = exchange.CreateOrder(swapSym, side, -1, qty)
止损机制:
止损采用双层机制,两道防线同时生效:
//此段代码节选自源码
if (pos.direction === 'LONG') {
var trailStop = pos.peak * (1 - TRAILING_PCT) // 移动止损价
var fallStop = pos.entryPrice * (1 - FALLBACK_PCT) // 兜底止损价
effectiveStop = Math.min(trailStop, fallStop)
if (cur <= effectiveStop) triggered = true
}
可视化面板:
每次执行后实时更新三张表格:

随时可以看到策略在做什么,不需要盯盘。
这就是这套策略的完整逻辑:
这是一次基于传统清算数据的 AI 增强探索。清算数据本身是市场最真实的反应,叠加 K 线和新闻之后,信号的可信度得到了有效提升,AI 的引入则让多维度决策变得可以自动化。
如果你对这类基于链上或市场微观结构数据的策略感兴趣,欢迎留言反馈,后续可以针对更多类型的信号做进一步的策略开发。
策略源码: 清算地图顺势策略