返回列表 发布新帖

场景_使用K线全推订阅全A股K线数据

3548 3
发表于 2024-4-25 18:36:15 | 显示全部楼层 阅读模式

一、问题

全推订阅是一种高效的数据获取方式,它能够实时推送最新的市场数据到客户端,使得用户无需频繁轮询服务器,从而大大提升了数据处理的速度和效率。

此帖主要介绍,如何使用QMT平台的全推订阅功能,高效地获取全A股的K线数据,并通过代码示例展示具体操作步骤。

二、解答

情况1:内置Python

内置Python需要使用K线全推功能,需要先在 界面端 - 设置 - 行情设置 选择开启 订阅K线全推

注意:部分券商端版本过低,K线全推功能可能不能按预期运行,因此券商端需要使用K线全推功能时,建议先向券商确认版本是否足够。

企业微信截图_1714040933588.png

注:开启后在代码内正常调用get_market_data_ex即可,此时GMD函数的订阅不受订阅数量的限制。

情况2:原生Python


from xtquant import xtdatacenter as xtdc
from xtquant import xtdata
# 设置token
xtdc.set_token("你的token")

# 指定连接VIP行情服务器
sever_list = ['115.231.218.73:55310','115.231.218.79:55310', '218.16.123.11:55310', '218.16.123.27:55310']
xtdc.set_allow_optmize_address(sever_list)

# 开启K线全推
xtdc.set_kline_mirror_enabled(True)

# 设置start_local_service为False,使xtdc监听的端口为我们自己指定的端口
xtdc.init(start_local_service=False)

# 指定xtdc使用 58601 端口
port = 58601
try:
    xtdc.listen(port=port)
    xtdata.connect(port=port)
except Exception as e:
    if "端口" in e.args[0]:
        xtdata.reconnect(port = port)
    else:
        raise KeyboardInterrupt(f"token拉起报错,信息:{e}")

## 上面是防止部分用户不知道port被什么占用做的异常处理

# 一个用来实现主图驱动的回调函数
def handlebar(data):
    kline = xtdata.get_market_data_ex([],stock_ls[:30],period=period,count=10)
    print(kline)

stock_ls = xtdata.get_stock_list_in_sector("沪深A股") # 股票列表

period = "1m" # 数据周期

for index in range(len(stock_ls)):
    stock = stock_ls[index]
    xtdata.subscribe_quote(stock,period,count=1) # 这边为了演示,我只向服务器请求最近一条数据,需要当天全部的,要指定count = -1,需要当天之前的历史数据,需要进行下载
    xtdata.subscribe_quote(stock,"1d",count= 1) # 要订阅多周期的话,多写一行订阅就可以了
    print(f"当前订阅完成{index + 1}/{len(stock_ls)}")

xtdata.subscribe_quote("000001.SH","1d",callback=handlebar) # 定义主图,并使用handlebar实现内置中的handlebar驱动效果

xtdata.run()

不清楚的内容可添加下方助理微信咨询,有其他 QMT 小技巧想学习的吗?欢迎在下方留言,笔者将根据大家的留言持续更新哦!

欢迎和我一起加入迅投组建的 QMT 实战交流社群,交流群内有许多做量化交易的高手和大佬,具有良好的分享和互助氛围。且迅投官方会不定期为多次分享、乐于助人的群友申请送投研专业版的机会。

只需扫描下方的二维码,名额有限,限时加入。一起分享见解、交换信息、并共同进步,就像群友说的:“就算周末,晚上也有地方沟通交流!”

企业微信截图_17235220909173.png

评论3

心如止水
发表于 2024-4-25 19:59:59 | 显示全部楼层
还有其他想学习的 QMT 小技巧吗?欢迎在下方留言,笔者将根据大家的留言持续更新哦!

最后,欢迎加入迅投组建的 QMT 实战交流社群,只需扫描下方的二维码,名额有限,限时加入。一起分享见解、交换信息、并共同进步,就像群友说的:“就算周末,晚上也有地方沟通交流!”
*******3016
发表于 2024-5-15 22:49:20 | 显示全部楼层
新手求问各位大大,如果基于股票的1hour K线高低点做交易,按如下代码订阅1小时 K线,打印出来行情不更新,正常吗?
data_K = C.get_market_data_ex(["close",'high','low','open'],[A.stock],period = ‘60m’, count = 10, dividend_type='front')
是不是get_market_data_ex函数不支持订阅60m的数据,只能订阅tick/1分钟/5分钟/1天四种情况 ?

Willows楼主
发表于 2024-5-27 10:22:48 | 显示全部楼层
*******3016 发表于 2024-5-15 22:49
新手求问各位大大,如果基于股票的1hour K线高低点做交易,按如下代码订阅1小时 K线,打印出来行情不更新, ...

用 1h

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表