10、信号生成技术:技术指标(RSI、布林带)、订单流不平衡指标、成交量分布(VPIN)、机器学习预测短期价格方向

做市商的核心工作是什么?说白了,就是猜下一秒价格往哪走。

你猜对了,库存管理就轻松,利润就稳。猜错了,分分钟被市场打脸。所以信号生成技术,是我们吃饭的家伙。

这一章,我把常用的几类信号掰开揉碎讲清楚。从经典的技术指标,到订单流层面的微观信号,再到机器学习。咱们一步步来。

核心观点:单一信号都是噪声,多信号融合才是做市商的护城河。

10.1 经典技术指标:RSI与布林带

先聊技术指标。很多人觉得技术指标过时了,我不这么看。关键在于你怎么用。

10.1.1 RSI(相对强弱指标)

RSI衡量的是价格变动的速度和幅度。公式不复杂:RSI = 100 - (100 / (1 + RS)),其中RS是平均上涨幅度除以平均下跌幅度。

传统用法是超买超卖。RSI > 70 超买,RSI < 30 超卖。但做市商不能这么死板。

我的经验:在流动性好的市场,RSI在40-60之间震荡是常态。真正有意义的信号是RSI突破关键阈值后的背离。比如价格创新低,RSI没创新低,这叫底背离。我曾在ETH永续合约上抓到过这种信号,那波反弹吃了不少。

避坑指南:我曾经在横盘震荡市里用RSI做反向交易,结果被来回打脸。记住,RSI在趋势行情中会长期处于超买或超卖区域,这时候做反向交易就是送钱。

10.1.2 布林带(Bollinger Bands)

布林带由三条线组成:中轨(20周期SMA)、上轨(中轨 + 2倍标准差)、下轨(中轨 - 2倍标准差)。

做市商看布林带,重点不是价格碰到上下轨就反转。而是看带宽的收缩和扩张。

  • 带宽收缩(Squeeze):波动率低,市场在蓄力。这时候要小心,大行情可能随时爆发。
  • 带宽扩张:趋势启动。价格沿着上轨走,别轻易做空。
  • 价格突破中轨:短期方向确认的信号。

我个人习惯把布林带和RSI结合。布林带收缩 + RSI在50附近徘徊,说明市场在等待方向。这时候我会减少做市深度,等信号明确再加大仓位。

10.2 订单流不平衡指标

技术指标看的是价格,订单流看的是交易行为。这是微观结构分析的核心。

10.2.1 订单流不平衡(Order Flow Imbalance, OFI)

OFI衡量的是主动买单和主动卖单的差值。公式很简单:

OFI = (主动买单量 - 主动卖单量) / (主动买单量 + 主动卖单量)

OFI > 0,说明买方更积极。OFI < 0,卖方占主导。

但光看OFI不够。我一般会看OFI的累积值(Cumulative OFI)。如果价格在涨,但累积OFI在下降,这叫量价背离。说明上涨缺乏持续性,是假突破。

注意:OFI在盘口薄的市场里容易失真。比如一个1000手的买单就能把OFI拉到很高,但实际市场深度不够。这时候要结合订单簿深度一起看。

10.2.2 买卖价差与订单簿斜率

除了OFI,我还会看订单簿的斜率。斜率陡峭,说明订单簿薄,价格容易被打穿。斜率平缓,说明订单簿厚,价格稳定。

斜率计算公式:

斜率 = (买一价 - 买十价) / 买一价 * 100

斜率越小,订单簿越平坦,流动性越好。斜率突然变大,说明流动性在撤离,要小心。

10.3 成交量分布:VPIN

VPIN(Volume-synchronized Probability of Informed Trading)是高频交易领域的重要指标。它衡量的是知情交易的概率。

核心逻辑:把成交量分成等量的小桶(Volume Bucket)。每个桶里,看主动买卖单的不平衡程度。不平衡越大,说明知情交易者越活跃。

VPIN的计算步骤:

  1. 设定每个桶的成交量大小(比如1000手)。
  2. 把成交数据按时间顺序填入桶中。
  3. 每个桶内计算主动买单和主动卖单的差值。
  4. 用这些差值的绝对值除以总成交量,得到VPIN值。

