如何利用Joinquant数据源为vnpy添加期货行情数据
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,小编给大家分享一下如何利用Joinquant数据源为vnpy添加期货行情数据,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用聚宽(Joinquant)数据源JQData为vnpy添
千家信息网最后更新 2025年11月11日如何利用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安全错误
数据库的锁怎样保障安全
数据库数据的四舍五入
网络安全与执法人才培养规格
用云服务器跑
数据库数据在哪里
vc 数据库封装
企业服务器搭建方法
ibmpc服务器远程管理
网络安全故事分享
杭州大喵互联网科技有限公司
云服务器和云桌面有什么不同
上海大型软件开发价格网
苏州海航软件开发答疑解惑
网络安全观是什么
如何修复无法连接到服务器
安全的高防服务器托管
马蜂云服务器
数据库关系的度数是啥
360国家网络安全基地
软件开发新手入门
5g网络安全事件
软件开发去那学
优酷用什么数据库系统
中国企业网络安全公司
web服务器管理步骤
如何查找专利信息的数据库
数据库查询分析器创建表
网络技术专业新闻
蚂蚁金服首席网络安全官
厦门盘古软件开发
加拿大中学生网络安全