问题描述
大佬:
xtdata 模块中有.get_svol()方法吗?错误提示是没有这个方法。
那么要在原生 python 中获取外盘(买盘)数据如何解决?
谢谢!!
解决方案
根据 QMT 官方 API 文档,获取内盘和外盘数据的方法是绑定在策略运行环境对象 ContextInfo 上的,而不是直接在 xtdata 模块中调用。这就是为什么您在原生 Python 中直接调用 xtdata.get_svol() 会提示没有该方法的原因。
在 QMT 平台的 Python 策略中,您应该使用以下两个方法来获取内外盘数据:
1. 获取内盘(卖盘)成交量
用法: ContextInfo.get_svol(stockcode)
释义: 根据代码获取对应股票的内盘成交量。
2. 获取外盘(买盘)成交量
用法: ContextInfo.get_bvol(stockcode)
释义: 根据代码获取对应股票的外盘成交量。
示例代码
您需要在 QMT 的策略编辑器中,通过 handlebar 函数的 ContextInfo 参数来调用它们:
#coding:gbk
def init(ContextInfo):
# 初始化股票池,例如平安银行
ContextInfo.set_universe(['000001.SZ'])
def handlebar(ContextInfo):
# 获取当前主图股票代码
stockcode = '000001.SZ'
# 获取内盘成交量(卖盘)
svol = ContextInfo.get_svol(stockcode)
print(f"{stockcode} 的内盘成交量为: {svol}")
# 获取外盘成交量(买盘)
bvol = ContextInfo.get_bvol(stockcode)
print(f"{stockcode} 的外盘成交量为: {bvol}")
补充说明
如果您必须在脱离 QMT 客户端的原生 Python 环境中获取买卖盘相关数据,可以通过获取最新的分笔数据(Tick)来间接分析买卖盘力量:
使用 ContextInfo.get_full_tick(stock_code) 可以获取包含 askVol(卖量五档)和 bidVol(买量五档)的字典数据,从而辅助判断买卖盘情况。