11、时间与销售(Time & Sales)分析:逐笔成交数据解析

时间与销售,圈里人常叫它 T&S 或者逐笔成交。说白了,就是交易所把每一笔真实的成交记录甩给你看。我刚开始做量化那会儿,觉得这东西不就是个流水账嘛,后来才发现——这里面藏着太多秘密了。

你想想看,K线是啥?是人家加工过的数据。一分钟里到底发生了多少笔交易?每笔多大?谁在主动买?这些细节,K线根本不会告诉你。而 T&S 就是最原始的底稿。

逐笔成交数据的结构

一份标准的 T&S 数据,通常包含这几个字段:

字段 含义 我的用法
时间戳 精确到毫秒甚至微秒 用来对齐其他数据源
成交价 这笔交易的实际价格 判断价格跳变是否异常
成交量 这笔交易的手数/股数 区分大单小单的核心依据
成交额 价×量 算资金流向时用
买卖方向 主动买/主动卖/未知 判断谁在主导行情

嗯,这里要注意——不同交易所给的字段名可能不一样。比如上交所叫“成交编号”,深交所叫“成交序号”。我踩过这个坑,写代码时没做映射,结果回测数据全对不上。

Tick 级别的交易特征

什么叫 Tick 级别?就是每一笔成交都算一个 Tick。我习惯把 Tick 数据分成三类特征来分析:

  • 价格特征:这笔成交是向上跳还是向下跳?跳了多少个最小变动单位?
  • 量能特征:单笔成交量是否异常放大?跟过去 N 笔比,是均值几倍?
  • 时间特征:两笔成交之间的间隔是多久?密集还是稀疏?

举个例子。我在监控某只期货合约时发现,连续 3 笔 Tick 都是主动买,价格没怎么动,但量一次比一次大。这说明啥?有人在偷偷吸筹,但又不想拉高价格。这种特征,K 线根本看不出来。

核心观点:Tick 级别的分析,本质是在还原多空双方的“肌肉记忆”。每一笔成交都是博弈的结果。

大单与小单的分类方法

怎么区分大单和小单?没有统一标准。我自己的做法是——动态阈值法。

def classify_order(volume, recent_volumes):
    """
    动态分类大单小单
    recent_volumes: 过去100笔的成交量列表
    """
    import numpy as np
    median_vol = np.median(recent_volumes)
    std_vol = np.std(recent_volumes)
    
    # 超过中位数3倍标准差,算大单
    if volume > median_vol + 3 * std_vol:
        return 'large'
    # 低于中位数,算小单
    elif volume < median_vol:
        return 'small'
    else:
        return 'medium'

为什么用中位数而不是平均数?因为成交量分布经常有极端值,平均数会被拉偏。中位数更稳健。我曾经用平均数做分类,结果某天突然来了一笔巨量,后面所有单子都变成小单了——这显然不合理。

另外,不同品种的阈值肯定不一样。螺纹钢和黄金,一手的大小天差地别。我建议你每个品种单独训练一个模型,或者至少单独算统计量。

交易节奏分析

交易节奏,说白了就是“快慢”。我一般看三个维度:

  1. 成交频率:每分钟多少笔成交?频率突然加快,往往意味着有大事发生。
  2. 间隔分布:两笔成交之间的时间间隔是否均匀?不均匀说明有人在“等”或者“急”。
  3. 方向连续性:连续主动买的笔数多,还是连续主动卖的笔数多?

我记得有一次做股指期货的盘后分析。那天下午 2 点之后,成交频率从每分钟 30 笔突然降到 5 笔,但每笔的量都很大。间隔时间忽长忽短,方向全是主动卖。我当时就觉得不对劲——这不是正常的交易节奏,更像是机构在偷偷出货。果不其然,收盘前最后 10 分钟,价格跳水了。

避坑指南:我曾经把交易节奏的阈值设得太死,结果错过了很多信号。后来我改用滚动窗口 + 百分位法,效果好了很多。比如,把过去 5 分钟的成交频率作为基准,当前频率超过 90% 分位就算异常。

知识体系总览

下面这张图,是我自己梳理的 T&S 分析框架。你可以把它当成一个检查清单,做分析时对着看,不容易漏东西。

Time & Sales 分析 逐笔数据结构 Tick级别特征 大单与小单分类 交易节奏分析 时间戳·价格·量·方向 买卖标识·成交编号 价格跳变·量能异常 时间间隔·方向连续性 动态阈值·中位数法 品种自适应·百分位 成交频率·间隔分布 方向连续性·异常检测 核心目标:从逐笔数据中提取 主力意图、资金流向、交易情绪

注意:T&S 数据量非常大。一只活跃股票一天可能产生几十万笔成交。如果你要实时处理,建议用 C++ 或者 Rust 写核心逻辑,Python 只做分析和回测。我见过有人用纯 Python 做实时 T&S,结果延迟飙到几百毫秒,直接被行情甩下车。

好了,关于 T&S 的基础框架就这些。下一层我们聊聊怎么把这些数据用到策略里——比如怎么用逐笔成交做盘口动量判断,怎么识别主力对倒。不过那是后面的事了。


无相订单流研究社 微信Lucian808555