【数据知多少】一文学懂通过Tushare、AKshare、baostock、Ashare、Pytdx获取股票行情数据(含代码)_akshare和tushare有什么区别-程序员宅基地

技术标签: pandas  python  量化交易  开发语言  

金融量化交易,是时下最时髦的词。相对于人工股票,量化交易通过采集数据,定制交易策略,程序化执行,可以避免人工盯盘的辛劳,更能轻松解决人性中的很多牵绊对交易的影响,也是新一代股民的革命武器。很多人也因学习量化交易,学习了Python编程,学习了pandas数据分析,甚至学习了各种指标分析。

说到量化交易,不可避免的首先就是行情数据源的获取。虽然市面上各种量化平台众多,但大多聚焦于回测用的历史数据,实时行情数据要么需要付费,或者就需要在特定券商开户(一般有大资金量的要求)。那作为初入股市或者资金量不大的Python股民,就没有办法了吗?怎么会!这难不倒爱钻研的IT人。下面就说说几种常见的获取数据源是方式。

一、免费行情数据获取方式介绍

:以下平台均基于Python,建议安装Anaconda,一次性解决Python及数据分析常用pandas,numpy等包,省去很多麻烦,这对初学者很重要。Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包(数据分析用到的pandas)及其依赖项,下载地址https://www.anaconda.com/download/

以下几种方法都可以实现对股票行情数据的提取,返回pandas数据格式,方便进行数据分析和加工。

  1. Tushare ,网上最流行的免费数据源,新推出的Tushare Pro需要注册,并需要积分方可访问更多数据;支持http restful 采用post方式请求http://api.tushare.pro,可使用其它语言调用API获得数据;
  2. AKshare ,适合进阶,数据内容丰富,发布 AKTools 作为 AKShare 的 HTTP API 版本,可使用其它语言通过调用API获得数据;
  3. baostock ,适合入门,获取一般数据够用了;
  4. Ashare ,极简,A股实时行情数据API,可算做自制爬虫类,效率很高;
  5. Pytdx ,一款纯Python语言开发的类似TradeX的行情数据接口的实现;
  6. 其它爬虫 ,可自行编制爬虫,通过js获取东方财富网、新浪、网易等在线数据,难度较大,但效率高。有兴趣的朋友可以自行琢磨。

1.Tushare

简介

Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。Pro版做了更大的改进。数据内容将扩大到包含股票、基金、期货、债券、外汇、行业大数据,同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台,为各类金融投资和研究人员提供适用的数据和工具。

安装

方式1:pip install tushare --upgrade
使用国内源安装:

pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn --upgrade

代码仓库

https://github.com/waditu/tushare

说明文档

Tushare :http://tushare.org/
Tushare Pro:https://tushare.pro/

2. AKshare

简介

AKShare 是基于 Python 的财经数据接口库,目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具,主要用于学术研究目的。

AKShare 的特点是获取的是相对权威的财经数据网站公布的原始数据,通过利用原始数据进行各数据源之间的交叉验证,进而再加工,从而得出科学的结论。

AKShare 后续会基于学术论文和研究报告来添加更多数据接口和衍生指标,并提供相应的计算代码,敬请关注。

安装

pip install akshare --upgrade
使用国内源安装:

pip install akshare -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com  --upgrade

代码仓库

https://github.com/akfamily/akshare

说明文档

https://akshare.akfamily.xyz/

3. baostock

简介

证券宝www.baostock.com是一个免费、开源的证券数据平台(无需注册)。

提供大量准确、完整的证券历史行情数据、上市公司财务数据等。 通过python API获取证券数据信息,满足量化交易投资者、数量金融爱好者、计量经济从业者数据需求。

安装

方式1:pip install baostock --upgrade
使用国内源安装:

pip install baostock -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn --upgrade

说明文档

http://baostock.com/baostock/

4. Ashare(自制爬虫类)

简介

Ashare ( 开源 极简 A股实时行情数据API),项目库就一个文件Ashare.py,不用安装设置,可自由裁剪,随用随走 from Ashare import * 即可。

双内核封装,新浪财经,腾讯股票的实时行情数据,包括任意历史日线,周线,月线,分钟线,小时线等,已经稳定运行数年。双内核一主一备,自动热备,自动切换,Ashare即使用来做量化实盘行情源也可以满足。

安装

从Github下载Ashare.py文件,复制到自己的项目目录下即可。

代码仓库

https://github.com/mpquant/Ashare

说明文档

https://github.com/mpquant/Ashare

5. Pytdx

简介

Pytdx一款纯Python语言开发的类似TradeX的行情数据接口的实现,虽然目前已不再维护,但其仍可以使用。

安装

pip install pytdx --upgrade

代码仓库

