
其实这篇文章之前写过, 由于之前文章有点错误没法更改,怕误导大家后面删了。 但最近又有同学问我tick数据的问题, 那就编辑重发下。
之前写过miniqmt获取分钟数据,有同学留言问我 为啥我下载tick数据获取显示没有。 QMT的tick行情供应商修改了下载时间限制。9-16点期间下载,其他时间下载会受到限制。
这里写几种场景例子演示下。获取tick数据分为3种情况。
from xtquant import xtdata
# 获取多只股票最新tick快照
tick_data = xtdata.get_full_tick(["000001.SZ"])
# 解析平安银行tick数据
if "000001.SZ" in tick_data:
pingan_tick = tick_data["000001.SZ"]
print(f"平安银行最新价: {pingan_tick['lastPrice']}")
print(f"时间: {pingan_tick['timetag']}")
print(f"五档卖盘: {pingan_tick['askPrice']}")特点:即用即取,无订阅开销,适合低频监控
from xtquant import xtdata
import time
def on_tick_update(data):
"""tick数据到达时触发"""
for stock_code, tick in data.items():
print(f"{stock_code} 价格更新: {tick['lastPrice']} ")
# 订阅多只股票的全推tick
handle = xtdata.subscribe_whole_quote(
["000001.SZ", "600036.SH"],
callback=on_tick_update
)
try:
print("开始监听tick数据... (按Ctrl+C停止)")
xtdata.run() # 阻塞运行等待回调
except KeyboardInterrupt:
xtdata.unsubscribe_quote(handle)
注意事项:
stock_list为空则订阅全市场,但可能超订阅限制先下载再读取本地存储的历史tick:
from xtquant import xtdata
def on_progress(data):
print(f"进度: {data['finished']}/{data['total']} - {data['stockcode']}")
# 1. 下载tick数据(增量模式避免重复下载)
xtdata.download_history_data2(
stock_list=["000001.SZ"],
period="tick",
callback=on_progress
)
# 2. 查询数据(确保时间范围在交易时段)
data = xtdata.get_market_data_ex(
stock_list=["000001.SZ"],
period="tick",
start_time="20251111093000", # 精确到秒
end_time="20251111150000"
)
# 3. 检查数据
print(data)需要注意,服务商下载tick有时间要求,请了解对应券商的规则。 不然会出现傻傻等等没效果的情况。
如果我的分享对你投资有所帮助,不吝啬给个点赞关注呗。 这个号主要分享AI量化技术相关, 当天的灵感相关记录,相对比较杂。