使用python代码,如果本地保存股票的csv文件不存在,那么就从tushare获取某只股票交易数据保存到csv文件,如果文件存在,那就从csv文件从提取最后一天的交易日期,判断最后一天的下一个交易日到今天为止大于2个交易日,就下载下个交易日到今天为止的数据,更新到本地,如果等于下个交易日小于今天日期,那么不更新,如果下一个交易日到今天只间隔一个交易日,那么判断时间,从0点到下午四点不更新数据,下午四点后更新数据保存到本地
时间: 2023-10-05 17:05:23 浏览: 103
用 python 抽取 tushare 数据项目(股票数据获取)
以下是实现上述功能的Python代码:
```python
import tushare as ts
import pandas as pd
import datetime as dt
import time
# 股票代码
code = '600519'
# 保存csv文件的路径
csv_path = 'data/{}.csv'.format(code)
if not os.path.exists(csv_path):
# 如果csv文件不存在,从tushare获取数据并保存到本地
df = ts.get_hist_data(code)
df.to_csv(csv_path)
else:
# 如果csv文件存在,读取文件内容
df = pd.read_csv(csv_path, index_col='date')
# 获取最后一天的交易日期
last_date = df.index[-1]
# 获取当前时间
now = dt.datetime.now()
# 判断下一个交易日是否大于两个交易日
next_trade_day = ts.trade_cal().iloc[-1]['calendarDate']
days_delta = (dt.datetime.strptime(next_trade_day, '%Y-%m-%d') - dt.datetime.strptime(last_date, '%Y-%m-%d')).days
if days_delta > 2:
# 如果下一个交易日到今天为止大于2个交易日,下载下个交易日到今天为止的数据并更新到本地
df_new = ts.get_hist_data(code, start=next_trade_day)
df_new.to_csv(csv_path, mode='a', header=False)
elif days_delta == 2:
# 如果下一个交易日到今天为止等于2个交易日,判断时间,只在下午4点后更新数据
if now.hour >= 16:
df_new = ts.get_hist_data(code, start=next_trade_day)
df_new.to_csv(csv_path, mode='a', header=False)
else:
print('It is not time to update data yet.')
else:
# 如果下一个交易日到今天为止小于2个交易日,不更新数据
print('No need to update data.')
```
这段代码首先判断本地是否有保存股票的csv文件,如果没有就从tushare获取数据并保存到本地。如果有,就读取文件内容,获取最后一天的交易日期和当前时间,并判断下一个交易日到今天为止是否大于2个交易日。如果是,就下载下个交易日到今天为止的数据并更新到本地;如果等于2个交易日,就判断时间,只在下午4点后更新数据;如果小于2个交易日,就不更新数据。
阅读全文