https://github.com/rainx/pytdx(已不再维护)

说明文档

https://rainx.gitbooks.io/pytdx/content/

二、行情数据获取测试(展示调用代码)

测试前准备

因测试代码需要使用以上包,请提前使用pip语句进行安装;Ashare需要下载Ashare.py,并将其和测试代码放在同一目录。

另外,为了方便数据展示,需要调用prettytable包,请测试前提前安装,以免报错。安装语句如下:

pip install -U prettytable

行情数据提取测试代码

(以提取300750代码,20210101~20220715,共371跟K线日线历史行情为例。耗时数据为单次结果,因涉及网速、数据列内容不一致,表格处理等,不具有统计意义,仅作参考,使用前请自行测试。)

import time

# ===============表格美化输出===============
def df_table(df,index):
    import prettytable as pt
    #利用prettytable对输出结果进行美化,index为索引列名:df_table(df,'market')
    tb = pt.PrettyTable()
    df = df.reset_index(drop = True)
    tb.add_column(index,df.index)
    for col in df.columns.values:#df.columns.values的意思是获取列的名称
        tb.add_column(col, df[col])
    print(tb)


# 测试计时开始,测试哪个就把if 后面的0改为1即可,其它改成0。
time1 = time.time()
print('开始提取数据')

if 0:
    # 1.Tushare
    import tushare as ts
    pro = ts.pro_api('6a0899533f8a5996f738183dbdf63c0afb3fcc931f08e1233575a339')#token,请注册后替换为自己的token。
    df = pro.daily(ts_code='300750.SZ', start_date='20210101', end_date='20220715')
    print('Tushare行情获取\n',df)
    # 单次提取股票数据耗时: 1.0941672325134277 秒

if 0:
    # 2.AKshare
    import akshare as ak
    df = ak.stock_zh_a_hist(symbol="300750", period="daily", start_date="20210101", end_date='20220715', adjust="qfq")
    print('AKshare行情获取\n',df)
    # 单次提取股票数据耗时: 2.899998426437378 秒

if 0:
    # baostock
    import baostock as bs
    import pandas as pd
    lg = bs.login()
    rs = bs.query_history_k_data_plus("sz.300750",
        "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
        start_date='2021-01-01', end_date='2022-07-15',
        frequency="d", adjustflag="3")
    
    data_list = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        data_list.append(rs.get_row_data())
    df = pd.DataFrame(data_list, columns=rs.fields)
    
    bs.logout()
    print('baostock行情获取\n',df)
    # 单次提取股票数据耗时: 0.9699969291687012 秒
    
if 0:
    # 4.Ashare
    from  Ashare import *
    df=get_price('sz300750',frequency='1d',count=371)  #默认获取今天往前5天的日线实时行情,count=371,表示获取371根K线。
    print('Ashare行情获取\n',df)
    # 单次提取股票数据耗时: 0.9399988651275635 秒


if 1:
    # 5.Pytdx
    from pytdx.hq import TdxHq_API
    api = TdxHq_API()
    # 数据获取接口一般返回list结构,如果需要转化为pandas Dataframe接口,可以使用 api.to_df 进行转化
    with api.connect('119.147.212.81', 7709):
        df = api.to_df(api.get_security_bars(9, 0, '300750', 0, 371)) 
        print('pytdx行情获取\n',df)
        # 单次提取股票数据耗时: 0.9504680633544922 秒



if __name__ == "__main__":

    df_table(df,'行情')
    time2 = time.time()
    print("单次提取股票数据耗时:",time2-time1,'秒')
    
    
    

三、综上所述

  • Tushare Pro,需要注册,需要积分,已获取积分的小伙伴可以自己再试试。毕竟是运行时间较长,稳定一些,速度也不错。
  • AKshare,无需注册,调用方便,数据获取内容丰富,效率再高点就好了。
  • baostock,无需注册,调用过程再简化一些就更好了,速度也不错。
  • Ashare,无需注册,单文件,足够简单,调用也方便,但数据单一,速度也很快。
  • Pytdx,无需注册,已不再维护,但可以使用,速度也很快。
  • 其它爬虫,自行研究,各有各的特点。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/popboy29/article/details/125815775

智能推荐

js获取当天日期并获取当天日期的前n天日期或后n天日期_js如何计算当前日期的前15天日期-程序员宅基地

文章浏览阅读1.1k次。【代码】获取当天时间并且获取当天时间的前三十天。_js如何计算当前日期的前15天日期

Windows 11系统 Another-Redis-Desktop-Manager安装教程Another-Redis-Desktop-Manager是Redis的可视化工具和使用讲解_redis可视化监控工具-程序员宅基地

