JQData | 量化学习:聚宽jqdatasdk对接vnpy的数据服务

2023-10-13 04:48

本文主要是介绍JQData | 量化学习:聚宽jqdatasdk对接vnpy的数据服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自 https://www.cnblogs.com/quantzone/p/9409300.html

数据服务:使用聚宽jqdatasdk获取分钟数据按vnpy的Bar格式导入至mongodb中

提供downloadAllMinuteBar(),可以通过定时任务的形式,按vnpy的数据格式,每日获取分钟数据写入到mongodb当中

提供downloadMinuteBarByDate,可以输入开始日期与结束日期,将时间段内的分钟数据写入到mongodb当中

在config文件中配置jqdatasdk的用户名密码

每日增量数据获取(作为数据服务,每日自动运行,将当日的增量数据插入到数据库中):

复制代码

#----------------------------------------------------------------------
# 当日数据下载,定时任务使用
def downloadAllMinuteBar():jqdatasdk.auth(JQDATA_USER, JQDATA_PASSWORD)"""下载所有配置中的合约的分钟线数据"""print('-' * 50)print(u'开始下载合约分钟线数据')print('-' * 50)today = datetime.today().date()trade_date_list = jqdatasdk.get_trade_days(end_date=today, count=2)symbols_df = jqdatasdk.get_all_securities(types=['futures'], date=today)for index, row in symbols_df.iterrows():downMinuteBarBySymbol(index, row, str(today), str(trade_date_list[-2]))print('-' * 50)print(u'合约分钟线数据下载完成')print('-' * 50)return

复制代码

某段时间内的全量数据(为了补全某一段时间的全量数据进行使用):

复制代码

#----------------------------------------------------------------------
# 按日期一次性补全数据
def downloadMinuteBarByDate(start_date, end_date=datetime.today().date()):jqdatasdk.auth(JQDATA_USER, JQDATA_PASSWORD)"""下载所有配置中的合约的分钟线数据"""print('-' * 50)print(u'开始下载合约分钟线数据')print('-' * 50)trade_date_list = jqdatasdk.get_trade_days(start_date=start_date, end_date=end_date)i = 0for trade_date in trade_date_list:if i == 0:i = 1continuesymbols_df = jqdatasdk.get_all_securities(types=['futures'], date=trade_date)for index, row in symbols_df.iterrows():downMinuteBarBySymbol(index, row, str(trade_date_list[i]), str(trade_date_list[i-1]))i += 1print('-' * 50)print(u'合约分钟线数据下载完成')print('-' * 50)return

复制代码

具体合约当日的数据下载函数与vnpy的Bar类型数据的生成插入数据库的过程:

复制代码

#----------------------------------------------------------------------
def generateVtBar(symbol, time, d):"""生成K线"""bar = VtBarData()bar.vtSymbol = symbolbar.symbol = symbolbar.open = float(d['open'])bar.high = float(d['high'])bar.low = float(d['low'])bar.close = float(d['close'])bar.date = datetime.strptime(time[0:10], '%Y-%m-%d').strftime('%Y%m%d')bar.time = time[11:]bar.datetime = datetime.strptime(bar.date + ' ' + bar.time, '%Y%m%d %H:%M:%S')bar.volume = d['volume']return bar#----------------------------------------------------------------------
def downMinuteBarBySymbol(symbol, info, today, pre_trade_day):start = time()symbol_name = info['name']cl = db[symbol_name]cl.ensure_index([('datetime', ASCENDING)], unique=True)  # 添加索引# 在此时间段内可以获取期货夜盘数据minute_df = jqdatasdk.get_price(symbol, start_date=pre_trade_day + " 20:30:00",end_date=today + " 20:30:00", frequency='minute')# 将数据传入到数据队列当中for index, row in minute_df.iterrows():bar = generateVtBar(symbol_name, str(index), row)d = bar.__dict__flt = {'datetime': bar.datetime}cl.replace_one(flt, d, True)e = time()cost = (e - start) * 1000print(u'合约%s数据下载完成%s - %s,耗时%s毫秒' % (symbol_name, pre_trade_day, today, cost))

复制代码

vnpy中提供了好几个数据服务的实现,功能也比较简单,但是能有不错的功效,聚宽的jqdatasdk也提供了很好的数据服务,十分有利于建立本地的体系。

Github:

JQdataServiceForVNPY

这篇关于JQData | 量化学习:聚宽jqdatasdk对接vnpy的数据服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200859

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

java对接第三方接口的三种实现方式

《java对接第三方接口的三种实现方式》:本文主要介绍java对接第三方接口的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录HttpURLConnection调用方法CloseableHttpClient调用RestTemplate调用总结在日常工作

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操