• PTrade获取交易日期——时间相关函数1


    本系列文章将笔者平时在使用ptrade进行策略开发中使用到的与日期相关的函数进行记录,以便大家参考并一同改进优化。

    如果读者还有其他日期相关的函数实现需求,也可以留言,大家一起讨论补充。

    首先看一下ptrade提供的get_trading_day函数的用法,后面的函数大多要用到它。

    结合ptrade官方文档对get_trading_day的介绍如下:

    get_trading_day(day)
    
    • 1

    使用场景

    该函数在研究、回测、交易模块可用

    接口说明

    该函数用于获取当前时间数天前或数天后的交易日期。

    注意事项:

    1、默认情况下,回测中当前时间为策略中调用该接口的回测日日期(context.blotter.current_dt)。

    2、默认情况下,研究中当前时间为调用当天日期。

    3、默认情况下,交易中当前时间为调用当天日期。

    参数

    day:表示天数,正的为数天后,负的为数天前,day取0表示获取当前交易日,如果当前日期为非交易日则返回下一交易日的日期。day默认取值为0,不建议获取交易所还未公布的交易日期(int);

    返回

    date:datetime.date日期对象

    示例

    所有的示例均在回测模式下运行,实盘模式使用时可参考回测模式下的结果。

    示例1
    def initialize(context):
        log.info(get_trading_day())
    
    
    def handle_data(context, data):
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    将回测时间设置为2023-01-01至2023-01-03,输出结果如下:

    2023-01-03 00:00:00 - INFO - 2023-01-03
    
    • 1

    2023-01-01和2023-01-02为非交易日,initialize函数不会被调用(该函数只会在回测和交易启动的时候运行一次)。

    2023-01-03为交易日,initialize函数被调用,打印get_trading_day函数的返回结果为2023-01-03。

    示例2
    def initialize(context):
        log.info(get_trading_day(-1))
    
    
    def handle_data(context, data):
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    同样将回测时间设置为2023-01-01至2023-01-03,输出结果如下:

    2023-01-03 00:00:00 - INFO - 2022-12-30
    
    • 1

    当get_trading_day的参数为负数时,表示要获取当前交易日的数天前的交易日期。

    如示例2中所示,参数为-1,当在2023-01-03调用get_trading_day时,会返回2023-01-03前的第1个交易日期是多少。2023-01-02(周一、假期)、2023-01-01(周日)、2022-12-31(周六)均为非交易日,2022-12-30为交易日,因此get_trading_day(-1)的返回结果为2022-12-30。

    示例3
    def initialize(context):
        log.info(get_trading_day(4))
    
    
    def handle_data(context, data):
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    同样将回测时间设置为2023-01-01至2023-01-03,输出结果如下:

    2023-01-03 00:00:00 - INFO - 2023-01-09
    
    • 1

    当get_trading_day的参数为正数时,表示要获取当前交易日的数天后的交易日期。

    如示例3中所示,参数为4,当在2023-01-03调用get_trading_day时,会返回2023-01-03后的第4个交易日期是多少。2023-01-04(第1个交易日),2023-01-05(第2个交易日),2023-01-06(第3个交易日),2023-01-07(周六),2023-01-08(周日),2023-01-09(第4个交易日),因此get_trading_day(4)返回结果2023-01-09。


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

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

    微信二维码微信捐赠二维码
    在这里插入图片描述在这里插入图片描述
  • 相关阅读:
    hadoop详解
    Java集合框架(二)List
    前端入门到入土?
    JS原生复制功能
    网易云信智码超清转码技术实践
    去面试了几家BATJ等N家互联网大厂
    茶百道:门店数量狂飙,食品安全问题成最大绊脚石
    InsCode Stable Diffusion 美图活动一期——即刻体验!来自 CSDN 的 SD 模型
    阿里云服务器u1和e实例有什么区别?哪个比较好?
    视频隐写一
  • 原文地址:https://blog.csdn.net/m0_46603114/article/details/133561278