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

相关文章

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

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.