QMT中get_market_data_ex获取行情函数中的fields参数说明

文章介绍了如何使用Python中的ContextInfo.get_market_data_ex函数获取股票市场数据,包括不同周期(如tick和1d)下的各种字段,如最新价、开盘价、收盘价、最高价、最低价和成交量等。示例代码展示了如何通过设置fields参数来选择特定数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 fields:list,字段列表,对不同周期的数据取值范围不同。默认为空list,代表所有字段。

#encoding:gbk

import pandas as pd
import numpy as np
import talib

def init(ContextInfo):

	data=ContextInfo.get_market_data_ex([],['000002.SZ'],period='tick',count=1)

	for col in data['000002.SZ'].columns:
		print(col,data['000002.SZ'][col].iloc[0])
def handlebar(ContextInfo):
	pass

当第一个参数fields为空列表时,代码执行如下

【2023-04-05 10:26:19.047】  start back test mode
【2023-04-05 10:26:19.048】  amount 1831317072.5000002
askPrice [15.15, 15.16, 15.17, 15.18, 15.19] #列表,卖价五档
askVol [1172, 1816, 897, 1982, 1070] #列表,卖量五档
bidPrice [15.14, 15.13, 15.120000000000001, 15.110000000000001, 15.100000000000001] #列表,买价五档
bidVol [2790, 3204, 4137, 3744, 7760] #列表,买量五档
high 15.41 #最高价
lastClose 15.41 #昨收价
lastPrice 15.15 #最新价
lastSettlementPrice 0.0
low 15.08 #最低价
open 15.38 #开盘价
openInt 15
pvolume 0
settlementPrice 0.0 
stime 20230404150003.000 #日期时间
stockStatus 0 #股票状态
time 1680591603000
transactionNum 95965
volume 1205477  #成交量

也可以使用如下方法直接获得某个值

data=ContextInfo.get_market_data_ex(['lastPrice'],['000002.SZ'],period='tick',count=1)

 不同的period参数,返回的数据也不同,当period='1d'的时候返回如下数据

【2023-04-05 11:23:50.172】  start back test mode
【2023-04-05 11:23:50.187】  amount 1831317072.5000002
close 15.15
high 15.41
low 15.08
open 15.38
openInterest 15
preClose 15.41
settelementPrice 0.0
stime 20230404
suspendFlag 0
time 1680537600000
volume 1205477

### 迅投 QMT `get_full_tick` 函数无法获取期权实时行情的原因 在迅投 QMT 系统中,`get_full_tick` 函数用于获取逐笔成交数据或分时行情数据。然而,在某些情况下,该函数可能无法成功获取期权的实时行情。以下是可能导致这一现象的主要原因: #### 1. 权限不足 如果用户的账户未开通相应的权限,则即使调用了 `get_full_tick` 函数也无法正常返回期权的实时行情数据。这是因为 miniQMT 的运行依赖于券商提供的服务支持[^1]。若用户所在的券商未提供完整的期权交易权限或者未订阅相关市场数据,那么请求将会失败。 #### 2. 数据源限制 部分券商会对特定类型的金融产品施加数据访问限制。对于期权这种复杂的衍生品而言,其底层资产的价格波动频繁且复杂,因此并非所有券商都能无条件开放此类产品的全量 tick 数据流。当目标证券属于受限范围之内时,即便程序逻辑正确也可能因为缺乏必要的授权而被拒绝访问。 #### 3. 参数配置错误 `get_full_tick` 方法通常需要传入精确的目标合约代码作为参数之一。假如输入了不匹配或者是不存在的合约编号,则必然导致查询操作失败。此外还需要注意区分大小写以及特殊字符编码等问题以免引起误解读取不到预期的结果集。 #### 示例代码验证 下面给出一段简单的 Python 脚本用来测试上述情况下的行为表现: ```python import xtquant as xq # 初始化并登录到miniQMT环境 client = xq.XtQuantTrader('your_broker_id') client.login('username', 'password') # 尝试抓取某个具体期权品种的tick级信息 contract_code = "OCXXXXXX" # 替换为实际存在的有效合约代号 ticks_data = client.get_full_tick(contract_code) if ticks_data is None or len(ticks_data) == 0: print(f"No data available for contract {contract_code}. Please check your subscription and permissions.") else: print("Successfully fetched tick-level data:") print(ticks_data[:5]) # 打印前几条记录供调试查看 ``` 通过执行上面这段脚本可以初步判断是否存在前述提到的各种潜在障碍因素影响最终效果呈现出来的情况发生与否. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值