如何利用Joinquant数据源为vnpy添加期货行情数据
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下如何利用Joinquant数据源为vnpy添加期货行情数据,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用聚宽(Joinquant)数据源JQData为vnpy添
千家信息网最后更新 2026年11月02日如何利用Joinquant数据源为vnpy添加期货行情数据
小编给大家分享一下如何利用Joinquant数据源为vnpy添加期货行情数据,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
使用聚宽(Joinquant)数据源JQData为vnpy添加期货行情数据
代码就两个文件,一个config.json主要放登陆用户名和期货品种名称对应表,因为期货品种在聚宽的名称是不一样的。
JQDataload.py是提供分钟级别下载方法,和一个期货品种名称对照列表从聚宽下载。
聚宽一天提供100万条数据下载,所以每次下载结束会有倒计时提供。其实代码很简单,唯一难点就是就是vnpy是每天9点00开始点,而聚宽是每天9点01为开始点;就抄抄之前vnpy已有代码解决。
结构如下
-JDDataService
|--config.json
|--JQDataload.py
其实使用很简单,步骤如下:
1.运行 pip install jqdatasdk , 安装jqdata的sdk
2.在聚宽平台注册试用数据,链接: https://www.joinquant.com/default/index/sdk
3.在config.json中维护登录名和密码,
4.运行JQDataload.py
config.json代码如下:
{ "Username": "聚宽申请", "Password": "聚宽申请", "rb1910":"RB1910.XSGE", "zn1807": "ZN1807.XSGE", "rb0000": "RB9999.XSGE"}JQDataload.py代码如下:
# encoding: UTF-8 from __future__ import print_functionimport sysimport jsonfrom datetime import datetime,date,timedeltafrom time import time, sleep from pymongo import MongoClient, ASCENDINGimport pandas as pd from vnpy.trader.vtObject import VtBarData, VtTickDatafrom vnpy.trader.app.ctaStrategy.ctaBase import (MINUTE_DB_NAME, DAILY_DB_NAME, TICK_DB_NAME) import jqdatasdk as jq # 加载配置config = open('config.json')setting = json.load(config) mc = MongoClient() # Mongo连接dbMinute = mc[MINUTE_DB_NAME] # 数据库# dbDaily = mc[DAILY_DB_NAME]# dbTick = mc[TICK_DB_NAME] USERNAME = setting['Username']PASSWORD = setting['Password']jq.auth(USERNAME, PASSWORD) FIELDS = ['open', 'high', 'low', 'close', 'volume'] # ----------------------------------------------------------------------def generateVtBar(row, symbol): """生成K线""" bar = VtBarData() bar.symbol = symbol bar.exchange = "SHFE" bar.vtSymbol = bar.vtSymbol = '.'.join([bar.symbol, bar.exchange]) bar.open = row['open'] bar.high = row['high'] bar.low = row['low'] bar.close = row['close'] bar.volume = row['volume'] bardatetime = row.name bar.date = bardatetime.strftime("%Y%m%d") bar.time = bardatetime.strftime("%H%M%S") # 将bar的时间改成提前一分钟 hour = bar.time[0:2] minute = bar.time[2:4] sec = bar.time[4:6] if minute == "00": minute = "59" h = int(hour) if h == 0: h = 24 hour = str(h - 1).rjust(2, '0') else: minute = str(int(minute) - 1).rjust(2, '0') bar.time = hour + minute + sec bar.datetime = datetime.strptime(' '.join([bar.date, bar.time]), '%Y%m%d %H%M%S') return bar # ----------------------------------------------------------------------def jqdownloadMinuteBarBySymbol(symbol,startDate,endDate): """下载某一合约的分钟线数据""" start = time() cl = dbMinute[symbol] cl.ensure_index([('datetime', ASCENDING)], unique=True) # 添加索引 df = jq.get_price(setting[symbol],start_date = startDate,end_date = endDate, frequency='1m', fields=FIELDS,skip_paused = True) for ix, row in df.iterrows(): bar = generateVtBar(row, symbol) d = bar.__dict__ flt = {'datetime': bar.datetime} cl.replace_one(flt, d, True) end = time() cost = (end - start) * 1000 print(u'合约%s的分钟K线数据下载完成%s - %s,耗时%s毫秒' % (symbol, df.index[0], df.index[-1], cost)) print(jq.get_query_count()) def jqdownloadMappingExcel(exportpath = "C:\Project\\"): getfuture = jq.get_all_securities(types=['futures'], date=None) # list: 用来过滤securities的类型, list元素可选: 'stock', 'fund', 'index', 'futures', 'etf', 'lof', 'fja', 'fjb'.types为空时返回所有股票, 不包括基金, 指数和期货 getfuture.to_excel( exportpath + "Mapping" + str(date.today()) + "futures.xls", index=True, header=True) # ----------------------------------------------------------------------def downloadAllMinuteBar(days=10): """下载所有配置中的合约的分钟线数据""" print('-' * 50) print(u'开始下载合约分钟线数据') print('-' * 50) startDt = datetime.today() - days * timedelta(1) startDate = startDt.strftime('%Y-%m-%d') # 添加下载任务 enddt = datetime.today() endDate = enddt.strftime('%Y-%m-%d %H:%M:%S') jqdownloadMinuteBarBySymbol('rb1910', startDate, endDate) print('-' * 50) print u'合约分钟线数据下载完成' print('-' * 50) if __name__ == '__main__': # jqdownloadMappingExcel() #下载主力合约 downloadAllMinuteBar(days=10) #下载单个品种 # jqdownloadMinuteBarBySymbol('510050.XSHG',startDate,endDate)看完了这篇文章,相信你对"如何利用Joinquant数据源为vnpy添加期货行情数据"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
数据
期货
合约
代码
品种
数据源
行情
名称
就是
篇文章
运行
配置
倒计时
万条
两个
主力
任务
元素
单个
基金
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡豆
互联网高科技
新华互联网科技学校
今日互联网科技
涨乐互联网科技
佰商互联网科技有限公司
互联网科技有限公司 翻译
盛创互联网科技有限公司
来此购互联网科技有限公司
华夏互联网科技业
恒生互联网科技指数跳水
呼和浩特新华互联网科技学院
北京市互联网新科技
银行科技岗属于互联网吗
张家口科技产业互联网平台
互联网科技职业技能培训学校
美国五大互联网科技公司市值多少
深圳互联网科技园地址
东风日产互联网科技公司叫什么
六子台科技互联网展会
深圳恒合互联网络科技有限公司
深圳齐家互联网科技
互联网科技缩写
美国互联网前沿科技
中正互联网科技招聘
老年人脱离互联网科技的作文
常德市电业局互联网科技部
互联网5g黑科技有哪些
每天都有哪些好的互联网科技
中国互联网有什么科技