python量化之获取股票数据.pdf
整理了使用tuhsare获取股票数据的一些方便之处以及遇到的一些坑2017-11-1713.8713.9713.9713.6739828.910.002017-11-1613.9814.0913.9713.8618029.022017-11-1514.3714.3714.0113.8831731.320.372017-11-1414.0014.4314.3814.0049168.370.32ma5 ma 10 ma20ma5y ma20 tur noverdate2017-11-2213.96814.04614.04424767.8926789.3328602.290.262017-11-2113.98014.04814.05427180.0427617.6028540.550.312017-11-2014.06214.04314.06432374.3428650.4828455.200.312017-11-1714.07814.03814.08331644.0529352.3228141.070.532017-11-1614.11414.03914.09928582.5729823.2227169.732017-11-1514.12414.04214.11828810.7630467.9127007.42017-11-1414.11614.04614.13228055.1630117.3826536.150.请读者注意,文档中的注释并不准确,使用该接口并不能取胪柔自上市以来的所有日线数据,例如这里举的例子,金龙机电这尺股票(2009年12月25日上市)。请再看例子例i mport tushare as tsdata=ts get hist data( 300032\, Sta/t='2011-01-01', end=2011-05-01pr int(data)返回结Empty DataFrameColumns:[open,high,close,low,volume,price-change,p-change,ma5,ma10,ma20,v_ma5,vna10, v ma20, tur nover Index可以看到,这儿行代码返回的数据为一个空的 datar ame,这是网页文章中没有详细说明的问题在这里指出。如何解决这个问题,请关注微信公众号【数据之佳】,注意是才子佳人的佳,该公众号分享量化分祈模型,讲解一些比较好的模型,工具等等, tushan的使用公众号中有更详细的介绍。公众号也会讲解如何用其他方式获取更稳定可靠的数据2、获取历史数据之 get h data作者提供另外一个函数 get h data用于获取股票历史数据,该函数的调用网页文档没有给出例子,在这里依然用上面的例子来作测试:例i mport tushare as tsdata=ts get h data 300032)rint (data返回结果:open high close lowvoumeamountdate2017-112213.8913.9613.9513.771967056.027282987.02017-11-2113.9713.9813.9713.772319687.032194061.02017-11-2013.9014.0213.9813.682311410.032033838.02017-11-1713.8713.9713.9713.673982891.054911258.02016-11-2417.3117.4217.1717.153799600.066045345.02016-11-2317.3717.5117.2717.245008208.087687070.02016-11-2217.3717.4117.4017.204536796.079050365.0[246 rows x 6 co l umns]在不指定开始时间和结束时间时,该函数默认返回最近一年的日线数据,返回的数据与 get hist_data不同的是,该函数只返回开盘价(open)、最高价(high)、收盘价( close)、最低价(low)、成交量( volume)、成交金额(anmount)六列同样的,测试一下该接口能不能获取更早一些的数据:i mport tushare as tsdata=ts. get h data('300032', start='2011-01-01′,end="2011-05-01)pr int(data)返回结果:LEtting data: ]highcloseVolumeamountdate2011-04-2914.1814.4114.4113.96444287.010930304.02011-04-2814.6014.6614.1013.862550197.063069508.02011-04-2714.5014.6714.4414.26457503.011427143.02011-042614.8214.8214.4114.31628685.0157323982011-01-0413.1413.2313.2112.841099825.024814884.0[77 rows x 6 columns可以看到,相比于 get hist data,该西影够返回些的数据,但没有换手率,均线数据这些指标,当然,找雨可获取据之后,自己写个脚本计算均线这些信息,但是如果己计算换手,就必须知道股票的市值是多少,这两个画数都没有返回关∮!的信息,因此如果要自己计算换手率,就得从其他地方获取股票每个演易的的市值修息。3、获取历史散居之:get_ k data作事第三英线数据的函数, get k data,参数与 get hist dat相同。例1import tushare as tsdata=ts get k data( 300032print(data)返回结果dateen close highlow vol umecode02015-02-0212.91413.74214.08612.91456295.030003212015-02-0313.74214.37714.50013.74263588.030003222015-02-0414.41214.51014.76113.79135558.030003232015-02-0514.52014.47114.75114.22434088.030003242015-02-0614.64814.34314.64813.84535039.030003252015-02-0914.37214.06214.54913.90424195.0300032与前两个函数相比,这个涵数获取数据的速度很明显要快很多,而且可以返回每一只股票从上市开始到当前交易日的所有日线数据,这个有点是前两个函数都不具备的,读者可以自己验证一下, get h data可以返回比 get hist data更早一些的数据,但是对于有些股票依然不能获取很早的数据,更重要的是,如果批量300多只股票的数据,前两个都不如 get k data稳我年始搜集效据的时候,为了获取更全面的数据,用的是 get hist data,但影驴反反复复跑脚本,没有一次是能够将数据完整获取完的,年都疌中严就挂了,读者可以自己测试一下,间隔时间长一些应该没问题,不过我已经知道其他的解决办法,既能够获取全面的数据,同也必担心速度的问题,怎么获取一样会在微信公众号【数据之佳】介绍,这罗先绍tush4、获取实时行情数据 get /today all o返回值说明code:代码name:名称changepercent:涨跌幅trade:现价open:开盘价igh:最高价low:最低价ett| ement:昨日收盘价● volume:成交量turnoverratio:换手率amount:成交量per:市盈率pb:市净率mktcap:总市值nmc:流通市值该函数没有参数,直接调用即可测试:例五i mport tushare as tsdata=ts get today all oprint(data)返回值:[ Getting data:]######枓##*徘##排抖#排拌###排#拌#######code name changepercentde open high Isettlement0603999读者传媒0.6298.638.117.928.04603998方盛制药235》1213.0013.1312.5813.022603997继峰股份591.7711.8611.50volume turnover ratiomktcap2208414.00.95851176355,027.5522.7594.602240e+05390.00156534976989.079.3135.4715.468584e+05218480080992157269.019.6444.4287.301700e+0501.84089be+03.4158590521.981890e+05[3446 rows x 15 col umns]限于篇幅,这里只贴出前三行数据, get today_a|获取了所有股票的当前行情数据,怛是获取一次数据的耗时比较长,读者可以自己在实时行情和盘后自己测试一下,看看会不会挂,整体延时有多久等等5、历史分笔数据之: get tick data参数说明:code:股票代码,即6位数字代码date:日期,格式YYY-MM-DDretry_ count:int,默认3,如遇网络等问题重复执行的秀數pause:int,默认0,重复请求数据过程中暂停的秒防间隔时间太短出现的问题该函教返回指定日期的历史分笔数据。但历史分笔数据耗空间,所以一般服务器都不会存储很长时间的历史分笔颜,该接口炉样,并不能获取从上市以来的所有日期的分笔数据。例mport tushare as tsdata=.get_tick_ data(300032 2017-11-011print(data)返回结果t imepricey change volume amount type15:00:036.01371521255卖盘14:57:0314.00.0111406买盘14:56:5714.592129260卖盘4:56:5414.052028100卖盘152609:30:3614.10-0.02159224190中性盘152709:30:0614.1214.1279884买盘[1528 rows x 6 columns6、实时分笔数据之 get real time_ quotes参数说明:symbo Is:6位数字股票代码,或者指数代码(sh=上证指数sz=深圳成指hs300=沪深300指数sz50=上证50z×b=中小板cyb=创业板)可输入的类型:str、list、set或者 pandas的 Series对象import tushare as tsdata=ts get realtime quotes(300032)print(data)nameopen pre close pr iceask vol ume0金龙机电1389013.97013.95013.96013.77013.94013.9501967056amounta2 p a3v4a4027282987.24013.96074113.97054713.98033213.990atetimecode02017-11-2216:28:03300032[1rows×33 co l umns]该接口返回的数据量较小,还是比较快的,读者可以自己在实时行情中和盘后自己测试一下6、当日历史分笔之 get today ticks参数说明:code:股票代码,即6位数字代码retry count:int,默认3,如遇网络等问题重复执行的次数pause:int,默认0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题例九import tushare as tsdata=ts get today ticks 300032print(data)返回值[Getting data: ]################time pr ice change change vo l ume amount type015:00:0314.36+2.790.009381346968卖盘14:57:0014.36+2.790.0122872卖盘214:56:5714.35+2.720.012739463卖盘曹音自音·98409:25:0313.89-0.570.0027375030[985 rows x 7 columns]该接口返回当前日期,当前时刻的所有粉笔成交数据,相比于上一个接口速度慢很多,也请读者自己测试7、大单交易数据之 get sina_dd获取大单交易数据,默认为大于等于400手,数据来源于新浪财经。参数说明code:股票代码,即6位数字代码date:日期,格式 YYYYMM-DDvol:手数,默认为400手,输入数值型参数retry count:int,默认3,如遇网络等问题重复执行的次数pause:int,默认0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题返回值说明:code:代码name:名称time:时间pr Ice:当前价格volume:成交手
用户评论