博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据
阅读量:5338 次
发布时间:2019-06-15

本文共 1966 字,大约阅读时间需要 6 分钟。

python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据

前两篇文章分别简单介绍了tushare这个财经数据接口包的使用,用起来很简单顺手,一两句代码就可以获取到你想的要的数据,但是有在群里经常看到说获取数据经常挂,延迟很严重等等,其实那是因为使用者没有好好去领悟和了解工具。片面两篇文章已经对tushare如何获取股票的历史数据和实时数据有过简单的介绍,没看过的朋友可以到微信公众号【数据之佳】点击往期文章就可以查看。上两篇文章只是向大家介绍了tushare这个工具,相信有不少对量化投资感兴趣,却不知道如何获取数据的朋友已经尝试过使用他来获取数据,但遗憾的是,如果不注意使用的技巧,你获取数据的脚本即使不经常挂,得到的数据质量也不高,尤其是实时分笔数据,上一篇文章展示的代码,获取一次所有股票的实时数据整整花了20秒的时间,遇到这种情况,可能很多人会想,是不是我的网速的问题,或者是数据限制访问的频次导致的?所以只能退而求其次,自我安慰,有总比没有好。

其实不然,我们使用tushare来获取数据,器数据也是通过爬虫从各个数据爬下来的,那么在代码访问数据的过程中,每一次访问都需要经过验证,就好像你需要从仓库中取一万个零件,你每一次只取一个,而仓库管理员必须遵守规定,每一次取物品都需要验证人的身份,做记录等等一系列繁杂的手续,很可能你验证身份所花的时间比你取物品的时间还要多得多,然而如果你有一辆卡车,一次可以运走一千个零件,那么你每次验证身份,就可以取走一千件,这样身份验证所花的时间比一件一件的取要少一千倍。

这么一说其实道理是很简单的,关键在于你会不会这样去想,向获取数据也一样,每次访问服务器,都需要发送请求,验证等等,这些都是无用的时间开销,如果我们能一次性获取多条数据,就可以大大节省时间开销,恰好tushare获取实时数据的接口函数提供了这样的功能,一次性可以获取多只股票的数据,但不能太多,tushare网页文档说的是最好每次不要获取超过30只股票的数据,但经过我验证,每次最多可以获取880只股票的实时数据,现在一共有3400多只股票,我们只需要获取4次就够了,下面提供一下源代码,核心代码的确只有5行,为了验证是否获取一次数据的时间间隔,我把获取数据之前,以及之后的时间都打印出来了。

import tushare as tsimport pandas as pdimport datetimef=open('F:\get_stocks\get_data\stocks.txt')time1=datetime.datetime.now()stocks=[line.strip() for line in f.readlines()]data1=ts.get_realtime_quotes(stocks[0:880])data2=ts.get_realtime_quotes(stocks[880:1760])data3=ts.get_realtime_quotes(stocks[1760:2640])data4=ts.get_realtime_quotes(stocks[2640:-1])time2=datetime.datetime.now()print('开始时间:'+str(time1))print('结束时间:'+str(time2))print(data1)print(data2)print(data3)print(data4)

 

开始时间:2017-12-04 21:42:27.184003结束时间:2017-12-04 21:42:27.696398

可以看到,获取数据前后的时间差,只有0.5秒多一些,准确的说,这一次实验只用了0.5123秒,当然在这里只是,帮助大家打开思路,在这里还得感谢tushare的开发者,让我们可以很方便的就获取到一些很有价值的金融数据。虽然他不是万能的,但是却能使我们把更多的时间花在自己的模型上面。 

在这里数据就不贴了,感兴趣的朋友自己动手实验一下,我的电脑配置很一般,网速也算不上很好,不用担心你的网速,这个速度你一样可以达到

如果想要把这个思路用在自己的服务器上面,用来获取一整天的实时数据,建议读者使用调度工具,最简单的是linux下面的crontab,它只支持最小单位分钟的调度,但稍加运用,也可以用来调度我们获取实时数据的程序。

转载于:https://www.cnblogs.com/edeny/p/10069986.html

你可能感兴趣的文章
Windwos中的线程同步
查看>>
LeetCode : Reverse Vowels of a String
查看>>
时间戳与日期的相互转换
查看>>
jmeter(五)创建web测试计划
查看>>
python基本数据类型
查看>>
1305: [CQOI2009]dance跳舞 - BZOJ
查看>>
关于TDD的思考
查看>>
Cocos2d-x学习之windows 7 android环境搭建
查看>>
将html代码中的大写标签转换成小写标签
查看>>
jmeter多线程组间的参数传递
查看>>
零散笔记
查看>>
第1章2节《MonkeyRunner源码剖析》概述:边界(原创)
查看>>
JVM相关面试
查看>>
webpack 中版本兼容性问题错误总结
查看>>
python装饰器@property
查看>>
oracle 删除死锁
查看>>
python字符串与文本操作(一)
查看>>
table和div的比较(转)
查看>>
1.几大开发模型区别与联系
查看>>
[原]使用 Microsoft Expression 编写 网页 (javascript) 非常棒
查看>>