重磅好消息!Python量化还在为历史资料伤脑筋的朋友看过来
重磅好消息!Python量化还在为历史资料伤脑筋的朋友看过来
如果你正在使用Python做量化分析,一直苦于找不到一个良好的历史资料库来源。不是需要付费或者被限制下载的个数;再不然就是要忍受下载的龟速。现在介绍的这个方法,一次解决了上述的所有困扰。享受历史资料秒开的快感,因为资料库就在自己家。如果觉得有帮助,请您点个赞、关注。因为针对这个方法,未来还会再搞一些好玩的东西,来与大家一起分享,希望不会错过。
这个好用的数据接口,就是透过“Pytdx - Python tdx数据接口“来完成。这个接口其实早就存在已久,不过一般都是通过它利用网络来对通达信的伺服器下载历史资料。在一年多以前,我看说明书,好像有写到将要介绍的这些功能。但当时并没有发现到有任何的功能发表,但是最近发现到它这些功能已经逐渐的完备了。这一部分让人惊喜的功能就是不需要再透过网络去下载历史资料,而是直接从我们电脑当中的通达信软件资料库里面直接读取资料。所以这是最方便快速的一种资料获得方式。
首先当然你的电脑必须要安装通达信的电脑端软件。不限任何的版本,所以只要安装免费版本即可。再来在选项当中选择盘后数据下载,将您想要的资料库补齐。扩展资料所指的就是期货商品部分。先提醒大家,如果要下载分时资料的话,请不要设定下载太长时间,不然灌爆了自己的磁盘,可不要怪我。
以上这些步骤做好了,那么就稳妥的自己拥有了一个资料库。接下来就让我们进入正题,有请Python上场。首先当然你必须先要去安装这个套件。可以透过以下的指令来安装。
pip install pytdx
这是转载官方对reader的这个函数接口的使用介绍。
(官方文件位置)
Reader接口
读取通达信的日K线
通过下面的接口,我们可以解析通达信的日K线文件,该文件可以通过读取通达信的软件本地目录导出的数据获取,也可以从通达信的官网上下载, 如果您安装了通达信的终端,可以在安装目录下找到vipdoc
子目录。
比如我的通达信客户端安装在c:\new_tdx
下,
即c:\new_tdx\vipdoc\sz\lday\
下是深圳的日k线数据c:\new_tdx\vipdoc\sh\lday\
下是上海的日k线数据
该目录下每个股票为一个文件,如sz000001.day
为深圳的日k行情,
所以我们先去电脑的文件资源管理器里面,依照他们所介绍的路径。看看里面这个目录是否非常的热闹。我的意思是有好几千个档案。
上图就是确认了这个目录,是储存所有上海交易所上市公司股票的历史资料。接下来就可以在Python上面建立以下的程式码。
from pytdx.reader import TdxDailyBarReader, TdxFileNotFoundException
reader = TdxDailyBarReader()
df = reader.get_df("D:/new_tdx/vipdoc/sz/lday/sz000417.day")
df.tail()
如果没什么意外,应该是类似下图的结果。这就是开启股票日线资料的方式。
接下来我们来试着看如何导入期货方面的历史资料。尝试进入以下的程式码;注意这里import进来的东西是不一样的。
from pytdx.reader import TdxExHqDailyBarReader
reader = TdxExHqDailyBarReader()
df = reader.get_df("D:/new_tdx/vipdoc/ds/lday/29#EBL8.day")
df.tail()
以下范例是调用EB的主连日线资料。在通达信当中,以L8标识为主连。
以上就是比较常用的股票与期货日线历史资料调用的例子。我们再来看看如何调用分析资料,现在我们尝试键入以下的程式码。在这里官方提供了两个不同目录下的提取方式。应该是在通达信不同的版本下储存的位置有所差异。使用免费版的应该是在这个地方。D:\new_tdx\vipdoc\sh\minline
这里是官方说明书当中,所指的两种存在不同的目录底下,档名的差异。我们免费版应该都是第2个目录当中。
读取通达信的分钟K线(目前支持1,5分钟k线)
分钟线有两种格式,第一种是.1 .5 为后缀的
from pytdx.reader import TdxMinBarReader, TdxFileNotFoundException
reader = TdxMinBarReader()
df = reader.get_df("/Users/rainx/Downloads/sh000001.5")
还有一种为 .lc1 .lc5 后缀的 <-这里
from pytdx.reader import TdxLCMinBarReader, TdxFileNotFoundException
reader = TdxLCMinBarReader()
df = reader.get_df("/Users/rainx/Downloads/sz000001.lc5")
print(df)
以下的程式码,可以让我们获取到指定的股票一分钟历史价格。
from pytdx.reader import TdxLCMinBarReader, TdxFileNotFoundException
reader = TdxLCMinBarReader()
df = reader.get_df("D:/new_tdx/vipdoc/sz/minline/sz000417.lc1")
df.tail(10)
至于股票,5分钟的历史价格。我查了一下,应该是存在这个目录底下。D:\new_tdx\vipdoc\sh\fzline
所以把程式改一下子,就可以调取到5分钟的数据资料了。
在目前通达信的资料库储存;分时上面只有一分钟与5分钟的资料。其他时间间隔的分钟线在以后的机会里我们再来想方法解决。至于其他关于期货方面的一分钟,以及5分钟分时资料的读取。是跟股票大同小异的。甚至调取的函式也是一样;只是指向的路径是不同的。以下分别是期货一分钟以及5分钟资料调取的截图。
关于这个接口的资料存储的方式,今天就先介绍到这里。感觉这真的是通达信的佛心来着。虽然已经用了一两天了,可是嘴角还是持续得意的抽搐着。也希望正在为量化交易工作需要历史资料库,一直伤脑筋的朋友们,也会喜欢今天的介绍。如果觉得对大家在资料库方面有提供到帮助,麻烦点个赞加关注。关于对于这个接口的应用,我未来还会再继续介绍。
留言
張貼留言