🚀 AI 一键生成 qmt 策略代码
立即体验

qmt 平台如何利用内外盘数据分析资金流向?(附 Python 源码)

qmt | 发布时间: 2026/8/4
以下内容由 EasyQuant 生成。

问题描述



Title: qmt 资金流向分析:利用内外盘数据计算大单净流入

Question: 在 qmt 中,如何使用 get_bvol 和 get_svol 获取内外盘数据并分析资金流向?

解决方案

qmt 资金流向分析:利用内外盘数据计算大单净流入

在量化交易中,资金流向分析是研判主力资金动向的重要手段。通过分析内盘(主动卖出量)外盘(主动买入量),投资者可以清晰地洞察多空双方的力量对比。本文将详细介绍如何在国信证券 QMT (Quantitative Trading System) 平台上,利用 get_bvolget_svol 接口获取内外盘数据,并计算资金净流入指标。


1. 核心 API 接口介绍

在 QMT Python API 中,提供了直接获取内外盘成交量的专用函数:

  • ContextInfo.get_bvol(stockcode):获取指定股票的外盘成交量(主动买入量,通常以红色表示)。
  • ContextInfo.get_svol(stockcode):获取指定股票的内盘成交量(主动卖出量,通常以绿色表示)。

资金流向核心公式:

$$\text{净买入比例} = \frac{\text{外盘成交量} - \text{内盘成交量}}{\text{外盘成交量} + \text{内盘成交量}}$$

当外盘显著大于内盘时,表明买盘强劲,主力资金呈净流入状态;反之则表明抛压较大,资金呈净流出状态。


2. QMT 资金流向分析策略源码

以下是一个完整的 QMT 策略示例。该策略在 handlebar 行情驱动函数中,实时获取当前主图股票的内外盘数据,计算资金净流入比例,并在副图上进行可视化绘制,同时在满足资金强力流入时输出信号。

#encoding:gbk
import datetime

def init(ContextInfo):
    # 设置策略关注的股票池
    ContextInfo.stock = ContextInfo.stockcode
    print(f"[{datetime.datetime.now()}] 策略初始化成功,监控标的: {ContextInfo.stock}")

def handlebar(ContextInfo):
    # 仅在最后一根 Bar(最新 Tick 驱动)时进行实时资金流向分析
    if not ContextInfo.is_last_bar():
        return
        
    stock = ContextInfo.stock
    
    # 1. 获取内外盘数据
    # get_bvol 和 get_svol 返回的是字符串格式的数值,需要转换为浮点数处理
    bvol_str = ContextInfo.get_bvol(stock)
    svol_str = ContextInfo.get_svol(stock)
    
    try:
        bvol = float(bvol_str) if bvol_str else 0.0
        svol = float(svol_str) if svol_str else 0.0
    except ValueError:
        # 异常处理,防止停牌或无数据时报错
        bvol = 0.0
        svol = 0.0

    total_vol = bvol + svol
    
    # 2. 计算资金流向指标
    if total_vol > 0:
        # 计算外盘(主动买入)占比
        buy_ratio = bvol / total_vol
        # 计算净流入比例
        net_inflow_ratio = (bvol - svol) / total_vol
    else:
        buy_ratio = 0.5
        net_inflow_ratio = 0.0

    # 3. 界面绘图输出
    # 在副图上绘制净流入比例曲线(白线)
    ContextInfo.paint('NetInflowRatio', net_inflow_ratio, -1, 0, 'white')
    
    # 4. 逻辑研判与信号输出
    # 当外盘占比超过 60% 且净流入比例大于 20% 时,判定为主力强力吸筹
    if buy_ratio > 0.6 and net_inflow_ratio > 0.2:
        print(f"[信号推送] {stock} 出现主力资金强力流入!外盘: {bvol}, 内盘: {svol}, 净流入比例: {net_inflow_ratio*100:.2f}%")
        # 可在此处调用 passorder() 编写买入下单逻辑

3. 进阶:结合 Level2 逐笔数据深化分析

虽然 get_bvolget_svol 能够提供基础的内外盘多空对比,但若要实现更精准的大单/超大单净流入分析,建议结合 QMT 的 Level2 逐笔成交统计指标(需开通 L2 权限)。

通过订阅 l2transactioncount 周期,您可以直接获取以下精细化字段:

  • bidMostVolmue / bidMostAmount:主买特大单成交量/成交额
  • offMostVolmue / offMostAmount:主卖特大单成交量/成交额

利用这些数据,可以过滤掉散户的跟风盘,真正锁定机构与游资的“大单净流入”指标,从而大幅提升策略的胜率。