Appearance
状态数据
获取标的的上市日期
get_ipo_date-获取标的的上市日期
获取标的的上市时间:如果当前处于上市状态,则返回该次上市日期;否则返回 None。security品种支持股票和基金。
python
get_ipo_date(security)参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| security | str / list[str] | 是 | 标的代码 |
返回值
| 返回类型 | 说明 |
|---|---|
| pandas.Series | pandas.DataFrame | 返回上市日期数据(按标的索引),未上市/退市等返回 None |
举例
python
ipo = get_ipo_date(['sh600000', 'sz000001'])
log.info(ipo)
# 输出示例:
# ipo_date
# sz000001 1991-04-03
# sh600000 1999-11-10获取标的在指定日期的状态开始时间
get_latest_status_time-获取标的在指定日期的状态开始时间
获取标的在指定日期处于 *ST / ST / 停牌 / 退市整理期 / 退市 等状态的开始时间。
如果在指定日期处于该状态,则返回该次状态开始时间;否则返回 None。status_type 传不同值时支持不同品种,默认判断 ST。
函数
python
get_latest_status_time(security, date=None, status_type=STATUS_TYPE.ST)参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| security | str / list[str] | 是 | 标的代码 |
| date | datetime.date / datetime.datetime / str / 时间戳 | 否 | 指定日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期;默认回测时间 |
| status_type | STATUS_TYPE | 否 | 状态类型:STATUS_TYPE.ST, STATUS_TYPE.STX, STATUS_TYPE.SUSPEND, STATUS_TYPE.PREDELIST, STATUS_TYPE.DELISTED;默认 STATUS_TYPE.ST |
返回值
| 返回类型 | 说明 |
|---|---|
| pandas.Series | pandas.DataFrame | 返回状态开始时间数据(按标的索引);不处于该状态返回 None |
举例
python
t = get_latest_status_time(['sh600000', 'sz000001'])
log.info(t)
# 输出示例:
# latest_status_time
# sz000001 1991-04-03
# sh600000 1999-11-10判断标的在指定日期是否上市
is_listing-判断标的在指定日期是否上市
判断标的在指定日期是否上市。change 传不同值时可判断是否为指定日期新变化的状态。日期默认当天。security`品种支持股票、基金,债券。
函数
python
is_listing(security, date=None, change=False)参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| security | str / list[str] | 是 | 标的代码 |
| date | datetime.date / datetime.datetime / str / 时间戳 | 否 | 指定日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期;默认回测时间 |
| change | bool | 否 | 是否判断在指定日期新变化的状态:True 表示判断是否在指定日期新变化的状态;False 表示判断当前是否是此状态(但不一定是新变化的状态);默认 False |
返回值
| 返回类型 | 说明 |
|---|---|
| pandas.DataFrame | 返回一个 DataFrame:索引为标的代码,字段 is_listing的取值通常为 1/0(是否上市) |
举例
python
ret = is_listing(security=['sh688888', 'sh688599'], date='1999-11-10')
log.info(ret)
# 输出示例:
# is_listing
# sh688888 1
# sh688599 0判断标的在指定日期是否处于指定状态
is_status-判断标的在指定日期是否处于指定状态
判断标的在指定日期是否处于 ST / ST / 停牌 / 退市整理期 / 退市 等状态。status_type 传不同值时支持不同品种;change传不同值时可判断是否为指定日期新变化*的状态。默认判断 ST。
函数
python
is_status(security, date=None, change=False, status_type=STATUS_TYPE.ST)参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| security | str / list[str] | 是 | 标的代码 |
| date | datetime.date / datetime.datetime / str / 时间戳 | 否 | 指定日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期;默认回测时间 |
| change | bool | 否 | 是否判断在指定日期新变化的状态:True 表示判断是否在指定日期新变化的状态;False 表示判断当前是否是此状态(但不一定是新变化的状态);默认 False |
| status_type | STATUS_TYPE / list[STATUS_TYPE] | 否 | 状态类型:STATUS_TYPE.ST, STATUS_TYPE.STX, STATUS_TYPE.SUSPEND, STATUS_TYPE.PREDELIST, STATUS_TYPE.DELISTED;默认 STATUS_TYPE.ST;可传 list 同时判断多种 |
返回值
| 返回类型 | 说明 |
|---|---|
| pandas.DataFrame | 返回一个 DataFrame:索引为标的代码; - 判断单个状态时,列名为 is_status;- 判断多个状态时,列为 status_type 对应的状态名(如 ST、停牌等),取值通常为 1/0(是否处于该状态) |
举例
python
ret = is_status('sz000001', status_type=STATUS_TYPE.ST)
log.info(ret)
# 输出示例:
# is_status
# sz000001 0
ret = is_status('sz000001', status_type=[STATUS_TYPE.ST, STATUS_TYPE.SUSPEND])
log.info(ret)
# 输出示例:
# ST 停牌
# sz000001 0 0💡 排除停牌和ST的股票
先获取候选股票列表,再用 is_status 批量判断状态,过滤掉 ST(含 *ST)和停牌的标的:
python
# 获取全部主板股票列表
all_stocks = get_all_securities(type=[13, 14]).index.tolist()
# 批量查询停牌和ST状态
status = is_status(all_stocks, status_type=[STATUS_TYPE.ST, STATUS_TYPE.STX, STATUS_TYPE.SUSPEND])
# 排除任一状态为 1 的股票
filtered_list = status[status.max(axis=1) == 0].index.tolist()计算标的截至到指定日期的上市天数
get_listing_days-计算标的截至到指定日期的上市天数
计算标的截至到指定日期的上市天数:如果指定日期处于上市状态,则返回这次上市天数;否则返回 0。天数类型默认自然日;security 品种支持股票、基金、期权、债券。
函数
python
get_listing_days(security, date=None, day_type=DAY_TYPE.NORMAL)参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| security | str / list[str] | 是 | 标的代码 |
| 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.NORMAL(自然日) |
返回值
| 返回类型 | 说明 |
|---|---|
| pandas.DataFrame | 返回一个 DataFrame:索引为标的代码;列为 get_listing_days;值为截至指定日期的上市天数(int)。若指定日期不处于上市状态则为 0。 |
举例
python
ret = get_listing_days(security=['sh600000', 'sz000001'], day_type=DAY_TYPE.TRADE)
log.info(ret)
# 输出示例:
# get_listing_days
# sz000001 10022
# sh600000 12033计算标的截至到指定日期最近一次指定状态持续天数
get_latest_status_days-计算标的截至到指定日期最近一次指定状态持续天数
计算标的截至到指定日期最近一次 ST / *ST / 停牌 / 退市整理期 等状态持续天数:
如果当前处于该状态(如 ST / *ST / 停牌 / 退市整理期),返回这次状态持续天数;
否则返回 0。
status_type 传不同值时支持不同品种;默认截至到当前;天数类型默认交易日;默认判断 ST。
函数
python
get_latest_status_days(security, date=None, day_type=DAY_TYPE.TRADE, status_type=STATUS_TYPE.ST)参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| security | str / list[str] | 是 | 标的代码 |
| 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(交易日) |
| status_type | STATUS_TYPE | 否 | 状态类型:STATUS_TYPE.ST, STATUS_TYPE.STX, STATUS_TYPE.SUSPEND, STATUS_TYPE.PREDELIST;默认 STATUS_TYPE.ST |
返回值
| 返回类型 | 说明 |
|---|---|
| pandas.DataFrame | 返回一个 DataFrame:索引为标的代码;列为 latest_status_days;值为截至指定日期最近一次该状态持续天数(int)。若当前不处于该状态则为 0。 |
举例
python
ret = get_latest_status_days(security=['sh600000', 'sz000001'], day_type=DAY_TYPE.TRADE)
log.info(ret)
# 输出示例:
# latest_status_days
# sz000001 10022
# sh600000 12033计算标的在设定时间区间内处于指定状态的天数
count_status_days-计算标的在设定时间区间内处于指定状态的天数
计算标的在设定时间区间内处于 ST / *ST / 停牌 / 退市整理期 等状态的天数。status_type 传不同值支持不同品种;天数类型默认交易日;默认判断 ST。
函数
python
count_status_days(security, start_date, end_date=None, day_type=DAY_TYPE.TRADE, status_type=STATUS_TYPE.ST)| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| security | str / list[str] | 是 | 标的代码 |
| 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(交易日) |
| status_type | STATUS_TYPE | 否 | 状态类型:STATUS_TYPE.ST, STATUS_TYPE.STX, STATUS_TYPE.SUSPEND, STATUS_TYPE.PREDELIST;默认 STATUS_TYPE.ST |
返回值
| 返回类型 | 说明 |
|---|---|
| pandas.DataFrame | 返回一个 DataFrame:索引为标的代码;列为 status_days;值为区间内处于指定状态的天数(int)。 |
python
ret = count_status_days(
security=['sh600000', 'sh600011', 'sz000001'],
start_date='1999-11-10',
end_date='1999-11-20',
day_type=DAY_TYPE.TRADE,
status_type=STATUS_TYPE.ST
)
log.info(ret)
# 输出示例:
# status_days
# sh600000 4
# sh600011 3
# sz000001 0计算股票在设定时间区间内指定状态变化次数
count_status_change-计算股票在设定时间区间内指定状态变化次数
计算股票在设定时间区间内转变成 ST / *ST 的次数。security 品种仅对股票有效,默认判断 ST。 如果传入的开始时间股票状态为 ST,则记为 1 次。
函数
python
count_status_change(security, start_date, end_date=None, status_type=STATUS_TYPE.ST)参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| security | str / list[str] | 是 | 标的代码 |
| 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、时间戳;截取到日期;默认回测时间 |
| status_type | STATUS_TYPE | 否 | 状态类型:STATUS_TYPE.ST, STATUS_TYPE.STX;默认 STATUS_TYPE.ST |
返回值
| 返回类型 | 说明 |
|---|---|
| pandas.DataFrame | 返回一个 DataFrame:索引为标的代码;列为 status_change;值为区间内指定状态变化次数(int)。 |
举例
python
ret = count_status_change(
security=['sh600000', 'sh600011', 'sz000001'],
start_date='1999-11-10',
end_date='1999-11-20'
)
log.info(ret)
# 输出示例:
# status_change
# sh600000 4
# sh600011 3
# sz000001 0