Skip to content

时间函数

当前离开盘分钟数

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,含义如下:

返回值周期含义返回值周期含义返回值周期含义
01 分钟5日线10季线
15 分钟6周线11年线
215 分钟7月线125 秒钟
330 分钟810 分钟1315 秒
460 分钟945 日

举例

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)

参数

参数名类型必填说明
securitystr / list[str]证券代码;默认 "sh000001"
datestr / 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

参数

参数名类型必填说明
securitystr / list[str]参照标的;默认 "sh000001"
datedatetime.date / datetime.datetime / str / 时间戳指定日期,支持 yyyy-mm-dd / yyyy-mm-dd hh:mm:ss/ datetime/ 时间戳;截取到日期;默认回测时间
ndaysint偏移天数:正数向过去偏移,负数向未来偏移;0输出传入的指定日期(若指定日期为非交易日则取上一个最近交易日)
day_typeDAY_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)

参数

参数名类型必填说明
securitystr / list[str]标的代码;默认 sh000001
start_datedatetime.date / datetime.datetime / str / 时间戳区间开始时间;支持 yyyy-mm-dd / yyyy-mm-dd hh:mm:ss / datetime / 时间戳;截取到日期
end_datedatetime.date / datetime.datetime / str / 时间戳区间结束时间;支持 yyyy-mm-dd / yyyy-mm-dd hh:mm:ss / datetime / 时间戳;截取到日期
day_typeDAY_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