本文介绍的函数用于获取当日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
欢迎大家转发、留言。有微信群用于学习交流,感兴趣的读者请扫码加微信!
如果认为博客对您有帮助,可以扫码进行捐赠,感谢!
微信二维码 | 微信捐赠二维码 |
---|---|