按照教程中的顺序,昨天看了China_A_share_market_tushare.ipynb,花费了大半天时间,真是一言难尽。
全是坑:
- 上一个例程用的是 FinRL,这一个例程用的又是是 FinRL-Meta。
- FinRL-Mete/meta/data_processors/tushare.py 这个文件里使用的还是 tushare 老早之前的接口,而不是现行的 pro 接口。
- 通过 tushare 下载下来的数据集,里面的时间是用
time
字段表示,而不是代码里期望的date
字段。 - ......
一整天都在报错、改代码,一直整到最后两个单元格,还是报错,实在绷不住了,最终放弃了。
不明白在教程中创建 China_A_share_market_tushare.ipynb 这个文件的意义何在,其实这个文件的流程和上一篇文章中的 Stock_NeurIPS2018.ipynb 是一样的,只不过是数据源不同而已。
Stock_NeurIPS2018.ipynb 的数据源是 Yahoo Finance,而 China_A_share_market_tushare.ipynb 的数据源是 Tushare。
China_A_share_market_tushare.ipynb 处理的是 A 股市场数据,而 Stock_NeurIPS2018.ipynb 处理的是美股市场数据。
我以为无法通过 Yahoo Finance 获取 A 股市场数据,没想到竟然可以,仅仅只需要修改一下股票代码!
下载A股数据
In[1]:
MY_TICKERS = ["600010.SS"]# 使用YahooDownloader下载数据
df = YahooDownloader(start_date=TRAIN_START_DATE,end_date=TRADE_END_DATE,ticker_list=MY_TICKERS # 替换为自定义列表
).fetch_data()
Out[1]:
Shape of DataFrame: (3194, 8)
查看前5行数据
In[2]:
df.head()
Out[2]:
| Price | date | close | high | low | open | volume | tic | day |
|-------|------------|---------|---------|---------|---------|----------|------------|-----|
| 0 | 2010-01-04 | 1.587533| 1.615262| 1.587533| 1.611796| 87618140 | 600010.SS | 0 |
| 1 | 2010-01-05 | 1.580600| 1.594465| 1.552871| 1.587533| 96975622 | 600010.SS | 1 |
| 2 | 2010-01-06 | 1.584066| 1.608329| 1.559802| 1.577134| 101696089| 600010.SS | 2 |
| 3 | 2010-01-07 | 1.545938| 1.584066| 1.542471| 1.584066| 88698358 | 600010.SS | 3 |
| 4 | 2010-01-08 | 1.552871| 1.559802| 1.525140| 1.545938| 83714400 | 600010.SS | 4 |
所以,对于 China_A_share_market_tushare.ipynb 这个文件,直接忽略它就行了,别再去折腾了。
改一下股票代码,就可以直接运行 Stock_NeurIPS2018.ipynb 这个文件来跑A股数据了。