• 判断当日是否为当月第一个交易日——时间相关函数3


    本文介绍的函数用于判断当前交易日是否为当月的第一个交易日。

    在某些策略中,可能会在每月的第一个交易日进行调仓换股。这时,就可以使用本文介绍的函数判断当日是否为当月的第一个交易日。

    源码

    def is_first_trading_day_of_month():
        """
        判断当日是否为当月第一个交易日
        
        :return: 如果当日为当月第一个交易日返回True,否则返回False
        """
        
        return get_trading_day().month != get_trading_day(-1).month
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    源码分析

    函数的实现主要使用了ptrade提供的get_trading_day(),详细的介绍可以参考链接

    实现逻辑上主要是考虑周末、长假期等因素的影响,当月第一个交易日并不一定是1号。

    使用当前交易日的月份数和前一交易日的月份数进行比较,若不同,则当前交易日就是当月的第一个交易日。

    示例

    def before_trading_start(context, data):
        log.info(is_first_trading_day_of_month())
        
        
    def is_first_trading_day_of_month():
        """
        判断当日是否为当月第一个交易日
        
        :return: 如果当日为当月第一个交易日返回True,否则返回False
        """
        
        return get_trading_day().month != get_trading_day(-1).month
        
    
    def initialize(context):
        pass
        
        
    def handle_data(context, data):
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    这里在before_trading_start()函数内调用is_first_trading_day_of_week(),并打印出当日是否为当月第一个交易日。

    ptrade提供的before_trading_start()函数,在回测中,会在每个回测交易日8:30分执行,在交易中,该函数在开启交易时立即执行,从隔日开始每天9:10分(默认)执行。

    在回测模式下,我们将回测日期设置为2022-12-30(周五)至2023-01-06(周五),中间覆盖了元旦假期,输出结果如下:

    2022-12-30 08:30:00 - INFO - False
    2023-01-03 08:30:00 - INFO - True
    2023-01-04 08:30:00 - INFO - False
    2023-01-05 08:30:00 - INFO - False
    2023-01-06 08:30:00 - INFO - False
    
    • 1
    • 2
    • 3
    • 4
    • 5

    从输出结果可以看到,2023-01-03(周二)是当月的第一个交易日(2022-12-31至2023-01-02是假期)。


    博客内容只用于交流学习,不构成投资建议,盈亏自负!

    个人博客:http://coderx.com.cn/(优先更新)
    项目最新代码:https://gitee.com/sl/quant_from_scratch
    欢迎大家转发、留言。有微信群用于学习交流,感兴趣的读者请扫码加微信!
    如果认为博客对您有帮助,可以扫码进行捐赠,感谢!

    微信二维码微信捐赠二维码
    在这里插入图片描述在这里插入图片描述
  • 相关阅读:
    论文写作格式
    JavaWeb实现登录注册功能[代码+详解]
    Rockchip平台 远程OTA服务搭建
    【单片机毕业设计】【mcuclub-hj-002】基于单片机的多路温度控制设计
    vue自定义指令来控制按钮权限
    热分析技术在工业设备状态监测中的应用
    【计算机图形学基础】投影矩阵
    信钰证券:股票k线图中b和s是什么情况?一文带你了解!
    Libevent库的介绍以及使用示例
    APP备案避坑指南,值得收藏
  • 原文地址:https://blog.csdn.net/m0_46603114/article/details/133668660