第三章 撤单行为拆解:撤单的动机分析

撤单,说白了就是订单还没成交就被取消了。很多新手觉得撤单就是操作失误,或者网络卡了。但在我眼里,撤单才是盘口里最值得玩味的行为。

为什么?因为成交是结果,撤单是意图。成交了你只能看到价格,撤单却能暴露对手的想法。我做了这么多年量化,有个习惯——每天复盘时,第一件事就是看撤单数据,而不是成交数据。

3.1 撤单的四大动机

撤单不是随机的。每一笔撤单背后,都有人在动心思。我个人把撤单动机分成四类:试盘、诱多、诱空、隐藏意图。

3.1.1 试盘

试盘是最常见的撤单动机。主力想测试市场的承接力,就会挂一笔大单,然后迅速撤掉。

举个例子。某只股票在10.00元的位置,突然出现一笔500手的买单。几秒后,这笔单子消失了。如果你盯着盘口看,会发现撤单后价格往往会有个小波动。

为什么会这样?因为市场看到了那笔大单,散户跟风了。主力一看跟风盘够多,就撤单——他根本不想成交,只是想看看市场反应。

关键判断标准:

  • 挂单时间极短,通常不超过3秒
  • 挂单量级明显大于当前盘口平均单量
  • 撤单后价格反向运动

我在项目中遇到过一只期货品种,每天开盘前5分钟,总有几笔大单在关键价位上挂出来又撤掉。后来我写了个脚本专门抓这种模式,发现胜率能到65%以上。

3.1.2 诱多

诱多就有点坏了。主力在卖盘上挂大单,制造抛压假象,然后撤单,让价格往上冲。

你想想看,如果你看到卖一位置压了1000手,是不是觉得上方压力很大?但突然这1000手撤了,价格瞬间往上跳。那些等着回调买入的人,就不得不追高。

嗯,这里要注意。诱多撤单有几个特征:

  • 挂单在卖盘,而且是整数价位
  • 挂单时间比试盘长一些,大概5-15秒
  • 撤单后价格快速拉升,但很快又回落

避坑指南:我曾经在螺纹钢上吃过亏。看到卖一挂了2000手,以为要跌,结果人家撤单后价格直接拉了两个点。后来我学乖了——看到大卖单先不急着做空,等3秒看看它撤不撤。

3.1.3 诱空

诱空和诱多正好相反。主力在买盘上挂大单,制造支撑假象,然后撤单,让价格往下砸。

我记得有一次做股指期货,IF主力合约在3800点挂了500手买单。很多散户看到这个支撑,纷纷跟多。结果那笔单子突然撤了,价格直接跌破3800,那些跟多的人全被套了。

诱空撤单的特征:

  • 挂单在买盘,同样在整数价位
  • 挂单时间通常比诱多长,因为需要更多时间吸引跟风盘
  • 撤单后价格快速下跌,且伴随成交量放大

3.1.4 隐藏意图

这个最隐蔽。主力想建仓或者出货,但不想让别人看出来,就会用撤单来掩盖真实意图。

比如主力想买入,他会先挂一笔卖单,然后撤掉。这样盘口上就留下了"有人在卖"的假象。实际上他是在用撤单测试市场的卖压,为真正的买入做准备。

我个人习惯把这种撤单叫做"烟雾弹"。它的特点是:

  • 撤单频率高,但单笔量不大
  • 撤单后价格没有明显方向
  • 伴随小单频繁成交

3.2 撤单率与撤单速度

光看动机还不够,还得看数据。撤单率和撤单速度,是我每天必看的两个指标。

3.2.1 撤单率

撤单率 = 撤单量 / 总挂单量。这个指标能告诉你市场的"诚意"。

撤单率范围 市场含义 我的应对
< 10% 正常交易,挂单诚意高 跟随盘口方向
10% - 30% 有试探行为,需警惕 观望,不追单
30% - 50% 主力活跃,大概率有动作 准备反向操作
> 50% 极端情况,可能是陷阱 暂停交易,等信号明确

我曾经用这个指标抓过一只股票的涨停板。那天撤单率突然从15%飙到45%,我判断主力要拉升,果断跟进,当天吃了7个点。

3.2.2 撤单速度

撤单速度,就是挂单到撤单的时间间隔。这个数据能告诉你主力的"耐心"。

我一般把撤单速度分成三档:

  • 超快撤单(< 1秒): 程序化交易,大概率是试盘
  • 中速撤单(1-5秒): 人工操作,可能是诱多/诱空
  • 慢速撤单(> 5秒): 犹豫不决,或者是在等跟风盘

实战技巧:我个人习惯把撤单速度和撤单率结合起来看。比如撤单率30%+超快撤单,基本可以确定是程序化试盘。这时候我会反向挂单,吃主力的流动性。

3.3 核心逻辑框架

说了这么多,我画张图帮你理清思路。

撤单行为分析框架 撤单行为 试盘 诱多 / 诱空 隐藏意图 特征: 挂单时间<3秒 单量明显偏大 特征: 整数价位挂单 撤单后价格反向 特征: 高频小单撤单 价格无明显方向 量化指标 撤单率 撤单速度

3.4 实战代码示例

光说不练假把式。我写了个简单的Python脚本,用来抓取和分析撤单行为。

import pandas as pd
import numpy as np
from datetime import datetime

def analyze_cancel_behavior(order_book):
    """
    分析撤单行为
    order_book: DataFrame,包含挂单和撤单记录
    """
    # 计算撤单率
    total_orders = len(order_book)
    canceled_orders = len(order_book[order_book['status'] == 'canceled'])
    cancel_rate = canceled_orders / total_orders
    
    # 计算撤单速度(秒)
    order_book['cancel_speed'] = (
        order_book['cancel_time'] - order_book['order_time']
    ).dt.total_seconds()
    
    # 分类撤单动机
    def classify_motivation(row):
        if row['cancel_speed'] < 1 and row['order_size'] > 100:
            return '试盘'
        elif row['side'] == 'sell' and row['cancel_speed'] < 5:
            return '诱多'
        elif row['side'] == 'buy' and row['cancel_speed'] < 5:
            return '诱空'
        else:
            return '隐藏意图'
    
    order_book['motivation'] = order_book.apply(classify_motivation, axis=1)
    
    # 输出结果
    print(f"撤单率: {cancel_rate:.2%}")
    print(f"平均撤单速度: {order_book['cancel_speed'].mean():.2f}秒")
    print(f"动机分布:\n{order_book['motivation'].value_counts()}")
    
    return order_book

# 使用示例
# df = pd.read_csv('order_data.csv')
# result = analyze_cancel_behavior(df)

个人建议:这个脚本我用了两年,迭代了十几个版本。核心逻辑没变,但参数一直在调。比如试盘的阈值,不同品种差异很大——股指期货我设0.5秒,商品期货设1秒,股票设3秒。你拿到代码后,一定要先跑历史数据,找到适合你品种的参数。

撤单行为,说白了就是主力的"小动作"。你把这些小动作看懂了,盘口在你眼里就不再是杂乱无章的数字,而是一场精心设计的博弈。

嗯,今天就先聊到这。记住一句话:成交是结果,撤单是意图。多花点时间在撤单上,你会发现一个全新的世界。


公众号:蓝海资料掘金营,微信deep3321