使用tushare接口获取股票数据

    量化投资在近些年来成为了金融行业中的一个热点,在做量化之前需要先获取到市场的行情数据,今天来介绍一个python接口tushare,通过该接口可以获取到大量的金融数据,涵盖了股票,基本面数据,宏观经济数据等,并且在不断的更新中。
    
    **1.安装教程**
将tushare作为python的一个三方库,提前pip在环境之中,之后通过如下代码导入:
import tushare as ts

需要注意的的是,在首次使用时需要设置token

ts.set_token('your token')

token在tushare主页中的个人中心可以查看。

在获取股票日线行情时用到的接口是:

ts.pro.daily()

参数说明:
ts_code:股票代码,str类型,同时支持多个股票提取,用逗号隔开
trade_date:交易日期,str类型,YYYYMMDD
start_date: 获取数据的起始日期,str类型,YYYYMMDD
end_data:获取数据的终止日期,str类型,YYYYMMDD

接下来分享一下自己封装的一个通过该接口获取股票数据的函数:

class TushareDownloader:
    """Provides methods for retrieving daily stock data from
        Tushare Finance API

        Attributes
        ----------
            start_date : str
                start date of the data (modified from config.py)
            end_date : str
                end date of the data (modified from config.py)
            ticker_list : list
                a list of stock tickers (modified from config.py)

        Methods
        -------
        fetch_data()
            Fetches data from tushare API"""

    def __init__(self, start_date: str, end_date: str, ticker_list: dict):
        self.start_date = start_date
        self.end_date = end_date
        self.ticker_list = ticker_list

    def fetch_date(self) -> pd.DataFrame:
        """Fetches data from Tushare API
                Parameters
                ----------
                Returns
                -------
                `pd.DataFrame`
                    7 columns: A date, open, high, low, close, volume and tick symbol
                    for the specified stock ticker
                """
        # Download and save the data in a pandas DataFrame:
        data_df = pd.DataFrame()
        for code in self.ticker_list:
            temp_df = pro.daily(ts_code=code, start_date=self.start_date, end_date=self.end_date)
            temp_df['tic'] = self.ticker_list[code]
            data_df = data_df.append(temp_df)

        data_df = data_df.drop(['ts_code', 'pre_close', 'change', 'pct_chg', 'amount'], axis=1)
        data_df = data_df[['trade_date', 'open', 'high', 'low', 'close', 'vol', 'tic']]
        data_df.columns = ['date', 'open', 'high', 'low', 'close', 'volume', 'tic']
        data_df['date'] = pd.to_datetime(data_df['date'])
        data_df['day'] = data_df['date'].dt.dayofweek
        # convert date to standard string format, easy to filter
        data_df['date'] = data_df.date.apply(lambda x: x.strftime("%Y-%m-%d"))

        data_df = data_df.dropna()
        data_df = data_df.reset_index(drop=True)
        print("Shape of DataFrame: ", data_df.shape)
        # print("Display DataFrame: ", data_df.head())

        data_df = data_df.sort_values(by=['date', 'tic']).reset_index(drop=True)

        return data_df

后续的使用过程中会继续分享一些关于tushare使用的报告。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值