指定周一为调仓日,获取一定时间段调仓日列表

文章介绍了一个Python函数,该函数用于在给定日期范围内按指定周期(每日、每周或每月)获取调仓日期。特别是,它确保了调仓始终在周一进行,即使遇到节假日。函数利用jqdata库获取交易日,并结合weekday()方法判断日期是否为周一或月份切换日。
摘要由CSDN通过智能技术生成

一个非常好用的获取指定交易日期的函数,可以指定以星期为单位调仓,指定星期几。也可以指定以月为单位调仓,指定第几天。

我们指定的调仓时间为周一,即使周一为节假日休市,也不使用周二作为调仓日。这里用到一个日期是星期几的获取函数:weekday()。如果 weekday() == 0,说明这个日期是周一。

import jqdata
import datetime

trans_fq = 'weekly' #设置调仓周期
start_date = '2023-01-01' #研究开始时间
end_date= '2023-01-31' #研究结束时间

# 获取交易日期
def get_tradedays(start_date, end_date, frq='weekly'):
    result = []
    tradedays_list = jqdata.get_trade_days(start_date = start_date, end_date=end_date)
    if frq == 'daily':
        result = tradedays_list
    elif frq == 'weekly':
        for i in range(len(tradedays_list)):
            if tradedays_list[i].weekday() == 0:
                result.append(tradedays_list[i])
    elif frq == 'monthly':
        for i in range(len(tradedays_list)):
            if i == 0:
                result.append(tradedays_list[i])
            elif tradedays_list[i - 1].month <   tradedays_list[i].month:
                result.append(tradedays_list[i])
    return result


trade_date_list = get_tradedays(start_date = start_date, end_date=end_date, frq = trans_fq)
print('\n调仓日:', trade_date_list)

输出:

[datetime.date(2023, 1, 9), datetime.date(2023, 1, 16), datetime.date(2023, 1, 30)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值