​​

数量技术宅团队在CSDN学院推出了量化投资系列课程

欢迎有兴趣系统学习量化投资的同学,点击下方链接报名:

量化投资速成营(入门课程)

Python股票量化投资

Python期货量化投资

Python数字货币量化投资

C++语言CTP期货交易系统开发

数字货币JavaScript语言量化交易系统开发


实时股票数据的重要性

对于四大可交易资产:股票、期货、期权、数字货币来说,期货、期权、数字货币,可以从交易所提供的api收到实时行情数据,而股票由于量化交易接口不面向普通人开放,导致大家想要获取到股票的实时数据,十分困难。而与此同时,股票实时数据,又是极其重要的场内交易数据。

对于手动交易者而言,实时数据一方面可以辅助盯盘,另一方面,可以用程序简单开发到价提醒,到某个价位,进行入场和出场的交易。

对于量化交易者,实时行情就更加重要了。我们接收实时行情之后,不仅需要用实时数据计算策略信号,而且当策略信号需要对某个股票进行下单的时候,我们也需要知道该股票的最新价格、盘口数据,从而根据价格+盘口,选择合适的价位下单。此外,实时数据落地后,还可以为我们的策略回测服务。

爬虫最通俗原理解释

爬虫,相当于模仿了网页查询的动作,比如我们在浏览器中输入了www.baidu.com,浏览器向我们返回百度的主页,其实这就是一个请求+返回的过程。我们请求的是地址,返回的是数据(尽管我们看到的是百度主页,其实背后对应的还是一些列的数据,只不过后续的可视化展示成了网页)。

对于请求股票数据来说,也是同理。比如我们请求某一只股票的数据(以600000浦发银行为例),在浏览器地址中输入:http://hq.sinajs.cn/list=sh600000,股票代码可任意修改,浏览器返回如下数据集并显示:

当然同时查询多只股票,也是可以做到的,我们同样在浏览器中输入地址,例如:http://hq.sinajs.cn/list=sh600000,sz000001,sz000002,就同时查询到了浦发银行、平安银行、万科A的数据。

那么,对于Python来说,我们如何使用Python来模仿网页查询的动作?这里必须要借助一个Python的三方库:request库。

requests是使用Apache2 licensed 许可证的HTTP库。Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。可以说,requests在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。与此同时,requests会自动实现持久连接keep-alive。

requests库的上述优点,加上其使用的便捷性,使得其成为Python爬虫的首选工具。我们通过requests,来重复一遍上述网页的查询过程,步骤也很简单,首先查询单个股票,返回如下

再次查询多个股票,返回如下,可以看到,用requests进行查询所返回的结果,与我们网页上看到的是完全一致的,这也说明requests完美的模拟了浏览器的请求动作。

Python爬虫Sina Stock实战

第一步,Sina API + Requests库调用核心函数

通过调用Sina Stock API,实时查询股票价格。我们采用多股票查询,使用requests请求接口。

核心函数逻辑:code传入股票代码,调用requests库进行查询,并解析查询结果,得到我们想要查询的股票最新价格、当日涨跌幅、昨收盘价等关键字段

第二步,通过threading多线程同时查询结果、通过Queue实现线程池

我们简要介绍一下threading和Queue。threading模块中包含了关于线程操作的丰富功能,包括:常用线程函数,线程对象,锁对象,递归锁对象,事件对象,条件变量对象,信号量对象,定时器对象,栅栏对象。threading.Thread:线程对象,重要方法,start():开启线程活动。它将使得run()方法在一个独立的控制线程中被调用,需要注意的是同一个线程对象的start()方法只能被调用一次,如果调用多次,则会报RuntimeError错误。run():此方法代表线程活动。

Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语,能够在多线程中直接使用。可以使用队列来实现线程间的同步。Queue.put(item) 写入队列;Queue.get([block[, timeout]])获取队列

第三步,模块化实现:Worker类 & Stock类

Worker类,主要实现功能:

  1. 传入线程实例对象,调用init、start方法,重载run函数

  2. work_queue存放要查询的队列,依次取出(FIFO),查询结果存到result_queue队列,当队列满,取出结果队列中所有查询结果,并打印

Stock类,主要实现功能:

  1. 初始化生产者、消费者队列,生产者队列为空,消费者队列最大数量是查询的股票数量

  2. 按预设的线程数据,初始化线程池,绑定Worker类

  3. 对于每次每只要查询的股票,加入生产者队列

  4. 定义爬虫获取数据的函数

最后,我们调用Worker类和Stock类,就能得到想要获取的结果了。

运行结果展示

程序不仅可以获取个股数据,也能够获取指数数据,我们默认订阅了上证指数、深圳综指、万科A、浦发银行,4个数据流,以下是默认运行结果的展示,我们打印了最新价、涨跌幅、昨收价等关键数据。我们按照一定的时间间隔,获取数据并打印。

程序的扩展:在主程序入口,可修改查询的股票数量,我们支持多股票同时查询;查询的时间间隔、查询的线程数量的修改。

当然,我们也可以对该爬虫程序做后续的进一步拓展,比如计算量化策略信号,落地数据作为回测数据,等等。

如果你想要获取这个Python爬虫Sina Stock程序,欢迎扫码添加数量技术宅个人微信,领取完整代码。

想要获取本次分享的完整代码,或是任何关于数据分析、量化投资的问题,欢迎添加技术宅微信:sljsz01,一起交流


 往期干货分享推荐阅读

数字货币稳定币对网格做市策略

万物皆可秒——淘宝秒杀Python脚本,扫货618,备战双11!

数字货币资金费策略

数字货币无风险收益率又双叒叕扩大了!

