【SandQuant 开源工具】 TradeTime 灵活操作交易日历的python库

您所在的位置:网站首页 2021年A股交易日历 【SandQuant 开源工具】 TradeTime 灵活操作交易日历的python库

【SandQuant 开源工具】 TradeTime 灵活操作交易日历的python库

2024-07-15 01:23| 来源: 网络整理| 查看: 265

TradeTime

TradeTime是针对交易开发的日期时间工具,在计算上和python标准库datetime完美结合,可以灵活对日期时间进行运算操作。

支持和datetime结合使用;目前只支持A股交易日期和交易时间,可自行导入交易日历或任意工作日历;当前A股交易时间为:09:30-11:30为早盘,11:30-13:00为盘中休市,13:00-15:00为午盘;具体使用,可查看说明文档; 链接 Link Home: https://doc.sandquant.comGitHub: https://github.com/Sand-Quant/TradeTimeDoc: https://tradetime.readthedocs.io/en/latestPYPI: https://pypi.org/project/TradeTime 导入 pip install tradetime import tradetime

通过以下场景来看看tradetime的作用:

当前交易日

判断某一天是否为交易日

判断某一天非交易日类型

获取一段时间的交易日历

日期运算符

获取某月月底最后一个交易日

格式转换

当前交易日 # 假设今天为 2022-03-20 >>> tradetime.date.current() date(year=2022, month=3, day=21, freq='D') >>> tradetime.date.current('W') date(year=2022, month=3, day=25, freq='W') >>> tradetime.date.current('Q') date(year=2022, month=3, day=31, freq='Q') # 假设今天为 2022-01-01非交易日 >>> tradetime.date.current() Traceback (most recent call last): ... ValueError: The date is external break, missing param if_break. >>> tradetime.date.current(if_break='past') date(year=2019, month=12, day=31, freq='D') 判断某一天是否为交易日 >>> tradetime.date.is_trading(datetime.date(2022, 3, 18)) True >>> tradetime.date.is_trading(datetime.date(2022, 3, 19)) False 判断某一天非交易日类型 >>> tradetime.date.break_type(20200101, 'D') 'external break' >>> tradetime.date.break_type(20200101, 'W') 'internal break' >>> tradetime.date.break_type(20200101, 'M') 'external break' >>> tradetime.date.break_type(20200101, 'Q') 'external break' >>> tradetime.date.break_type(20200101, 'Y') 'external break' 获取一段时间的交易日历 # 一段时间的open bars >>> tradetime.date.bars(datetime.date(2022, 2, 1), datetime.date(2022, 3, 12), freq='W', is_open=True) 0 2022-02-07 1 2022-02-14 2 2022-02-21 3 2022-02-28 4 2022-03-07 # 一段时间的close bars >>> tradetime.date.bars(datetime.date(2022, 2, 1), datetime.date(2022, 3, 12), freq='W') 0 2022-02-11 1 2022-02-18 2 2022-02-25 3 2022-03-04 4 2022-03-11 Name: date, dtype: object # 允许溢出 >>> tradetime.date.bars(datetime.date(2022, 2, 1), datetime.date(2022, 3, 12), freq='W', overflow=True) 0 2022-02-11 1 2022-02-18 2 2022-02-25 3 2022-03-04 4 2022-03-11 5 2022-03-18 日期运算符

和int,进行bar位移

# 加法 >>> tradetime.date(2022, 3, 18, freq='D') + 3 date(year=2022, month=3, day=23, freq='D') >>> tradetime.date(2022, 3, 18, freq='W') + 3 date(year=2022, month=4, day=8, freq='W') # 减法 >>> tradetime.date(2022, 3, 18, freq='D') - 3 date(year=2022, month=3, day=15, freq='D') >>> tradetime.date(2022, 3, 18, freq='W') - 3 date(year=2022, month=2, day=25, freq='W') # 不建议反向进行加减,这样做会很奇怪 >>> tradetime.date.operation_inverse = True # 必须设置后才可以反向运算 >>> 3 + tradetime.date(2022, 3, 18, freq='D') date(year=2022, month=3, day=23, freq='D') >>> 3 - tradetime.date(2022, 3, 18, freq='D') date(year=2022, month=3, day=15, freq='D')

和tradetime.bardelta,进行bar位移

>>> tradetime.date(2022, 3, 18, freq='D') + tradetime.bardelta(date_bars=2) date(year=2022, month=3, day=22, freq='D') # 必须频率一致 >>> tradetime.date(2022, 3, 18, freq='D') + tradetime.bardelta(date_bars=2, date_freq='Q') Traceback (most recent call last): ... ValueError: 2022-03-18 is not in freq 'Q' >>> tradetime.date(2022, 3, 18, freq='D') - tradetime.bardelta(date_bars=2) date(year=2022, month=3, day=16, freq='D') # 同样不建议反向进行加减,这样做会很奇怪

和datetime.delta,进行时间位移,而不是bar位移,不考虑是否为交易日;

>>> tradetime.date(2022, 3, 18, freq='D') + datetime.timedelta(days=2) date(year=2022, month=3, day=20, freq='D') >>> tradetime.date(2022, 3, 18, freq='W') + datetime.timedelta(days=3) date(year=2022, month=3, day=21, freq='W') # 同样不建议反向进行加减,这样做会很奇怪 获取某月月底最后一个交易日 >>> tradetime.date.get_close(2021, m=7) date(year=2021, month=7, day=30, freq='M') >>> tradetime.date.get_close(2021, q=3) date(year=2021, month=9, day=30, freq='Q') 格式转换 >>> tradetime.date(2022, 1, 4).py_date() datetime.date(2022, 1, 4) >>> tradetime.date(2022, 1, 4).pd_date() DatetimeIndex(['2022-01-04'], dtype='datetime64[ns]', freq=None)

img

欢迎关注~ SandQuant 专注于全球金融数据和量化投资策略



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3