1. qteasy金融历史数据管理
qteasy 是一套功能全面的量化交易工具包,金融数据的获取和使用是qteasy提供的核心功能之一。
1.1. 总体介绍
目前,网上有很多不同的金融数据获取渠道,可供量化交易者下载金融数据,但是直接从网上下载数据,有许多缺点:
数据格式不统一:同样的数据,例如交易量数据,有些渠道提供的数据单位为“手”,而另一些提供的数据为“股”
可提取的数据量有限:尤其是通过爬虫获取的数据,高频K线数据往往只有过去几天的数据,更久以前的数据无法提供
数据提取不稳定:数据提取速度和成功率不能保证,受网络连接影响很大
下载成本较高:收费数据渠道往往能提供更全面的数据,但是一般都有流量限制,而免费渠道提供的数据不全,也提高成本
信息提取不易:获得原始数据以后,还需要进一步将数据转化为需要的信息,这个过程费力且不直观
qteasy就是为了解决上面提到的这些痛点而设计的。
qteasy的金融数据管理模块提供了三个主要的功能,这三个功能的设计,着眼点都是为了
数据拉取:从多个不同的网络数据提供商拉取多种金融数据,满足不同用户的使用习惯:
qteasy提供的数据拉取API具备强大的多线程并行下载、数据分块下载、下载流量控制和错误延时重试功能,以适应不同数据供应商各种变态的流量限制,同时数据拉取API可以方便地定期自动运行完成数据批量下载任务,不用担心错过高频数据。数据清洗和存储:标准化定义本地数据存储,将从网络拉取的数据清洗、整理后保存到本地数据库中:
qteasy定义了一个专门用于存储金融历史数据的DataSource类,并以标准化的形式预定义了大量金融历史数据存储表,不管数据的来源如何,最终存储的数据始终会被清洗后以统一的格式存储在DataSource中,避免不同时期不同来源的数据产生偏差,确保数据高质量存储。同时提供多种存储引擎,满足不同用户的使用习惯。信息提取和使用:区分“数据“和”信息,“提供接口将集中在数据表中的真正有意义的信息提取出来,从而直接用于交易策略或数据分析:
我们知道”数据“并不等于”信息“,光是将数据表保存在本地不代表立即就能使用其中的信息。而
qteasy特意将数据表中的可用“信息”以标准化的方式定义为DataType对象,简化数据访问过程和策略的定义过程,统一的API使得获取信息的过程变得更加直接和友好
总体来说,qteasy的数据获取模块的结构可以用下面的示意图来表示:
QTEASY数据管理模块: 
如图所示,qteasy的数据功能分为三层,第一层包括多种数据下载接口,用于从网络数据提供商获取数据,这个过程称为DataFetching。第二层是qteasy的核心功能之一,定义了一个本地数据库用于存储大量的数据表,并且支持多种数据引擎,这一层的核心是DataSource类,第三层是数据应用层,将数据表中有意义的信息提取出来定义为DataType对象,提取数据的过程被称为Information Extraction。而这个DataType对象在qteasy内部被广泛使用,创建交易策略,进行数据分析、可视化等后续的一切工作,都是以DataType对象为基础进行的。
正因为金融数据在量化交易过程中的重要性,从下一章节开始,我们将按以下顺序详细介绍 qteasy 数据功能的所有功能模块(阅读顺序与文件名编号一致,2 → 2.5 → 2.6 → 3 → … → 10):
2. DataType 对象与所有数据类型——信息与数据的区别、DataType 对象、所有内置数据类型清单
2.5. HistoryPanel(历史数据面板)——多标的、多指标、时间对齐的三维容器;与
get_history_data的配合及常用切片2.6. HistoryPanel 可视化——
HistoryPanel.plot()静态图与交互图、布局与可选依赖3. 本地数据源 DataSource——DataSource 对象与基本操作
4.~9. 内置数据表——各数据表的结构与用途
10. 数据拉取与渠道——从不同渠道拉取并填充数据