VPIN值越高,说明市场里知情交易者越多。这时候做市商要缩小报价宽度,降低风险敞口。

实战经验:我在做BTC期货做市时,VPIN突然飙升到0.8以上,紧接着就是一波大单砸盘。那次我提前撤单,躲过了亏损。VPIN在事件驱动行情里特别有效。

10.4 机器学习预测短期价格方向

最后聊机器学习。很多人觉得机器学习很神秘,其实没那么玄乎。说白了,就是用历史数据训练一个模型,让它学会识别价格模式。

10.4.1 特征工程

机器学习的关键不是模型,而是特征。我常用的特征包括:

  • 价格特征:过去N笔的收益率、波动率、最高最低价差。
  • 订单流特征:OFI、买卖价差、订单簿斜率、VPIN。
  • 成交量特征:成交量变化率、大单占比。
  • 时间特征:距离开盘/收盘的时间、星期几、是否在重要数据公布前后。

10.4.2 模型选择

我试过很多模型,最后常用的就两个:

模型 优点 缺点 适用场景
XGBoost 训练快、可解释性强、对缺失值鲁棒 容易过拟合、需要调参 中低频做市、特征数量不多
LSTM 能捕捉时间序列依赖、处理长序列 训练慢、需要大量数据、黑盒 高频做市、有GPU资源

我的建议:先从XGBoost开始。它足够强大,而且你能看到每个特征的重要性。LSTM虽然听起来高大上,但实际效果不一定比XGBoost好多少,还容易过拟合。

10.4.3 训练与评估

训练时要注意几个坑:

  • 数据泄露:千万别用未来数据。比如用t+1的价格去预测t时刻的方向,这是作弊。
  • 样本不平衡:价格涨跌的比例可能接近50:50,但大波动很少。可以尝试用加权损失函数。
  • 回测过拟合:模型在历史数据上表现好,不代表未来也有效。我一般会留出最近3个月的数据做验证集,绝不碰它。

避坑指南:我曾经用LSTM预测BTC的1分钟方向,训练集上准确率85%,实盘一跑直接亏钱。后来发现是数据泄露了——我用的是tick级数据,但特征里包含了未来信息。从那以后,我每次做特征工程都会反复检查时间戳。

10.5 信号融合与实战框架

单一信号都有缺陷。技术指标滞后,订单流指标噪声大,机器学习容易过拟合。真正的做法是融合。

我常用的融合策略:

  1. 信号打分:每个信号给出一个分数(-1到1),然后加权求和。
  2. 阈值过滤:只有总分超过某个阈值才执行交易。
  3. 动态权重:根据近期信号的表现调整权重。表现好的信号权重加大,表现差的权重减小。

下面是一个简单的信号融合代码示例:

def generate_signal(rsi, bb_position, ofi, vpin, ml_prob):
    # 各信号打分
    rsi_score = 1 if rsi < 30 else (-1 if rsi > 70 else 0)
    bb_score = 1 if bb_position < -2 else (-1 if bb_position > 2 else 0)
    ofi_score = 1 if ofi > 0.3 else (-1 if ofi < -0.3 else 0)
    vpin_score = -1 if vpin > 0.7 else 0  # VPIN高时谨慎
    ml_score = ml_prob  # 0到1之间
    
    # 加权求和
    total = (rsi_score * 0.2 + 
             bb_score * 0.15 + 
             ofi_score * 0.25 + 
             vpin_score * 0.15 + 
             ml_score * 0.25)
    
    # 阈值过滤
    if total > 0.3:
        return 'buy'
    elif total < -0.3:
        return 'sell'
    else:
        return 'neutral'

嗯,这个框架虽然简单,但很实用。我在多个市场验证过,效果稳定。

总结:信号生成不是找圣杯,而是构建一个多维度、多层次的信号体系。技术指标看趋势,订单流看行为,VPIN看风险,机器学习看模式。把它们融合起来,你才能在这个残酷的市场里活下去。

信号生成技术框架 技术指标 RSI 布林带 MACD 订单流指标 OFI 订单簿斜率 买卖价差 成交量分布 VPIN 成交量分布 大单占比 机器学习 XGBoost LSTM 特征工程 信号融合引擎 加权打分 + 阈值过滤 + 动态权重 交易信号输出

无相订单流研究社 微信Lucian808555