【手把手教你如何从Tushare库下载股票数据,并保存在硬盘当中。第二篇下载存储数据】

11 篇文章 2 订阅
10 篇文章 1 订阅


前言

我之前发过一片关于通过爬虫技术从网易金融上获取股票数据的文章,大家反响还是挺强烈的。但是吧,那个作品只能说是我早期学习爬虫和量化的一个缩影。我现在要和大家分享的是非常Dry的干货。基本上可以说是我个人的最终版的股票数据下载文本,甚至可以说是Tushare下载数据的一个基石。我将分为三个部分来讲述:


一、Tushare是什么?

在国内做量化基本上都或多或少知道Tushare这个库的,大佬们基本上都是用Tushare来分享自己的作品。作为一个相对价格友好的金融数据库是非常良心的,价格相比于Wind,力度还是非常大的。

我们来看看Tushare在pypi上给自己的功能介绍是什么:

  • easy to use as most of the data returned are pandas DataFrame objects
  • can be easily saved as csv, excel or json files
  • can be inserted into MySQL or Mongodb

Tushare的目标人群:

  • financial market analyst of China
  • learners of financial data analysis with pandas/NumPy
  • people who are interested in China financial data

行了咱们也扯得差不多了,开始整正事儿吧。

二、代码

首先我得声明一下:

  1. 我今天分享的代码不能用Jupyter来运行,但是可以用Jupyter来调试Debug,希望大家理解。
  2. 用了代码记得帮兄弟我宣传推广一下哈,嘿嘿。
  3. Tushare是需要花钱的,我用的是500元年费的,据说200元年费就可以有很丰富的功能了。说句实话如果你真的很想往量化方面发展研究的话,我觉得入手200元的还是个挺不错的选择。具体200元能干什么请自己去浏览哈。200元档位是2000积分,我大致观察了一下,基本上覆盖所有功能了。

1.引入库

代码如下(示例):

import os
import time
from datetime import datetime as dt
from datetime import timedelta
import threading
import pandas as pd
import numpy as np
import requests
import tushare as ts
token = '这个地方放你的Tushare秘钥'
ts.set_token(token)
pro = ts.pro_api(token)

2. 如何封装下载逻辑

上一篇我把如何筛选股票并获取股票代码列表给大家将了一遍。那么这一讲呢我来教大家如何把那个List通过循环遍历的手段来进行下载。首先我们来看看这个封装函数我们都需要那些参数:

def worker(begin, today, begin_range, end_range, process, ):
# begin 是获取数据开始日期
# today 是获取数据的截止日期,我拟定为当天
### 以下三个参数是为了多线程设计的,可有可无,看自己 ###
# begin_range 是切割list[x : y]的x值
# end_range 是切割的y值
# process 是查看我们用的是哪条线程,print时可以调用。

我们获取Tushare的数据命令是什么呢?如下:

df = ts.pro_bar(ts_code='{}'.format(stock_codes), adj='qfq', freq = 'D'
                                    start_date=begin, end_date=today)

这里需要讲一下,adj是获取什么价格类型的数据,qfq是前复权,hfq是后复权。freq是获取数据的时间段类型,默认是D:day / 日线,W: week / 周线,M:month / 月线。别忘记加引号哈,这个很重要,要不然会报错的。另外日内分钟线方法我不具体描述了,我对于高频没有研究,无法给大家提供相应的信息。

3.下载路径函数

def save_csv(ticker, csv_file):
    root_path = "D:\\BaiduNetdiskWorkspace\\database\\__stock__"  # 这个看你想存在硬盘的什么位置,自己设置。
    paths = {
        "stdev": root_path + '\\stdev\\',
        "tester": root_path + '\\tester\\',
        # "csv_tester": '.\\csv_tester\\'
    }
    for name, path in paths.items():
        csv_file.to_csv(path + "%s.csv" % ticker,
                        encoding="GBK", index=False)

    csv_file.to_csv(root_path + '\\tester2\\' + "%s.csv" % os.path.splitext(ticker)[0],
                    encoding="GBK", index=False)

ticker传参是文件的代码名称;csv_file传参是上面讲的dataframe(df)。
这块我也不想做过多的描述了,请大家结合自己的情况自行设置。

3.我们简单的组合起来

def worker(begin, today, begin_range, end_range, process, ):
    tickers = get_code_list()
	for stock_codes in Tickers[begin_range : end_range]
         try:
	         df = ts.pro_bar(ts_code='{}'.format(stock_codes), adj='qfq', freq='D',
	                         start_date=begin, end_date=today)
	         save_csv(stock_codes, df)
	     except requests.exceptions.ProxyError:
	     	 continue

Tickers这个函数就是我们上一讲得来的List。

总结

综上所述,我们就可以简单的完成了获取股票列表及股票信息并存储在硬盘里了。但是单线程是远远无法利用起我们优秀的电脑和网络性能的,那么下一篇我来给大家讲解如何多线程下载我们这篇讲解的内容。请大家帮我点个赞收藏吧!有问题的朋友可以留言或者私信加魏鑫都行。Last, but not least, 推一下我Python及量化导师的博客:CuteHand

下一个章节:多线程下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mike_Leigh

您的鼓励就是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值