问题描述
/
解决方案
在 QMT(iQuant)量化平台中,你可以使用 ContextInfo.get_full_tick() 函数来获取最新的分笔(Tick)数据。该函数会返回一个嵌套字典,其中包含了与成交量相关的字段。
1. 获取成交量的关键字段
根据 QMT API 文档,get_full_tick 返回的字典中,包含以下两个表示成交量的字段:
volume:成交总量(单位:手)pvolume:成交总量(单位:股)
注意:这里获取到的是当日截止到当前 Tick 的累计成交总量。如果你需要计算单笔 Tick 的真实成交量,需要在策略中记录上一个 Tick 的 volume,然后用当前 volume 减去上一个 volume。
2. Python 代码示例
以下是一个在 handlebar 中获取特定股票 Tick 成交量的完整示例:
#coding:gbk
def init(ContextInfo):
# 初始化时可以设置需要订阅的股票池
ContextInfo.set_universe(['000001.SZ', '600000.SH'])
def handlebar(ContextInfo):
# 确保在最新的实时行情下运行
if not ContextInfo.is_last_bar():
return
# 获取指定股票列表的最新 Tick 数据
# 如果不传参数,默认获取当前主图合约的 Tick 数据
tick_data = ContextInfo.get_full_tick(['000001.SZ', '600000.SH'])
# 遍历获取到的 Tick 数据
for stock_code, data in tick_data.items():
# 获取成交总量(手)
volume_shou = data.get('volume', 0)
# 获取成交总量(股)
volume_gu = data.get('pvolume', 0)
# 获取最新价
last_price = data.get('lastPrice', 0)
print(f"代码: {stock_code}, 最新价: {last_price}, 累计成交量(手): {volume_shou}, 累计成交量(股): {volume_gu}")
3. 返回字典的完整结构参考
为了方便你获取其他 Tick 数据,get_full_tick 返回的内部字典(data)包含以下常用键值:
lastPrice: 最新价amount: 成交额volume: 成交总量(手)pvolume: 成交总量(股)openInt: 持仓量stockStatus: 股票状态lastSettlementPrice: 最新结算价open: 开盘价high: 最高价low: 最低价settlementPrice: 结算价lastClose: 收盘价askPrice: 列表, 卖价五档bidPrice: 列表, 买价五档askVol: 列表, 卖量五档bidVol: 列表, 买量五档