python返回上一个交易日
一、周一到周五微交易日,其他不处理
#返回上一个交易日lastworkday,根据周一到周五为工作日(不考虑他,采用下一个方法)
import time,datetime #时间
date=datetime.datetime.today() #今天
#print(date.today())
w=date.weekday()+1
#print(w) #周日到周六对应1-7
if w==1: #如果是周一,则返回上周五
lastworkday=(date+datetime.timedelta(days=-3)).strftime("%Y-%m-%d")
elif 1<w<7: #如果是周二到周五,则返回昨天
lastworkday=(date+datetime.timedelta(days=-1)).strftime("%Y-%m-%d")
elif w==7: #如果是周日
lastworkday=(date+datetime.timedelta(days=-2)).strftime("%Y-%m-%d")
print(f'{date.strftime("%Y-%m-%d")}是周{w},上一个工作日是{lastworkday}')
结果
二、tushare调用trade_cal
优点:
比较准确
缺点:
要求注册登录,并且积分在200分以上。(注册可得100积分,推荐一个人注册可得50积分)
#返回上一个交易日last_day,根据tushare
import tushare as ts #股票交易数据
import datetime #时间和日期
#print(ts.__version__) #ts的版本
token='去网站上自己申请的账号对应的token' #我的token
pd.set_option('display.max_rows', None)
ts.set_token(token)
pro = ts.pro_api()
data = pro.query('trade_cal', start_date='20200101', end_date='20201231',is_open='1')
# exchange默认为上交所,start_date和end_date不是必填,is_open不填是全部,is_open可以使用0和1,0为不交易的日期,1为交易日
trade_days = data['cal_date'] #上交所2020年的交易日. series对象
# 参考地址:https://tushare.pro/document/2?doc_id=26
#print(trade_days)
#print(type(trade_days))
#print(trade_days.values)
today = datetime.datetime.today().strftime('%Y%m%d') #今天
print(today)
if today in trade_days.values:
trade_days_list = trade_days.tolist() #把交易日放到一个列表里
today_index = trade_days_list.index(today) #今天的索引
last_day = trade_days_list[int(today_index)-1] #上一个交易日的索引
print(last_day)
结果