PTrade获取当日n个季度前的日期所处季度的最后一天——时间相关函数4

本文介绍的函数用于获取当日n个季度前的日期所处季度的最后一天(有点绕,看后面例子就好理解了)。

源码

def last_day_of_quarter_before_n_quarters(n):
    """
    获取当日n个季度前的日期所处季度的最后一天

    :return: 当日n个季度前的日期所处季度的最后一天,格式为字符串
    """

    # 当前日期
    current_date = get_trading_day()

    # 当前季度
    current_quarter = (current_date.month - 1) // 3 + 1

    # 目标日期总季度数,用于计算目标日期
    total_quarters = current_date.year * 4 + current_quarter - 1 - (n - 1)

    # 当前季度的n-1个季度前的日期季度
    quarter = total_quarters % 4 + 1

    # 当前季度的n-1个季度前的日期年份
    year = total_quarters // 4

    # 当前季度的n-1个季度前的季度的第一个月的月份
    month = (quarter - 1) * 3 + 1

    # 当前季度的n-1个季度前的第一个月份减去一天,得到n个季度前的日期所处季度的最后一天,并转换为字符串格式
    return (dt.datetime(year, month, 1) - dt.timedelta(days=1)).strftime('%Y%m%d')

有点绕口,举个例子。
假设当日为2022年6月30日(2022年第二季度的最后一天),当日1(这里参数n=1)个季度前的最后一天,也就是2022年第一季度的最后一天(2022年3月31日);当日2(这里参数n=2)个季度前的最后一天,也就是2021年第四季度的最后一天(2021年12月31日)。

更多的实例可以参见下面的表格:

当前日期 n=1的返回值 n=2的返回值 n=3的返回值
20220630 20220331 20211231 20210930
20220701 20220630 20220331 20211231

很多策略都需要查询上市公司的财务数据。ptrade提供了查询财务数据的接口函数get_fundamentals,在该函数使用时,需要用到查询日期作为参数。查询日期的不同,会返回不同的财务数据结果。本文所提供的函数,会在回测过程,获取标的的最新财务数据中使用,后续文章会有使用示例。


博客内容只用于交流学习,不构成投资建议,盈亏自负!
个人博客:http://coderx.com.cn/(优先更新)
项目最新代码:https://gitee.com/sl/quant_from_scratch

欢迎大家转发、留言。有微信群用于学习交流,感兴趣的读者请扫码加微信!

如果认为博客对您有帮助,可以扫码进行捐赠,感谢!

微信二维码 微信捐赠二维码
微信二维码 捐赠二维码

发表评论

京公网安备 11010802036642号

京ICP备2021028699号