Appearance
时间函数
当前离开盘分钟数
fromopen-当前离开盘分钟数
fromopen 用于获取当前时间距离开盘的分钟数(股票大盘交易时间)。常用于做“开盘后第 N 分钟”的时间控制逻辑。
函数
fromopen()返回
| 返回值类型 | 说明 |
|---|---|
| int | 距离开盘的分钟数。例:09:30 返回 0,09:31 返回 1,09:32 返回 2 …… |
示例
python
log.info(fromopen())
# 输出:0
# (示例:当时间为 09:30 时)
m = fromopen()
log.info("距离开盘分钟数:", m)
# 输出:距离开盘分钟数: 1
# (示例:当时间为 09:31 时)注:生效环境:仅在 分钟(min) 或 Tick 频率下递增;在 日(day) 频率下始终返回 0。
休市处理:自动剔除中午休市(11:30 - 13:00),数值连续计算。
周期类型
period-周期类型
period 用于获取当前周期类型。
函数
python
period()返回值
返回结果为 int,范围 0 ~ 13,含义如下:
| 返回值 | 周期含义 | 返回值 | 周期含义 | 返回值 | 周期含义 |
|---|---|---|---|---|---|
| 0 | 1 分钟 | 5 | 日线 | 10 | 季线 |
| 1 | 5 分钟 | 6 | 周线 | 11 | 年线 |
| 2 | 15 分钟 | 7 | 月线 | 12 | 5 秒钟 |
| 3 | 30 分钟 | 8 | 10 分钟 | 13 | 15 秒 |
| 4 | 60 分钟 | 9 | 45 日 |
举例
python
p = period()
log.info(p)
# 输出:5
# (示例:当当前周期为 日线 时)python
p = period()
if p == 0:
log.info("当前周期:1分钟")
elif p == 5:
log.info("当前周期:日线")
elif p == 6:
log.info("当前周期:周线")
else:
log.info("当前周期类型代码:", p)
# 输出:当前周期:日线
# (示例:当 period() 返回 5 时)计算当前周是年内的第几个周
weekofyear-计算当前周是年内第几个周
函数
python
weekofyear()返回值
| 返回值类型 | 说明 |
|---|---|
| int | 当前周是年内第几个周(周序号)。 |
举例
python
w = weekofyear()
log.info(w)
# 输出:23
# (示例:当当前日期处于一年中的第 23 周时)python
# 常见用法:每年第 N 周执行一次某逻辑(示例:第 1 周打印提示)
if weekofyear() == 1:
log.info("进入新年第 1 周")
# 输出:进入新年第 1 周
# (示例:当 weekofyear() 返回 1 时)查询指定日期所属交易日
get_trade_day-查询指定日期所属交易日
查询指定日期所属交易日;指定日期未上市或退市则返回空。
函数
python
get_trade_day(security="sh000001", date=None)参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| security | str / list[str] | 否 | 证券代码;默认 "sh000001" |
| date | str / datetime / 时间戳 | 是 | 指定日期;支持 str / 时间戳 / datetime,支持到分钟 |
注意
- 如果传入的 date 在两个交易日之间,返回上一个交易日;
- 如果传入的 date 处于停牌(不包括当日临停),返回上一个交易日;
- 对于有夜盘的交易标的:若传入时刻处于夜盘,则返回下一个交易日的日期;
- 对于未上市或退市标的返回 None;
- 交易日的定义:
- 对于无夜盘品种,以每日 0 点作为一个交易日的开始,至下一个交易日 0 点结束;
- 对于有夜盘品种,以夜盘集合竞价开始时作为一个交易日开始,至下一个交易日夜盘集合竞价开始时结束;
返回
| 返回类型 | 说明 |
|---|---|
| datetime.date | 单股返回所属交易日日期 |
| dict[str, datetime.date] | 多股返回字典:key 为股票代码(str),value 为所属交易日日期(datetime.date) |
举例
python
import datetime
get_trade_day(security=['sh600000','sz000001'], date='2020-06-21')
# 输出:
# {'sh600000': datetime.date(2020, 6, 21), 'sz000001': datetime.date(2020, 6, 21)}指定日期偏移交易日的日期
get_offset_day-计算指定日期偏移交易日的日期
计算指定日期偏移 n个交易日的日期。0表示指定日期当天(若指定日期为非交易日,则传入上一个最近的交易日)。
函数
python
get_offset_day(security="sh000001", date=None, ndays=0, day_type=DAY_TYPE.TRADEcan参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| security | str / list[str] | 否 | 参照标的;默认 "sh000001" |
| date | datetime.date / datetime.datetime / str / 时间戳 | 否 | 指定日期,支持 yyyy-mm-dd / yyyy-mm-dd hh:mm:ss/ datetime/ 时间戳;截取到日期;默认回测时间 |
| ndays | int | 是 | 偏移天数:正数向过去偏移,负数向未来偏移;0输出传入的指定日期(若指定日期为非交易日则取上一个最近交易日) |
| day_type | DAY_TYPE | 否 | 日期类型:可选 (DAY_TYPE.TRADE/ DAY_TYPE.NORMAL/ );默认 DAY_TYPE.TRADE交易日 |
返回值
| 返回类型 | 说明 |
|---|---|
| datetime.date | 单股返回:偏移后的日期 |
| dict[str, datetime.date] | 多股返回:key 为股票代码(str),value 为偏移后的日期(datetime.date) |
举例
python
import datetime
ret = get_offset_day(security=['sh600000', 'sz000001'], date='2020-07-01', ndays=10)
log.info(ret)
# 输出示例:
# {'sh600000': datetime.date(2020, 6, 21), 'sz000001': datetime.date(2020, 6, 21)}获取所有交易日列表
get_all_trade_days-获取所有交易日列表
获取所有交易日。
函数
python
get_all_trade_days()返回值
| 返回值类型 | 说明 |
|---|---|
| list[datetime.date] | 返回所有交易日列表 |
举例
python
import datetime
data = get_all_trade_days()
log.info(data)
# 输出示例:
# [datetime.date(1990, 1, 1), datetime.date(1990, 1, 2), datetime.date(1990, 1, 3), datetime.date(1990, 1, 4)]获取指定范围交易日
get_trade_days-获取指定范围交易日
根据标的获取指定时间范围内的交易日;默认返回至回测当前时间(研究和仿真是现实时间)的所有交易日。
函数
python
get_trade_days(security="sh000001", start_date=None, end_date=None, count=None)参数
| 返回类型 | 说明 |
|---|---|
| list[datetime.date] | 单标的返回:交易日列表 |
| dict[str, list[datetime.date]] | 多标的返回:key 为股票代码(str),value 为交易日列表(list[datetime.date]) |
返回值
| 返回类型 | 说明 |
|---|---|
| list[datetime.date] | 单标的返回:交易日列表 |
| dict[str, list[datetime.date]] | 多标的返回:key 为股票代码(str),value 为交易日列表(list[datetime.date]) |
python
import datetime
data = get_trade_days(start_date='2023-10-10', end_date='2023-11-10')
log.info(data)
# 输出示例:
# [datetime.date(2023, 10, 10), datetime.date(2023, 10, 11), datetime.date(2023, 10, 12), datetime.date(2023, 10, 13),
# datetime.date(2023, 10, 16), datetime.date(2023, 10, 17), datetime.date(2023, 10, 18), datetime.date(2023, 10, 19),
# datetime.date(2023, 10, 20), datetime.date(2023, 10, 23), datetime.date(2023, 10, 24), datetime.date(2023, 10, 25),
# datetime.date(2023, 10, 26), datetime.date(2023, 10, 27), datetime.date(2023, 10, 30), datetime.date(2023, 10, 31),
# datetime.date(2023, 11, 1), datetime.date(2023, 11, 2), datetime.date(2023, 11, 3), datetime.date(2023, 11, 6),
# datetime.date(2023, 11, 7), datetime.date(2023, 11, 8), datetime.date(2023, 11, 9), datetime.date(2023, 11, 10)]计算指定时间区间内的交易日天数
count_diff_trade_days-计算指定时间区间内的交易日天数
计算指定时间区间内的交易日天数;默认计算至回测当前时间(研究和仿真是现实时间)所有交易日的天数。
函数
python
count_diff_trade_days(security="sh000001", start_date=None, end_date=None, day_type=DAY_TYPE.TRADE)参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| security | str / list[str] | 否 | 标的代码;默认 sh000001 |
| start_date | datetime.date / datetime.datetime / str / 时间戳 | 否 | 区间开始时间;支持 yyyy-mm-dd / yyyy-mm-dd hh:mm:ss / datetime / 时间戳;截取到日期 |
| end_date | datetime.date / datetime.datetime / str / 时间戳 | 否 | 区间结束时间;支持 yyyy-mm-dd / yyyy-mm-dd hh:mm:ss / datetime / 时间戳;截取到日期 |
| day_type | DAY_TYPE | 否 | 日期类型:可选 DAY_TYPE.TRADE / DAY_TYPE.NORMAL ;默认 DAY_TYPE.TRADE 交易日 |
返回值
| 返回类型 | 说明 |
|---|---|
| int | 单标的返回:区间内交易日天数 |
| dict[str, int] | 多标的返回:key 为股票代码(str),value 为交易日天数(int) |
举例
python
n = count_diff_trade_days(security='sh600000', start_date='1999-11-10', end_date='1999-11-20')
log.info(n)
# 输出示例:
# 8