我之前发过一片关于通过爬虫技术从网易金融上获取股票数据的文章,大家反响还是挺强烈的。但是吧,那个作品只能说是我早期学习爬虫和量化的一个缩影。我现在要和大家分享的是非常Dry的干货。基本上可以说是我个人的最终版的股票数据下载文本,甚至可以说是Tushare下载数据的一个基石。我将分为三个部分来讲述:
在国内做量化基本上都或多或少知道Tushare这个库的,大佬们基本上都是用Tushare来分享自己的作品。作为一个相对价格友好的金融数据库是非常良心的,价格相比于Wind,力度还是非常大的。
我们来看看Tushare在pypi上给自己的功能介绍是什么:
Tushare的目标人群:
行了咱们也扯得差不多了,开始整正事儿吧。
首先我得声明一下:
代码如下(示例):
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)
上一篇我把如何筛选股票并获取股票代码列表给大家将了一遍。那么这一讲呢我来教大家如何把那个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 / 月线。别忘记加引号哈,这个很重要,要不然会报错的。另外日内分钟线方法我不具体描述了,我对于高频没有研究,无法给大家提供相应的信息。
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)。
这块我也不想做过多的描述了,请大家结合自己的情况自行设置。
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