问题背景:
在获取近N日的交易品种数据时,例如想要获取近十天涨停过的股票,我们先要得到这N个交易日的日历数据。而akshare的封装函数ak.tool_trade_date_hist_sina()可以获得一年内所有的交易日信息,但这还不是近N日交易日历,我们还需要进行一些处理即可完成。
工具:akshare
代码
import akshare as ak
import datetime
from datetime import date
import pandas as pd
import time
# 获得start_date 和 end_date
def get_trade_date(N = 80):
today = date.today()
trade_date_df = ak.tool_trade_date_hist_sina()
trade_date_list = trade_date_df["trade_date"].astype(str).tolist()
while str(today) not in trade_date_list: # 如果当前日期不在交易日期列表内,则当前日期天数减一
today = today - datetime.timedelta(days=1)
end_date = str(today)[:4]+str(today)[5:7] + str(today)[8:10]
start_date_index = trade_date_list.index(str(today))- N
start_date = trade_date_list[start_date_index][:4] + trade_date_list[start_date_index][5:7] + trade_date_list[start_date_index][8:10]
print("结束时间",start_date)
print("开始时间",end_date)
return trade_date_list[start_date_index:start_date_index+N+1]
结果展示: