怎么为VNPY 2版本加入聚宽数据源
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,本篇内容介绍了"怎么为VNPY 2版本加入聚宽数据源"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!代
千家信息网最后更新 2025年11月11日怎么为VNPY 2版本加入聚宽数据源
本篇内容介绍了"怎么为VNPY 2版本加入聚宽数据源"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
代码如下:
# encoding: UTF-8import jsonimport timefrom datetime import datetime, timedeltafrom typing import Listimport jqdatasdk as jqfrom vnpy.trader.constant import Exchange, Intervalfrom vnpy.trader.database import database_managerfrom vnpy.trader.object import ( BarData)class JQDataService: """ Service for download market data from Joinquant """ def __init__(self): # 加载配置 config = open('config.json') self.setting = json.load(config) USERNAME = self.setting['jqdata.Username'] PASSWORD = self.setting['jqdata.Password'] try: jq.auth(USERNAME, PASSWORD) except Exception as ex: print("jq auth fail:" + repr(ex)) def to_jq_symbol(self, symbol: str, exchange: Exchange): """ CZCE product of RQData has symbol like "TA1905" while vt symbol is "TA905.CZCE" so need to add "1" in symbol. """ if exchange in [Exchange.SSE, Exchange.SZSE]: if exchange == Exchange.SSE: jq_symbol = f"{symbol}.XSHG" # 上海证券交易所 else: jq_symbol = f"{symbol}.XSHE" # 深圳证券交易所 elif exchange == Exchange.SHFE: jq_symbol = f"{symbol}.XSGE" # 上期所 elif exchange == Exchange.CFFEX: jq_symbol = f"{symbol}.CCFX" # 中金所 elif exchange == Exchange.DCE: jq_symbol = f"{symbol}.XDCE" # 大商所 elif exchange == Exchange.INE: jq_symbol = f"{symbol}.XINE" # 上海国际能源期货交易所 elif exchange == Exchange.CZCE: # 郑商所 的合约代码年份只有三位 需要特殊处理 for count, word in enumerate(symbol): if word.isdigit(): break # Check for index symbol time_str = symbol[count:] if time_str in ["88", "888", "99", "8888"]: return f"{symbol}.XZCE" # noinspection PyUnboundLocalVariable product = symbol[:count] year = symbol[count] month = symbol[count + 1:] if year == "9": year = "1" + year else: year = "2" + year jq_symbol = f"{product}{year}{month}.XZCE" return jq_symbol.upper() def query_history(self, symbol, exchange, start, end, interval='1m'): """ Query history bar data from JQData and update Database. """ jq_symbol = self.to_jq_symbol(symbol, exchange) # if jq_symbol not in self.symbols: # return None # For querying night trading period data # end += timedelta(1) now = datetime.now() if end >= now: end = now elif end.year == now.year and end.month == now.month and end.day == now.day: end = now df = jq.get_price( jq_symbol, frequency=interval, fields=["open", "high", "low", "close", "volume"], start_date=start, end_date=end, skip_paused=True ) data: List[BarData] = [] if df is not None: for ix, row in df.iterrows(): bar = BarData( symbol=symbol, exchange=exchange, interval=Interval.MINUTE, datetime=row.name.to_pydatetime() - timedelta(minutes=1), open_price=row["open"], high_price=row["high"], low_price=row["low"], close_price=row["close"], volume=row["volume"], gateway_name="JQ" ) data.append(bar) database_manager.save_bar_data(data) return data def downloadAllMinuteBar(self, days=1): """下载所有配置中的合约的分钟线数据""" if days != 0: startDt = datetime.today() - days * timedelta(1) enddt = datetime.today() else: startDt = datetime.today() - 10 * timedelta(1) enddt = datetime.today() print('-' * 50) print(u'开始下载合约分钟线数据') print('-' * 50) if 'Bar.Min' in self.setting: l = self.setting["Bar.Min"] for VNSymbol in l: dt0 = time.process_time() symbol = VNSymbol.split(".")[0] exchange = Exchange(VNSymbol.split(".")[1]) self.query_history(symbol, exchange, startDt, enddt, interval='1m') cost = (time.process_time() - dt0) print(u'合约%s的分钟K线数据下载完成%s - %s,耗时%s秒' % (symbol, startDt, enddt, cost)) print(jq.get_query_count()) print('-' * 50) print u'合约分钟线数据下载完成' print('-' * 50) return Noneif __name__ == '__main__': JQdata = JQDataService() JQdata.downloadAllMinuteBar(days=30)config.json
{ "jqdata.Username": "", "jqdata.Password": "", "Bar.Min": [ "MA8888.CZCE", "MA009.CZCE", "SR8888.CZCE", "RM8888.CZCE", ]}"怎么为VNPY 2版本加入聚宽数据源"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
数据
合约
交易所
数据源
版本
代码
内容
更多
知识
证券
上海
配置
实用
特殊
学有所成
接下来
只有
困境
国际
实际
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
与服务器连接意外终止
化学通讯查哪个数据库
客户机服务器系统有哪些
小程序网络安全保障措施
电力网络安全管理整改方法
hp服务器回收
我的世界魔法族服务器
ar3d模型数据库
服务器冷却液制造厂家
河南新一代软件开发服务
石家庄市国家网络安全宣传
怎么找软件开发工作室
山东定制少儿编程平台软件开发
裁决战歌服务器连接失败
武汉大学网络安全取消挂牌
数据库第二版教材答案
目前从事网络安全运维工作
网络技术有限公司简介范文
怎么删除打印服务器里的驱动
我国网络安全现状分析
浙大网络安全专业考研
软件开发专业宣传建议
服务器排风声音大
越南软件开发工资高吗
郑州打车软件开发
重庆服务器系统托管云主机
湖南网络安全应急演练
湖南工控服务器散热器云主机
魔力 无法读取服务器列表
网络技术的应用教学设计