文章浏览阅读563次,点赞5次,收藏7次。"Another Redis Desktop Manager"(又称 "RedisDesktopManager" 或 "RDM")是一个流行的开源工具,用于管理和监控 Redis 数据库。安装完成后,你可以使用 RDM 连接到你的 Redis 数据库,并进行诸如浏览键值、执行命令、监控性能等操作。这样可以大大简化对 Redis 数据库的管理和操作。Another Redis Desktop Manager是1.5.2版本安装,安装完成之后,如果提示需要升级是可以升级的不会有什么影响的。_redis可视化监控工具

f2fs学习四: f2fs文件系统挂载_f2fs挂载-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏15次。f2fs_mount_f2fs挂载

seata:Could not register branch into global session-程序员宅基地

文章浏览阅读930次。seata_could not register branch into global session

Oracle 19c单实例的DataGuard的搭建_oracle19 ha搭建-程序员宅基地

文章浏览阅读1.1k次,点赞21次,收藏20次。https://blog.csdn.net/weixin_63131036/article/details/133914372(本地yum)3.创建日志文件 如果主库有三个了(那就要创建四个)配置yum源:(配置网络源和本地源都可以)这个是配置目录,如果有的话就不用创建啦。这个是配置目录,如果有的话就不用创建啦。dataguard数据同步测试。检查dataguard日志。备库的数据库环境装好了。这样主库就搭建成功了。_oracle19 ha搭建

jQuery常用事件方法-程序员宅基地

文章浏览阅读70次。1.blur()当元素失去焦点时发生 blur 事件。blur() 函数触发 blur 事件,或者如果设置了function参数,该函数也可规定当发生 blur 事件时执行的代码。2.change()当元素的值发生改变时,会发生 change 事件。该事件仅适用于文本域(text field),以及 textarea 和 select 元素。change()..._列举几种jquery中常用的事件方法

随便推点

基于深度学习的驾驶行为检测(玩手机) 毕业设计_玩手机数据集-程序员宅基地

文章浏览阅读80次。今天学长向大家分享一个毕业设计项目毕业设计 基于深度学习的驾驶行为检测(玩手机)毕业设计 深度学习的驾驶行为检测(玩手机)YOLO系列是基于深度学习的回归方法。该系列陆续诞生出YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5。YOLOv5算法,它是一种单阶段目标检测的算法,该算法可以根据落地要求灵活地通过chaneel和layer的控制因子来配置和调节模型,所以在比赛和落地中应用比较多。同时它有YOLOv5x、YOLOv5l、YOLOv5m、YOLOv5s四种模型。_玩手机数据集

SQLSERVER导入excel表格时,表中数据超过65536行_oracleexcel导入可以超过6万-程序员宅基地

文章浏览阅读828次。SQLSERVER导入excel表格时,表中数据超过65536行时,可将表格转为CSV文件,导入时在高级选项中将字段属性DataType改为文本流[DA_TXT]_oracleexcel导入可以超过6万

服务器如何识别同一客户端的各种不同的命令_FTP服务器和Web服务器区别大家知多少?...-程序员宅基地

文章浏览阅读275次。在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,web服务器等。一、ftp服务器 FTP服务器(File Transfer Protocol Server)是在互联网上提供文件和访问服务的计算机,它们依照提供服务。FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。般来说..._谈一谈服务器如何识别同一客户端的各种不同的命令

Wox and Everything_woxwfn-程序员宅基地

文章浏览阅读2.2k次。WOX功能简介及有价值功能:everything,网页搜索,打开书签,计算器,翻译使用简介:http://doc.wox.one/zh/添加插件:http://www.wox.one/plugin插件添加打开书签wpm install Browser Bookmarks有道翻译wpm install 有道翻译网页搜索高效Google g https://www..._woxwfn

python3异步编程,异步orm之 tortoise-orm_python tortoise-程序员宅基地

文章浏览阅读1.5w次,点赞4次,收藏22次。前言:去年下半年为了做了个web服务,使用了基于python3.5+的一个异步框架 sanic。其中需要一个异步的mysql引擎,我们常见的也就是 aiomysql,为了便于开发,我找了一个基于 aiomysql 的简单封装的异步引擎SanicDB,事先说明这个不是orm, 然后到今年因为业务越来越多,使用 SanicDB 感觉也是很不方便,还导致代码不够清晰,然后我又发现了一个新的,真..._python tortoise

IOS XMPP总结-程序员宅基地

文章浏览阅读111次。//前言:仿weixin实现一个即时通讯的案例,支持版本7.0以上"准备工作 创建项目时使用git"/*显示隐藏文件,看到git的文件夹defaults write com.apple.finder AppleShowAllFiles Yes && killall Finderdefaults write com.apple.finder AppleSh..._h:|-0-[view]-0-| ios