3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在股票交易中,内盘(主动卖盘)和外盘(主动买盘)是衡量多空双方力量对比的重要量价指标。在国信证券QMT量化交易平台中,我们可以通过内置的 ContextInfo.get_svol() 和 ContextInfo.get_bvol() 接口,非常方便地获取个股的内盘和外盘成交量,进而计算出主动买卖比例,辅助我们的量化交易决策。
QMT 提供了两个专门用于获取内外盘数据的 API 函数:
ContextInfo.get_svol()ContextInfo.get_svol(stockcode)stockcode(股票代码,如 '000001.SZ',缺省时默认为当前主图代码)。string 类型的数值。ContextInfo.get_bvol()ContextInfo.get_bvol(stockcode)stockcode(股票代码,如 '000001.SZ',缺省时默认为当前主图代码)。string 类型的数值。注意:由于接口返回的是
string类型,在进行数学计算(如加减乘除)前,需要先将其转换为数值类型(如float或int)。
下面是一个完整的 QMT Python 策略示例。该策略在 handlebar 驱动中实时获取当前主图股票的内外盘数据,并计算出主动买盘占比(外盘 / 总成交量),当主动买盘占比超过 60% 时,在控制台打印提示。
#coding:gbk
def init(ContextInfo):
# 初始化策略,设置基准和股票池
pass
def handlebar(ContextInfo):
# 获取当前主图股票代码
stock_code = ContextInfo.stockcode
# 获取内盘成交量(主动卖盘)和外盘成交量(主动买盘)
svol_str = ContextInfo.get_svol(stock_code)
bvol_str = ContextInfo.get_bvol(stock_code)
# 转换数据类型
try:
svol = float(svol_str) if svol_str else 0.0
bvol = float(bvol_str) if bvol_str else 0.0
except ValueError:
# 避免转换异常
return
total_vol = svol + bvol
if total_vol > 0:
# 计算主动买盘(外盘)占比
active_buy_ratio = bvol / total_vol
# 打印当前内外盘及比例
print(f"股票: {stock_code} | 内盘(SVOL): {svol} | 外盘(BVOL): {bvol} | 主动买盘占比: {active_buy_ratio:.2%}")
# 简单信号判定:如果主动买盘占比大于 60%,视为多头强势
if active_buy_ratio > 0.6:
print(f">>> 信号提示:{stock_code} 主动买盘强劲,占比达 {active_buy_ratio:.2%}")
else:
print(f"{stock_code} 当前无成交量数据")
get_svol 和 get_bvol 可能会返回空字符串 '' 或 '0'。在策略中进行类型转换时,务必做好异常处理(如 try...except),防止策略因数据缺失而中断。