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

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

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

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

import tushare as ts
import pandas as pd
import datetime
f=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,它只支持最小单位分钟的调度,但稍加运用,也可以用来调度我们获取实时数据的程序。

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

  1. 金融量化分析-python量化分析系列之---使用python获取股票历史数据和实时分笔数据

    财经数据接口包tushare的使用(一) Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据.年度季度报表数据.实时分笔数据.历史分笔数据,本文对tushare的用法,已经存在的 ...

  2. 使用PyQt(Python+Qt)+动态编译36行代码实现的计算器

    PyQt是基于跨平台的图形界面C++开发工具Qt加Python包装的一个GPL软件(GPL是GNU General Public License的缩写,是GNU通用公共授权非正式的中文翻译),Qt基于 ...

  3. Python入门教程丨1300多行代码,让你轻松掌握基础知识点

    欢迎关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 前言 本文适合有经验的程序员尽快进入Python世界.特别地 ...

  4. Python量化分析,计算KDJ

    Python: v3.6 Pandas: v0.23.4 使用以下方法计算与国内财经软件显示一致 low_list = df['最低价'].rolling(9, min_periods=9).min( ...

  5. 3行!仅3行代码就能抓取B站(弹幕、评论、用户)数据

    今天介绍一个获取B站数据的Python扩展库-bilibili_api 可以获取的数据包括: video-视频模块 user-用户模块 dynamic-动态模块 这次用“Running Man”十周年 ...

  6. 10行代码,用python能做出什么骚操作

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:小栗子 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...

  7. python实战:用70行代码写了一个山炮计算器!

    python实战训练:用70行代码写了个山炮计算器! 好了...好了...各位因为我是三年级而发牢骚的各位伙伴们,我第一次为大家插播了python的基础实战训练.这个,我是想给,那些python基础一 ...

  8. python多行代码简化

    python中,可以把多行代码简化为一行,把for循环和if条件判断都集中到一行里来写,示例如下: >>> from nltk.corpus import stopwords > ...

  9. 通过90行代码学会HTML5 WebSQL的4种基本操作

    Web SQL数据库API是一个独立的规范,在浏览器层面提供了本地对结构化数据的存储,已经被很多现代浏览器支持了. 我们通过一个简单的例子来了解下如何使用Web SQL API在浏览器端创建数据库表并 ...

随机推荐

  1. java IO类简单介绍

    一.流的概念 流是字节序列的抽象概念.流和文件的差别:文件是数据的静态存储形式,而流是指数据传输时的形态.文件只是流的操作对象之一.流按其操作的对象不同可以分为文件流.网络流.内存流.磁带流等.Jav ...

  2. Java 栈与堆简介

    一.前言 长久以来,一直被Java的内存分配问题,堆和栈问题困扰好久,面试的时候也非常心虚,这几天好好通过看书和技术博客来整理了一下,希望能找到我自己的理解方式. 二.内存 内存分物理内存和虚拟内存, ...

  3. Local Notification

    大家都知道Push Notification,这个东西需要联网才可以用.iOS4起,苹果引入了一种可以在设备内部引发的notification.不需要复杂的服务器编程,或其他复杂的配置.这个技术就是L ...

  4. 自定义DropDownMenu菜单

    在JayFang1993 / DropDownMenu的基础上进行修改,最后的到自己想要的效果 本来的效果: 而我最后实现的效果是: 我们先来分析一下DropDownMenu的源代码 需要改动的地方 ...

  5. 在线测试正则表达式工具 jQuery.Validate验证库

    http://www.jb51.net/tools/zhengze.html http://www.cnblogs.com/weiqt/articles/2013800.html  

  6. android多lib库工程的自动批量构建--编写ant脚本

    基本配置--build.properties 首先编写基本配置build.properties ,主要配置如下: android sdk所在目录 编译项目所使用的项目版本 Jdk所在目录 以及签名时, ...

  7. linux 分区 文件系统

    操作系统通过文件系统管理文件及数据,磁盘或分区需要创建文件系统之后才能为操作系统使用,创建文件系统的过程又称之为格式化. 没有文件系统的设备称之为裸设备(raw); 常见的文件系统有fat32,NTF ...

  8. 电脑连接真机,但是androidstudio不显示手机,ADB Interface黄色感叹号

    1.打开设备管理器 右键计算机 -->管理-->选择设备管理器 2. 步骤如下: 1. 在设备管理器中,找到ADB Interface,右击,选择“更新驱动程序软件” 2. 在弹出的窗口中 ...

  9. PMBOK项目管理认知概要

    2015年6月,通过努力取得PMP证书,很是欣喜,也是对努力付出的一种奖励吧! 通过学习PMP相关的项目管理的知识,对国外的项目管理技术有更加系统的认知.理解.掌握,熟悉全项目生命周期的管理. 其实对 ...

  10. 中文 bootstrapValidator

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...