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

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

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

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

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

get_trading_day(day)

使用场景

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

接口说明

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

注意事项:

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

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

2023-01-03 00:00:00 - INFO - 2023-01-03

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

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

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

当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

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

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

当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。


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

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

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

发表评论

京公网安备 11010802036642号

京ICP备2021028699号