分享一个年化15%以上的无风险套利机会

【数量技术宅|交易系统开发系列分享】网格交易系统开发

通过深度学习股价截面数据分析和预测股票价格

剖析一个数字货币高频策略

数字货币交易信号实时预警推送(含群聊)

Omega System Trading and Development Club内部分享策略Easylanguage源码

量化交易如何选择云服务器,如何在本地远程开发与调试云服务器程序

一个真实数据集的完整机器学习解决方案(下)

一个真实数据集的完整机器学习解决方案(上)

如何使用交易开拓者(TB)开发数字货币策略

股指期货高频数据机器学习预测

如何使用TradingView(TV)回测数字货币交易策略

如何投资股票型基金?什么时间买?买什么?

【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略

AMA指标原作者Perry Kaufman 100+套交易策略源码分享

【 数量技术宅 | 期权系列分享】期权策略的“独孤九剑”

如何获取免费的数字货币历史数据

【数量技术宅|金融数据分析系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略

【数量技术宅|量化投资策略系列分享】多周期共振交易策略

【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数

大宗商品现货数据不好拿?商品季节性难跟踪?技术宅带你Python爬虫一键解决没烦恼

【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品

【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略

【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫

实时获取股票数据,免费!——Python爬虫Sina Stock实战相关推荐

  1. 构建股票量化数据库一.实时获取股票数据

    实时获取股票数据 (1)实现步骤 1.通过网络爬虫–>爬取所需要的数据->股票实时价,最高价,最低价等等 2.通过python的->pandas库->进行数据整理清洗 (2)实 ...

  2. 实时获取股票数据的android app应用程序源码分享

    From:http://www.jb51.net/article/72449.htm 本文我们分享一个实时获取股票数据的android app应用程序源码分享,可以作为学习使用,本文贴出部分重要代码, ...

  3. 一个实时获取股票数据的安卓应用程序

    关键字:Stock,股票,安卓,Android Studio. OS:Windows 10. 最近学习Android应用开发,不知道写一个什么样的程序来练练手,正好最近股票很火,就一个App来实时获取 ...

  4. Python量化交易实战-10实时获取股票的数据函数封装

    B站配套视频教程观看 实时获取股票的数据函数封装 实现股票数据获取的模块及方法 从这节课开始 我们就开始构建所谓的量化交易系统,量化交易平台功能模块. 上面是量化交易系统的功能模块图,主要分为3块,第 ...

  5. 雅虎财经数据python 网络爬虫stock股票 用 Python 通过雅虎财经获取股票数据

    yfinance Python Tutorial (2022) - Analyzing Alpha https://www.youtube.com/watch?v=SxIwqdedomg   讲的很详 ...

  6. matlab python 股票,股票行情数据获取-Python获取股票数据?

    Python获取股票数据? 这里推荐一个包―tushare,tushare是一个免费.开源的python财经数据接口包.主要实现了从数据采集.清洗加工到数据存储过程,能够为金融分析人员提供快速.整洁的 ...

  7. Python量化入门系列:获取数据-Tushare获取股票数据(1)

    做量化用到的数据一般包括二级市场各种数据.宏观经济各种数据以及一些特殊需求的网页数据,需要有通过python获取数据.常见的获取数据方式有三种: 一是通过SQL语言从数据库获取数据,适用于二级市场和宏 ...

  8. Python用tushare库获取股票数据批量存入mysql成功

    之前用了很多方法无法批量存入mysql中,现在这个方法可以了 首先你需要安装tushare,现在最新版本是1.2.15 2018/10/15 如果之前没有安装,请用"开始-所有程序-附件-命 ...

  9. python分析股票主力_python如何获取股票数据,python股票分析系统

    内容导航: Q1:怎样用python处理股票 用Python处理股票需要获取股票数据,以国内股票数据为例,可以安装Python的第三方库:tushare:一个国内股票数据获取包.可以在百度中搜索&qu ...

最新文章

  1. Assembly of long, error-prone reads using repeat graphs 使用重复图组装长且容易出错的读操作
  2. Jupyter安装r内核
  3. 红帽系列linux自行配置本地yum源
  4. yum安装源是出现报冲突错误,解决办法
  5. 和虫师一起学python(7)
  6. PS教程第十五课:图层是最基本的要求
  7. java调用kafka
  8. mysql8 修改root密码
  9. 狗狗手机壁纸|爱宠必备
  10. NLP之路-一点小语言工具函数
  11. Python实现用户登录
  12. Spring Bean的循环依赖解决方案
  13. python中ascii的应用_Python程序中的ascii()
  14. 中国交互式智能板市场趋势报告、技术动态创新及市场预测
  15. “拼多多优惠券”测试的套路,今天让你秒懂~
  16. Kafka配置5--Windows下配置Kafka的集群+SASL+SSL
  17. am4xMjIx 解密,jn1221解密,AdminWeb 解密分析。
  18. 电源大师课笔记 1.8
  19. Kepware助力数据中心对接楼宇自动化系统
  20. SocksGun源码(类SocksCap)

热门文章

  1. 数据结构与算法——红黑树(Red Black Tree)
  2. Restful API 接口规范
  3. 二重积分x^2+y^2_计算二重积分∫∫(x+y)dxdy,其中D为x^2+y^2≤2x
  4. 矩阵出现重复特征值,其特征向量的简便求法
  5. 小总结:git的使用
  6. 谁先倒(15 分) 划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒
  7. 自定义制作音频播放器_使用HTML5制作音频播放器,第1部分:功能和设计
  8. IIC和SPI的异同
  9. 什么是node.js
  10. 需求分析——需求分析的步骤