3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 平台中,get_market_data_ex 是官方后来推出的一个非常强大且推荐使用的行情获取函数(用于替代老版的 get_market_data)。如果您在中金 QMT 客户端的 Python 策略编写中找不到这个函数,通常是因为客户端版本过旧导致的。
券商定制版的 QMT(如中金版)更新频率有时会滞后于迅投官方的最新版本。以下是解决该问题的几种方法:
要“弄出来”这个函数,最直接的方法就是升级您的中金 QMT 客户端:
get_market_data_ex 接口,需要支持该接口的较新版本。在您成功升级客户端之前,可以使用 QMT 提供的老版行情获取函数作为替代方案。官方文档中虽然提示老版接口不建议使用,但在旧版本客户端中它们是完全有效的。
get_market_data老版的 get_market_data 同样可以获取历史和实时行情数据,只是参数结构和返回的数据格式(如 Panel)与 ex 版本略有不同。
示例代码:
def init(ContextInfo):
# 设置股票池
ContextInfo.set_universe(['000300.SH'])
def handlebar(ContextInfo):
# 获取当前股票池中股票最近两天的收盘价和开盘价
df = ContextInfo.get_market_data(
['close', 'open'],
stock_code=ContextInfo.get_universe(),
skip_paused=True,
period='1d',
dividend_type='front',
count=2
)
print(df)
get_history_data如果您只需要获取基础的 K 线数据(如开、高、低、收),可以使用 get_history_data,它返回的是一个字典结构,非常轻量。
示例代码:
def init(ContextInfo):
ContextInfo.set_universe(['000300.SH'])
def handlebar(ContextInfo):
# 获取最近2天的日线收盘价
hisdict = ContextInfo.get_history_data(2, '1d', 'close')
for k, v in hisdict.items():
if len(v) > 1:
print(f"{k} 今日涨幅: {v[1] - v[0]}")
get_market_data_ex 是 QMT 较新版本引入的接口,强烈建议您联系中金证券更新客户端以获得最佳的开发体验和更完善的数据结构(如直接返回 pandas.DataFrame)。在更新前,请先使用 get_market_data 或 get_history_data 进行策略开发。