量化之路

利用tushare获取A股收盘价,画时间轴折线图

2019-03-16  本文已影响0人  伏星宇
带时间轴的折线图
做量化研究,没有数据可谓是巧妇难为无米之炊,而tushare为我们提供了非常给力的国内金融数据api。
自从推出pro版本之后,该平台的表现更加稳定。详细介绍请参照官网:https://tushare.pro/
下面在pycharm中演示如何利用tushare的通用行情接口获取A股数据,并画出带时间轴的折线图。

事实上获取数据非常方便,只需要3行代码:

import tushare as ts
api = ts.pro_api('your token')
df = ts.pro_bar(pro_api=api, ts_code='000001.SZ', adj='qfq', start_date='20180101', end_date='20181011')

接口具体输入参数如下:

来源:tushare官网
注意:通过ts.pro_bar()获得的是个股行情的Dataframe。以美的集团(000333.SZ)为例,看看可以获得哪些数据:
print(df.head())

输出如下:


输出如下

再利用python强大的绘图库matplotlib,我们就可以画出简单的带时间轴的收盘价折线图了。
研究了一下午,找出一种较为简单暴力,个人认为也足够美观的画法,即本文开头的那张图。

以2015-01-01至2019-03-08之间,美的集团(000333.SZ)和格力电器(000651.SZ)的收盘价为例,可以得到本文最开始的效果图(价格已进行前复权修正)。
更多接口和用法,请查看tushare官网的api文档:https://tushare.pro/document/2
全部代码如下:

# -*- coding: UTF-8 -*-
import tushare as ts
import matplotlib.pyplot as plt
from datetime import datetime
import matplotlib.dates as mdates


def drawline(tcode, sdate, edate):
    datadf = ts.pro_bar(pro_api=api,
                        ts_code = tcode,
                        start_date = sdate,
                        end_date = edate,
                        #前复权处理
                        adj = 'qfq')

    stockline = [datetime.strptime(d, '%Y%m%d').date() for d in datadf.trade_date]
    plt.plot(stockline, datadf.close, '-', label = datadf.ts_code[0])


def drawmain():
    #设置时间按“年月”的格式显示
    plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y%m'))
    #X轴按年进行标记,还可以用MonthLocator()和DayLocator()
    plt.gca().xaxis.set_major_locator(mdates.MonthLocator()),
    #自动旋转日期标记以避免重叠
    plt.gcf().autofmt_xdate()
    #显示图例
    plt.legend()
    #显示图片
    plt.show()


def taskmain():
    for cd in tscode:
        drawline(cd, startdate, enddate)

#在tushare官网注册后,进入个人中心得到你的唯一指定token,替换***
ts.set_token('***')
#初始化api
api = ts.pro_api()

#指定起止日期
startdate = '2015-01-01'
enddate = '2019-03-08'
#指定股票代码
tscode = {'000333.SZ', '000651.SZ'}
#主程序
taskmain()
drawmain()
上一篇下一篇

猜你喜欢

热点阅读