读取本地保存股票交易信息的csv文件,如果不存在就用tushare的daily接口获取股票每日交易信息并保存到本地,如果存在,那么根据本地文件中最后一个交易日日期,下载从下一个交易日到今天的股票交易数据,并更新到本地,但是如果今天等于下一个交易日就不更新,凌晨12点到第二天早上8点也不更新
时间: 2023-11-08 21:05:33 浏览: 102
基于tushare获取股票数据_写入数据库.ipynb
5星 · 资源好评率100%
下面是Python代码的实现:
```python
import os
import datetime
import tushare as ts
# 设置tushare的token
ts.set_token('your_token')
# 获取当前日期
now = datetime.datetime.now()
# 获取上一个交易日的日期
last_trading_day = ts.trade_cal()['calendarDate'][::-1].index(now.strftime('%Y-%m-%d'))
last_trading_day = ts.trade_cal()['calendarDate'][::-1][last_trading_day]
last_trading_day = datetime.datetime.strptime(last_trading_day, '%Y-%m-%d')
# 获取本地文件路径
file_path = 'stock_data.csv'
# 判断本地文件是否存在
if not os.path.exists(file_path):
# 使用tushare接口获取股票每日交易信息
df = ts.pro_bar(ts_code='000001.SH', start_date='20100101', end_date=now.strftime('%Y%m%d'))
# 保存到本地
df.to_csv(file_path, index=False)
else:
# 读取本地文件中最后一个交易日的日期
df = pd.read_csv(file_path)
last_date = df.iloc[-1]['trade_date']
last_date = datetime.datetime.strptime(last_date, '%Y%m%d')
# 判断是否需要更新
if last_date == last_trading_day:
# 不需要更新
print('No need to update.')
else:
# 判断是否处于12点到第二天早上8点之间
hour = now.hour
if hour >= 0 and hour < 8 or hour == 12:
# 不更新
print('Not updating during 12am to 8am.')
else:
# 下载从下一个交易日到今天的股票交易数据
next_trading_day = ts.trade_cal()['calendarDate'][::-1].index((last_date + datetime.timedelta(days=1)).strftime('%Y-%m-%d'))
next_trading_day = ts.trade_cal()['calendarDate'][::-1][next_trading_day]
next_trading_day = datetime.datetime.strptime(next_trading_day, '%Y-%m-%d')
if next_trading_day == now:
# 不更新
print('No need to update.')
else:
df = ts.pro_bar(ts_code='000001.SH', start_date=(last_date + datetime.timedelta(days=1)).strftime('%Y%m%d'), end_date=now.strftime('%Y%m%d'))
# 更新本地文件
df.to_csv(file_path, mode='a', header=False, index=False)
print('Updated successfully!')
```
阅读全文