内建技术指标
- hikyuu.indicator.ADJ_FACTOR([kdata])
计算复权因子指标
基于股票的权息数据(送股、配股、转增、现金分红等)计算后复权因子序列。 复权因子表示如果上市时持有1股,经过所有送股、配股、转增后,现在持有多少股。 采用累乘方式计算,确保价格、成交量和成交金额的复权处理一致性。
该指标需要设置 KData 上下文才能正常工作,通过 setContext() 方法设置。
警告
重要限制:
周期限制:仅适用于日线周期。周线、月线等非日线周期存在对齐问题,结果可能不准确
依赖因子管理:需要配合因子管理系统的因子值存储使用,每日调用 update_all_factors_values() 更新保存因子值以保证准确性
与 RECOVER_EQUAL_FORWARD 的关系:本指标与 RECOVER_EQUAL_FORWARD 本质相同,若非因子管理场景,建议直接使用 RECOVER_EQUAL_FORWARD
计算起点:两者均不从上市日期开始计算,而是从当前查询的K线数据起始点开始计算
使用示例:
# 获取某只股票的复权因子 stock = sm.getStock("sh000001") kdata = stock.getKData(Query(-100)) adj_factor = ADJ_FACTOR() adj_factor.setContext(kdata) # 或者直接传入K线数据 adj_factor = ADJ_FACTOR(kdata)
相关指标:
ADJ_OPEN()- 复权开盘价ADJ_HIGH()- 复权最高价ADJ_LOW()- 复权最低价ADJ_CLOSE()- 复权收盘价ADJ_VOL()- 复权成交量RECOVER_EQUAL_FORWARD()- 等比前复权
- hikyuu.indicator.ADJ_OPEN()
计算复权开盘价指标
将开盘价按复权因子进行后复权处理,得到复权后的开盘价序列。 计算公式:ADJ_OPEN = ADJ_FACTOR * OPEN
- 返回类型:
警告
重要限制:
周期限制:仅适用于日线周期。周线、月线等非日线周期存在对齐问题,结果可能不准确
依赖因子管理:需要配合因子管理系统的因子值存储使用,每日调用 update_all_factors_values() 更新保存因子值以保证准确性
与 RECOVER_EQUAL_FORWARD 的关系:本指标与 RECOVER_EQUAL_FORWARD 本质相同,若非因子管理场景,建议直接使用 RECOVER_EQUAL_FORWARD
计算起点:两者均不从上市日期开始计算,而是从当前查询的K线数据起始点开始计算
相关指标:
ADJ_FACTOR()- 复权因子RECOVER_EQUAL_FORWARD()- 等比前复权
- hikyuu.indicator.ADJ_HIGH()
计算复权最高价指标
将最高价按复权因子进行后复权处理,得到复权后的最高价序列。 计算公式:ADJ_HIGH = ADJ_FACTOR * HIGH
- 返回类型:
警告
重要限制:
周期限制:仅适用于日线周期。周线、月线等非日线周期存在对齐问题,结果可能不准确
依赖因子管理:需要配合因子管理系统的因子值存储使用,每日调用 update_all_factors_values() 更新保存因子值以保证准确性
与 RECOVER_EQUAL_FORWARD 的关系:本指标与 RECOVER_EQUAL_FORWARD 本质相同,若非因子管理场景,建议直接使用 RECOVER_EQUAL_FORWARD
计算起点:两者均不从上市日期开始计算,而是从当前查询的K线数据起始点开始计算
相关指标:
ADJ_FACTOR()- 复权因子RECOVER_EQUAL_FORWARD()- 等比前复权
- hikyuu.indicator.ADJ_LOW()
计算复权最低价指标
将最低价按复权因子进行后复权处理,得到复权后的最低价序列。 计算公式:ADJ_LOW = ADJ_FACTOR * LOW
- 返回类型:
警告
重要限制:
周期限制:仅适用于日线周期。周线、月线等非日线周期存在对齐问题,结果可能不准确
依赖因子管理:需要配合因子管理系统的因子值存储使用,每日调用 update_all_factors_values() 更新保存因子值以保证准确性
与 RECOVER_EQUAL_FORWARD 的关系:本指标与 RECOVER_EQUAL_FORWARD 本质相同,若非因子管理场景,建议直接使用 RECOVER_EQUAL_FORWARD
计算起点:两者均不从上市日期开始计算,而是从当前查询的K线数据起始点开始计算
相关指标:
ADJ_FACTOR()- 复权因子RECOVER_EQUAL_FORWARD()- 等比前复权
- hikyuu.indicator.ADJ_CLOSE()
计算复权收盘价指标
将收盘价按复权因子进行后复权处理,得到复权后的收盘价序列。 计算公式:ADJ_CLOSE = ADJ_FACTOR * CLOSE
- 返回类型:
警告
重要限制:
周期限制:仅适用于日线周期。周线、月线等非日线周期存在对齐问题,结果可能不准确
依赖因子管理:需要配合因子管理系统的因子值存储使用,每日调用 update_all_factors_values() 更新保存因子值以保证准确性
与 RECOVER_EQUAL_FORWARD 的关系:本指标与 RECOVER_EQUAL_FORWARD 本质相同,若非因子管理场景,建议直接使用 RECOVER_EQUAL_FORWARD
计算起点:两者均不从上市日期开始计算,而是从当前查询的K线数据起始点开始计算
相关指标:
ADJ_FACTOR()- 复权因子RECOVER_EQUAL_FORWARD()- 等比前复权
- hikyuu.indicator.ADJ_VOL()
计算复权成交量指标
将成交量按复权因子进行后复权处理,得到复权后的成交量序列。 计算公式:ADJ_VOL = VOL / ADJ_FACTOR
注意:成交量复权使用除法,与价格复权使用乘法相反。这是因为当股本增加时,每股对应的成交量应该相应减少。
- 返回类型:
警告
重要限制:
周期限制:仅适用于日线周期。周线、月线等非日线周期存在对齐问题,结果可能不准确
依赖因子管理:需要配合因子管理系统的因子值存储使用,每日调用 update_all_factors_values() 更新保存因子值以保证准确性
与 RECOVER_EQUAL_FORWARD 的关系:本指标与 RECOVER_EQUAL_FORWARD 本质相同,若非因子管理场景,建议直接使用 RECOVER_EQUAL_FORWARD
计算起点:两者均不从上市日期开始计算,而是从当前查询的K线数据起始点开始计算
相关指标:
ADJ_FACTOR()- 复权因子RECOVER_EQUAL_FORWARD()- 等比前复权
- hikyuu.indicator.ADVANCE([query=Query(-100), market='SH', stk_type='constant.STOCKTYPE_A'])
上涨家数。当存在指定上下文且 ignore_context 为 false 时,将忽略 query, market, stk_type 参数。
- hikyuu.indicator.AGG_QUANTILE(ind[, ktype=Query.MIN, fill_null=False, unit=1, quantile=0.75])
聚合其他K线周期分位数, 可参考 AGG_STD 帮助
- hikyuu.indicator.AGG_STD(ind[, ktype=Query.MIN, fill_null=False, unit=1, ddof=1])
聚合其他K线周期的标准差, 如计算日线时聚合分钟线收盘价的标准差
>>> kdata = get_kdata('sh600000', Query(Datetime(20250101), ktype=Query.DAY)) >>> ind = AGG_STD(CLOSE(), ktype=Query.MIN, fill_null=False, unit=1, ddof=1) >>> ind(k)
- hikyuu.indicator.AGG_VWAP([ktype=Query.MIN, fill_null=False, unit=1])
聚合其他K线成交量加权平均价格(Volume Weighted Average Price) VWAP 是成交量加权的平均价格,计算方式是将每一分钟(或单位时间)的成交量乘以该分钟的成交价格,然后对所有乘积求和,最后除以总成交量。
- 参数:
ktype (KQuery.KType) -- 聚合的K线周期
fill_null (bool) -- 是否填充缺失值
unit (int) -- 聚合周期单位 (上下文K线分组单位, 使用日线计算分钟线聚合时, unit=2代表聚合2天的分钟线)
- 返回:
指标数据
- 返回类型:
- AGG_FUNC(ind, agg_func[, ktype=Query.MIN, fill_null=False, unit=1]
使用自定函数聚合其他K线周期的指标。
示例, 计算日线时聚合分钟线收盘价的和:
>>> kdata = get_kdata('sh600000', Query(Datetime(20250101), ktype=Query.DAY)) >>> ind = AGG_FUNC(CLOSE(), lambda ds, x: np.sum(x)) >>> ind(k)
- hikyuu.indicator.ALIGN(data, ref[, fill_null=True])
按指定的参考日期对齐
- 参数:
data (Indicator) -- 输入数据
ref (DatetimeList|Indicator|KData) -- 指定做为日期参考的 DatetimeList、Indicator 或 KData
fill_null (bool) -- 缺失数据使用 nan 填充; 否则使用小于对应日期且最接近对应日期的数据
- Retype:
Indicator
- hikyuu.indicator.AMA([data, n=10, fast_n=2, slow_n=30])
佩里.J 考夫曼(Perry J.Kaufman)自适应移动平均 [BOOK1]
- 参数:
data (Indicator) -- 输入数据
n (int) -- 计算均值的周期窗口,必须为大于2的整数
fast_n (int) -- 对应快速周期N
slow_n (int) -- 对应慢速EMA线的N值
- 返回类型:
result(0): AMA
result(1): ER
- hikyuu.indicator.AMO([data])
获取成交金额,包装KData的成交金额成Indicator
- 参数:
data -- 输入数据(KData 或 Indicator)
- 返回类型:
- hikyuu.indicator.ATR([kdata, n=14])
平均真实波幅(Average True Range), 真实波动幅度 TR 的简单移动均值
- hikyuu.indicator.AVEDEV(data[, n=22])
平均绝对偏差,求X的N日平均绝对偏差
- hikyuu.indicator.BACKSET([data, n=2])
向前赋值将当前位置到若干周期前的数据设为1。
用法:BACKSET(X,N),X非0,则将当前位置到N周期前的数值设为1。
例如:BACKSET(CLOSE>OPEN,2)若收阳则将该周期及前一周期数值设为1,否则为0
- hikyuu.indicator.BARSCOUNT([data])
有效值周期数, 求总的周期数。
用法:BARSCOUNT(X)第一个有效数据到当前的天数。
例如:BARSCOUNT(CLOSE)对于日线数据取得上市以来总交易日数,对于1分钟线取得当日交易分钟数。
- hikyuu.indicator.BARSLAST([data])
上一次条件成立位置 上一次条件成立到当前的周期数。
用法:BARSLAST(X): 上一次 X 不为 0 到现在的天数。
例如:BARSLAST(CLOSE/REF(CLOSE,1)>=1.1) 表示上一个涨停板到当前的周期数
- hikyuu.indicator.BARSLASTS([data|val, ]n)
第N次条件成立位置到当前的周期数。
用法:BARSLASTS(X, N): 第N次 X 不为 0 到现在的天数。
例如:BARSLASTS(CLOSE/REF(CLOSE,1)>=1.1, 2) 表示第2个涨停板到当前的周期数。
注意:当N=1时,BARSLASTS(X, 1) 等价于 BARSLAST(X)。
支持动态参数,n 可以是整数、Indicator 或 IndParam。
使用示例:
# 静态参数 result = BARSLASTS(cond, 2) # 动态参数 - 使用 CVAL result = BARSLASTS(cond, CVAL(cond, 2)) # 动态参数 - 使用 IndParam result = BARSLASTS(cond, IndParam(n_indicator)) # 动态参数 - 直接使用 Indicator result = BARSLASTS(cond, n_indicator)
- hikyuu.indicator.BARSLASTCOUNT([data])
统计连续满足条件的周期数
用法:ARSLASTCOUNT(X),其中X为条件表达式。
例如:BARSLASTCOUNT(CLOSE>OPEN)表示统计连续收阳的周期数
- hikyuu.indicator.BARSSINCE([data])
第一个条件成立位置到当前的周期数。
用法:BARSSINCE(X):第一次X不为0到现在的天数。
例如:BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数
- hikyuu.indicator.BETA(ind, ref_ind[, n=10, fill_null=True])
计算 Beta 系数,如衡量资产收益与市场收益之间的敏感性。
计算公式:Beta = Cov(stock_return, market_return) / Var(market_return)
备注
BETA本身不会对输入数据进行收益率转换(pct_change)处理, 输入的指标应为已经计算好的收益率数据。
- 参数:
- 返回类型:
使用示例:
# 计算股票相对于市场的Beta系数 stock_return = ROC(CLOSE(), 1) market_return = ROC(INDEXC(), 1) beta = BETA(stock_return, market_return, 60)
- hikyuu.indicator.BETWEEN(a, b, c)
介于(介于两个数之间)
用法:BETWEEN(A,B,C)表示A处于B和C之间时返回1,否则返回0
例如:BETWEEN(CLOSE,MA(CLOSE,10),MA(CLOSE,5))表示收盘价介于5日均线和10日均线之间
- hikyuu.indicator.BLOCKSETNUM(block, query)
横向统计(返回板块股个数), 两种调用方式:
BLOCKSET(block, query)
BLOCKSET(stks, query)
- 参数:
stks (Block block | sequence) -- 待统计的板块 或 stock list
query (Query) -- 统计范围
- hikyuu.indicator.CLOSE([data])
获取收盘价,包装KData的收盘价成Indicator
- 参数:
data -- 输入数据(KData 或 Indicator)
- 返回类型:
- hikyuu.indicator.CAPITAL(kdata)
获取流通盘(单位:万股),同 LIUTONGPAN
- hikyuu.indicator.CEILING([data])
向上舍入(向数值增大方向舍入)取整
用法:CEILING(A)返回沿A数值增大方向最接近的整数
例如:CEILING(12.3)求得13;CEILING(-3.5)求得-3
- 参数:
data -- 输入数据
- 返回类型:
- hikyuu.indicator.CYCLE(kdata[, adjust_cycle=1][, adjust_mode='query'][, delay_to_trading_day=True])
PF调仓周期指标,主要用于PF调仓日验证,及作为SG
- hikyuu.indicator.CONTEXT([ind, fill_null=False, use_self_ktype=False, use_self_recover_type=False])
独立上下文。使用 ind 自带的上下文。当指定新的上下文时,不会改变已有的上下文。 例如:ind = CLOSE(k1), 当指定新的上下文 ind = ind(k2) 时,使用的是 k2 的收盘价。如想仍使用 k1 收盘价, 则需使用 ind = CONTEXT(CLOSE(k1)), 此时 ind(k2) 将仍旧使用 k1 的收盘价。
- hikyuu.indicator.CONTEXT_K(ind)
获取指标上下文。Indicator::getContext()方法获取的是当前的上下文,但对于 CONTEXT 独立上下文指标无法获取其指定的独立上下文,需用此方法获取
- hikyuu.indicator.CORR(ind1, ind2, n)
计算 ind1 和 ind2 的样本相关系数与协方差。返回中存在两个结果,第一个为相关系数,第二个为协方差。
- hikyuu.indicator.COV(ind1, ind2[, n=10, fill_null=True])
计算 ind1 和 ind2 的样本协方差。
- hikyuu.indicator.COST(k[, x=10.0])
成本分布
用法:COST(k, X) 表示X%获利盘的价格是多少
例如:COST(k, 10),表示10%获利盘的价格是多少,即有10%的持仓量在该价格以下,其余90%在该价格以上,为套牢盘 该函数仅对日线分析周期有效
- hikyuu.indicator.CODELIKE([data, ]pattern)
证券代码模式匹配
返回当前上下文中的证券代码是否匹配指定的模式。支持通配符匹配:
*:匹配任意长度的任意字符序列(包括空序列)?:匹配单个任意字符
返回值:匹配成功返回 1.0,否则返回 0.0。所有周期的返回值相同。
使用示例:
# 匹配以"600"开头的股票代码 kdata = get_kdata('sh600000', Query(-10)) result = CODELIKE(kdata, "600*") # 匹配6位数字的股票代码 result = CODELIKE(kdata, "??????") # 匹配以"000"开头且以"1"结尾的代码 result = CODELIKE(kdata, "000*1") # 精确匹配特定代码 result = CODELIKE(kdata, "600000")
- hikyuu.indicator.COUNT([data, n=20])
统计满足条件的周期数。
用法:COUNT(X,N),统计N周期中满足X条件的周期数,若N=0则从第一个有效值开始。
例如:COUNT(CLOSE>OPEN,20)表示统计20周期内收阳的周期数
- hikyuu.indicator.CVAL([data, value=0.0, discard=0])
data 为 Indicator 实例,创建和 data 等长的常量指标,其值和为value,抛弃长度discard和data一样
- hikyuu.indicator.DATE([data])
取得该周期从1900以来的年月日。用法: DATE 例如函数返回1000101,表示2000年1月1日。
- 参数:
data -- 输入数据 KData
- 返回类型:
- hikyuu.indicator.DAY([data])
取得该周期的日期。用法: DAY 函数返回有效值范围为(1-31)。
- 参数:
data -- 输入数据 KData
- 返回类型:
- hikyuu.indicator.DECLINE([query=Query(-100), market='SH', stk_type='constant.STOCKTYPE_A'])
下跌家数。当存在指定上下文且 ignore_context 为 false 时,将忽略 query, market, stk_type 参数。
- hikyuu.indicator.DEVSQ([data, n=10])
数据偏差平方和,求X的N日数据偏差平方和
- hikyuu.indicator.DIFF([data, n=1])
差分指标,即data[i] - data[i-n]
- hikyuu.indicator.DISCARD(data, discard)
以指标公式的方式设置指标结果的丢弃数据量。
- hikyuu.indicator.DMA(ind, a)
动态移动平均
用法:DMA(X,A),求X的动态移动平均。
算法:若Y=DMA(X,A) 则 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值。
例如:DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价
- hikyuu.indicator.DOWNNDAY(data[, n=3])
连跌周期数, DOWNNDAY(CLOSE,M)表示连涨M个周期
- hikyuu.indicator.EMA([data, n=22])
指数移动平均线(Exponential Moving Average)
- 参数:
data -- 输入数据
n (int|Indciator|IndParam) -- 计算均值的周期窗口,必须为大于0的整数
- 返回类型:
- hikyuu.indicator.EVERY([data, n=20])
一直存在
用法:EVERY (X,N) 表示条件X在N周期一直存在
例如:EVERY(CLOSE>OPEN,10) 表示前10日内一直是阳线
- hikyuu.indicator.EXIST([data, n=20])
存在, EXIST(X,N) 表示条件X在N周期有存在
- hikyuu.indicator.FACTOR(factor)
因子指标转换
将Factor对象转换为Indicator,使其可以在指标系统中使用。 该指标需要设置K线上下文才能进行计算。
- 参数:
factor (Factor) -- 因子对象
- 返回类型:
- hikyuu.indicator.FIXED_START_INDEX([ind, start_index=0, factor_name=''])
固定指标计算时使用的查询范围的起始索引
对某些随时间起点变化的指标(如 AD),固定起始索引确保从股票第一条数据开始计算。
- hikyuu.indicator.FIXED_START_DATE([ind, start_date=Datetime.min(), factor_name=''])
固定指标计算时使用的查询范围的起始日期
对某些随时间起点变化的指标(如 AD),固定起始日期确保从指定日期开始计算。
- hikyuu.indicator.FILTER([data, n=5])
信号过滤, 过滤连续出现的信号。
用法:FILTER(X,N): X 满足条件后,删除其后 N 周期内的数据置为 0。
例如:FILTER(CLOSE>OPEN,5) 查找阳线,5 天内再次出现的阳线不被记录在内。
- hikyuu.indicator.FINANCE([kdata, ix, name])
获取历史财务信息。(可通过 StockManager.get_history_finance_all_fields 查询相应的历史财务字段信息)
ix, name 使用时,为二选一。即要不使用 ix,要不就使用 name 进行获取。
- hikyuu.indicator.FLOOR([data])
向下舍入(向数值减小方向舍入)取整
用法:FLOOR(A)返回沿A数值减小方向最接近的整数
例如:FLOOR(12.3)求得12
- 参数:
data -- 输入数据
- 返回类型:
- hikyuu.indicator.GROUP_COUNT(ind[, ktype=Query.DAY, unit=1])
自定义分组累积计数
- hikyuu.indicator.GROUP_MAX(ind[, ktype=Query.DAY, unit=1])
自定义分组累积最大值
- hikyuu.indicator.GROUP_MIN(ind[, ktype=Query.DAY, unit=1])
自定义分组累积计录最小值
- hikyuu.indicator.GROUP_PROD(ind[, ktype=Query.DAY, unit=1])
自定义分组累积乘积
- hikyuu.indicator.GROUP_SUM(ind[, ktype=Query.DAY, unit=1])
自定义分组累积和
- GROUP_FUNC(ind, group_func[, ktype=Query.DAY, unit=1]
自定义分组累积计算指标。
示例, 计算日线时聚合分钟线收盘价的和:
>>> kdata = get_kdata('sh600000', Query(Datetime(20250101), ktype=Query.DAY)) >>> ind = GROUP_FUNC(CLOSE(), lambda dates, data: data/2.0) >>> ind(k)
- hikyuu.indicator.HHV([data, n=20])
N日内最高价,N=0则从第一个有效值开始。
- hikyuu.indicator.HHVBARS([data, n=20])
上一高点位置 求上一高点到当前的周期数。
用法:HHVBARS(X,N):求N周期内X最高值到当前周期数N=0表示从第一个有效值开始统计
例如:HHVBARS(HIGH,0)求得历史新高到到当前的周期数
- hikyuu.indicator.HIGH([data])
获取最高价,包装KData的最高价成Indicator
- 参数:
data -- 输入数据(KData 或 Indicator)
- 返回类型:
- hikyuu.indicator.HOUR([data])
取得该周期的小时数。用法:HOUR 函数返回有效值范围为(0-23),对于日线及更长的分析周期值为0。
- 参数:
data -- 输入数据 KData
- 返回类型:
- hikyuu.indicator.HSL(kdata)
获取换手率(百分比 x%),等于 VOL(k) / CAPITAL(k)
- hikyuu.indicator.IC(ind, stks[, n=1, spearman=True, strict=True])
计算指定的因子相对于参考证券的 IC (默认为 RankIC)
IC 原本需要 “t 时刻因子值→t+1 时刻收益”,改为计算 “t 时刻因子值→t 时刻之前 N 天的收益”(比如过去 5 天的收益),并称之为 “当前 IC”。(否则当前值都会是缺失NA) 如需严格“t 时刻因子值→t+1 时刻收益“计算,请设置 strict=True (注意此模式下, 后n位为 NA)
- hikyuu.indicator.ICIR(ind, stks[, n=1, rolling_n=120, spearman=True])
计算 IC 因子 IR = IC的多周期均值/IC的标准方差
- hikyuu.indicator.IR(p, b[, n=100])
信息比率(Information Ratio,IR)
公式: (P-B) / TE P: 组合收益率 B: 比较基准收益率 TE: 投资周期中每天的 p 和 b 之间的标准差 实际使用时,P 一般为 TM 的资产曲线,B 为沪深 3000 收盘价,如: ref_k = sm["sh000300"].get_kdata(query) funds = my_tm.get_funds_curve(ref_k.get_datetime.list()) ir = IR(PRICELIST(funds), ref_k.close, 0)
如果希望计算因子 IC 的 IR 值,请使用 ICIR 指标
- hikyuu.indicator.IF(x, a, b)
条件函数, 根据条件求不同的值。
用法:IF(X,A,B)若X不为0则返回A,否则返回B
例如:IF(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值
- hikyuu.indicator.INBLOCK(data, category, name)
当前上下文证券是否在指定的板块中。
- hikyuu.indicator.INDEXC([kdata])
返回对应的大盘收盘价,分别是上证指数,深证成指,科创50,创业板指
- hikyuu.indicator.INDEXH([kdata])
返回对应的大盘最高价,分别是上证指数,深证成指,科创50,创业板指
- hikyuu.indicator.INDEXL([kdata])
返回对应的大盘最低价,分别是上证指数,深证成指,科创50,创业板指
- hikyuu.indicator.INDEXO([kdata])
返回对应的大盘开盘价,分别是上证指数,深证成指,科创50,创业板指
- hikyuu.indicator.INDEXA([kdata])
返回对应的大盘成交金额,分别是上证指数,深证成指,科创50,创业板指
- hikyuu.indicator.INDEXV([kdata])
返回对应的大盘成交量,分别是上证指数,深证成指,科创50,创业板指
- hikyuu.indicator.INDEXADV([query])
通达信 880005 大盘上涨家数, 可能无法盘中更新!
- hikyuu.indicator.INDEXDEC([query])
通达信 880005 大盘下跌家数, 可能无法盘中更新!
- hikyuu.indicator.INSUM(block, query, ind, mode)
返回板块各成分该指标相应输出按计算类型得到的计算值.
注意: INSUM使用模式4/5时相当于RANK功能, 但不适合在MF中使用, 在 MF 中使用时计算量为 N x N 级别, 计算缓慢。如果希望在 MF 中使用,建议直接使用 RANK[捐赠用户] 指标。
用法:
INSUM(block, query, ind, mode)
INSUM(stks, query, ind, mode)
- hikyuu.indicator.ISNA(ind[, ignore_discard=False])
判断指标是否为 nan 值,若为 nan 值, 则返回1, 否则返回0.
- 参数:
ind (Indicator) -- 指定指标
ignore_discard (bool) -- 忽略指标丢弃数据
- hikyuu.indicator.ISLIMITDOWN([kdata])
判断股票是否跌停指标
根据不同股票类型判断当日收盘价是否达到跌停板价格:
A股普通股票:跌停幅度为10%
北交所股票:跌停幅度为30%
创业板/科创板股票:跌停幅度为20%
ST股票跌停幅度为5%,但由于缺乏ST标识的历史日期信息,暂未处理
跌停判断逻辑:当日收盘价 <= 前一日收盘价 × (1 - 跌停幅度)
- hikyuu.indicator.ISLIMITUP([kdata])
判断股票是否涨停指标
根据不同股票类型判断当日收盘价是否达到涨停板价格:
A股普通股票:涨停幅度为10%
北交所股票:涨停幅度为30%
创业板/科创板股票:涨停幅度为20%
ST股票涨停幅度为5%,但由于缺乏ST标识的历史日期信息,暂未处理
涨停判断逻辑:当日收盘价 >= 前一日收盘价 × (1 + 涨停幅度)
- hikyuu.indicator.ISINF(ind)
判断指标是否为正无穷大 (+inf) 值,若为 +inf 值, 则返回1, 否则返回0。如判断负无穷大, 使用 ISINFA。
- hikyuu.indicator.ISINFA(ind)
判断指标是否为负无穷大 (-inf) 值,若为 -inf 值, 则返回1, 否则返回0。如判断正无穷大, 使用 ISINF。
- hikyuu.indicator.KALMAN(ind[, q=0.01][, r=0.1])
Kalman滤波器, 用于平滑指标, 可设置平滑系数q和r, 默认q=0.01, r=0.1
- hikyuu.indicator.KDATA([data])
包装KData成Indicator,用于其他指标计算
- 参数:
data -- KData 或 具有6个返回结果的Indicator(如KDATA生成的Indicator)
- 返回类型:
- hikyuu.indicator.KDATA_PART([data, kpart])
根据字符串选择返回指标KDATA/OPEN/HIGH/LOW/CLOSE/AMO/VOL,如:KDATA_PART("CLOSE")等同于CLOSE()
- 参数:
data -- 输入数据(KData 或 Indicator)
kpart (string) -- KDATA|OPEN|HIGH|LOW|CLOSE|AMO|VOL
- 返回类型:
- hikyuu.indicator.KDJ(kdata[, n=9, m12=3, m2=3])
经典 KDJ 随机指标
- 参数:
kdata (KData) -- 关联的K线数据
n (int)
m1 (int)
m2 (int)
- 返回:
k, d, j
- hikyuu.indicator.LIUTONGPAN(kdata)
获取流通盘(单位:万股),同 CAPITAL
- hikyuu.indicator.LAST([data, m=10, n=5])
区间存在。
用法:LAST (X,M,N) 表示条件 X 在前 M 周期到前 N 周期存在。
例如:LAST(CLOSE>OPEN,10,5) 表示从前10日到前5日内一直阳线。
- 参数:
data -- 输入数据
m (int) -- m周期
n (int) -- n周期
- 返回类型:
- hikyuu.indicator.LASTVALUE(ind[, ignore_discard=False])
等同于通达信CONST指标。取输入指标最后值为常数, 即结果中所有值均为输入指标的最后值, 谨慎使用。含未来函数, 谨慎使用。
- hikyuu.indicator.LLV([data, n=20])
N日内最低价,N=0则从第一个有效值开始。
- hikyuu.indicator.LLVBARS([data, n=20])
上一低点位置 求上一低点到当前的周期数。
用法:LLVBARS(X,N):求N周期内X最低值到当前周期数N=0表示从第一个有效值开始统计
例如:LLVBARS(HIGH,20)求得20日最低点到当前的周期数
- hikyuu.indicator.LONGCROSS(a, b[, n=3])
两条线维持一定周期后交叉
用法:LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返 回1,否则返回0
例如:LONGCROSS(MA(CLOSE,5),MA(CLOSE,10),5)表示5日均线维持5周期后与10日均线交金叉
- hikyuu.indicator.LOW([data])
获取最低价,包装KData的最低价成Indicator
- 参数:
data -- 输入数据(KData 或 Indicator)
- 返回类型:
- hikyuu.indicator.MA([data, n=22])
简单移动平均
- hikyuu.indicator.MACD([data, n1=12, n2=26, n3=9])
平滑异同移动平均线
- 参数:
data (Indicator) -- 输入数据
n1 (int) -- 短期EMA时间窗
n2 (int) -- 长期EMA时间窗
n3 (int) -- (短期EMA-长期EMA)EMA平滑时间窗
- 返回类型:
具有三个结果集的 Indicator
result(0): MACD_BAR:MACD直柱,即MACD快线-MACD慢线
result(1): DIFF: 快线,即(短期EMA-长期EMA)
result(2): DEA: 慢线,即快线的n3周期EMA平滑
- hikyuu.indicator.MAX(ind1, ind2)
求最大值, MAX(A,B)返回A和B中的较大值。
- hikyuu.indicator.MDD([ind, n=0])
最大回撤百分比(n=0 则无时间窗口限制), 按行业惯例为正值
- hikyuu.indicator.MIN(ind1, ind2)
求最小值, MIN(A,B)返回A和B中的较小值。
- hikyuu.indicator.MINUTE([data])
取得该周期的分钟数。用法:MINUTE 函数返回有效值范围为(0-59),对于日线及更长的分析周期值为0。
- 参数:
data -- 输入数据 KData
- 返回类型:
- hikyuu.indicator.MOD(ind1, ind2)
取整后求模。该函数仅为兼容通达信。实际上,指标求模可直接使用 % 操作符
用法:MOD(A,B)返回A对B求模
例如:MOD(26,10) 返回 6
- hikyuu.indicator.MONTH([data])
取得该周期的月份。用法: MONTH 函数返回有效值范围为(1-12)。
- 参数:
data -- 输入数据 KData
- 返回类型:
- hikyuu.indicator.MRR([ind, n=0])
最大盈利百分比(和MDD向对应的相反方向计算)
- hikyuu.indicator.NAMELIKE([data, ]pattern)
证券名称模式匹配
返回当前上下文中的证券名称是否匹配指定的模式。支持通配符匹配:
*:匹配任意长度的任意字符序列(包括空序列)?:匹配单个任意字符
返回值:匹配成功返回 1.0,否则返回 0.0。所有周期的返回值相同。
使用示例:
# 匹配以"上证"开头的指数名称 kdata = get_kdata('sh000001', Query(-10)) result = NAMELIKE(kdata, "上证*") # 匹配包含"指数"的名称 result = NAMELIKE(kdata, "*指数*") # 匹配4个字符的名称 result = NAMELIKE(kdata, "????") # 精确匹配特定名称 result = NAMELIKE(kdata, "上证指数")
- hikyuu.indicator.NDAY(x, y[, n=3])
连大, NDAY(X,Y,N)表示条件X>Y持续存在N个周期
- hikyuu.indicator.NOT([data])
求逻辑非。NOT(X)返回非X,即当X<=0时返回1,否则返回0。
- hikyuu.indicator.OPEN([data])
获取开盘价,包装KData的开盘价成Indicator
- 参数:
data -- 输入数据(KData 或 Indicator)
- 返回类型:
- hikyuu.indicator.POW(data, n)
乘幂
用法:POW(A,B)返回A的B次幂
例如:POW(CLOSE,3)求得收盘价的3次方
- hikyuu.indicator.SIGNED_POWER(data, n)
带符号乘幂
用法:SIGNED_POWER(A,B)返回A的B次幂,但保留原始符号
例如:SIGNED_POWER(CLOSE,3)求得收盘价的3次方,保留原始符号
- hikyuu.indicator.PRICELIST([data=None, discard=0, align_dates=None])
将 list、tuple、Indicator 转化为普通的 Indicator
- 参数:
data (sequence) -- 输入数据
discard (int) -- 丢弃前多少个数据
align_dates (sequence) -- 对齐日期列表,如果为空则不进行对齐
- 返回类型:
- hikyuu.indicator.RANK(stks, ref_ind[, mode=0, fill_null=true, market='SH'])
计算指标值在指定板块中的排名
- 参数:
stks -- 指定证券列表 或 Block
ref_ind -- 参考指标
mode -- 排序方式: 0-降序排名(指标值最高值排名为1), 1-升序排名(指标值越大排名值越大), 2-降序排名百分比, 3-升序排名百分比, 4-降序排名百分比(0~1), 5-升序排名百分比(0~1)
fill_null -- 是否填充缺失值
market -- 板块所属市场
- 返回:
指标值在指定板块中的排名
- 返回类型:
- hikyuu.indicator.REF([data, n])
向前引用 (即右移),引用若干周期前的数据。
用法:REF(X,A) 引用A周期前的X值。
- hikyuu.indicator.REFX(n: int)
REF增强(勿用于回测), 用于获取指标中第n个周期的值, n为正数时从当前周期向前数, 为负数时从当前周期向后数。
注意:此函数属于未来函数, 不应被用于回测, 主要用于AI等需要获取未来数据的场景。
- 参数:
ind (Indicator) -- 指标
n (int) -- 周期数
- hikyuu.indicator.RECOVER_BACKWARD([data])
对输入的指标数据 (CLOSE|OPEN|HIGH|LOW) 进行后向复权
- hikyuu.indicator.RECOVER_FORWARD([data])
对输入的指标数据 (CLOSE|OPEN|HIGH|LOW) 进行前向复权
- hikyuu.indicator.RECOVER_EQUAL_BACKWARD([data])
对输入的指标数据 (CLOSE|OPEN|HIGH|LOW) 进行等比后向复权
- hikyuu.indicator.RECOVER_EQUAL_FORWARD([data])
对输入的指标数据 (CLOSE|OPEN|HIGH|LOW) 进行等比前向复权
- hikyuu.indicator.REPLACE(ind[, old_value=constant.nan, new_value=0.0, ignore_discard=False])
替换指标中指定值,默认为替换 nan 值为 0.0。
- hikyuu.indicator.RESULT(data, result_ix)
以公式指标的方式返回指定指标中的指定结果集
- hikyuu.indicator.ROC([data, n=10])
变动率指标: ((price / prevPrice)-1)*100
- hikyuu.indicator.ROCP([data, n=10])
变动率指标: (price - prevPrice) / prevPrice
- hikyuu.indicator.ROCR([data, n=10])
变动率指标: (price / prevPrice)
- hikyuu.indicator.ROCR100([data, n=10])
变动率指标: (price / prevPrice) * 100
- hikyuu.indicator.ROUND([data, ndigits=2])
四舍五入
- 参数:
data -- 输入数据
ndigits (int) -- 保留的小数点后位数
- 返回类型:
- hikyuu.indicator.ROUNDDOWN([data, ndigits=2])
向下截取,如10.1截取后为10
- 参数:
data -- 输入数据
ndigits (int) -- 保留的小数点后位数
- 返回类型:
- hikyuu.indicator.ROUNDUP([data, ndigits=2])
向上截取,如10.1截取后为11
- 参数:
data -- 输入数据
ndigits (int) -- 保留的小数点后位数
- 返回类型:
- hikyuu.indicator.RSI(kdata=None, N1=6, N2=12, N3=24)
相对强弱指标
- 参数:
kdata (KData) -- 关联的K线数据
N1 (int) -- 参数N1
N2 (int) -- 参数N1
N3 (int) -- 参数N1
- 返回:
rsi1, rsi2, rsi3
- hikyuu.indicator.SAFTYLOSS([data, n1=10, n2=3, p=2.0])
亚历山大 艾尔德安全地带止损线,参见 [BOOK2]
计算说明:在回溯周期内(一般为10到20天),将所有向下穿越的长度相加除以向下穿越的次数,得到噪音均值(即回溯期内所有最低价低于前一日最低价的长度除以次数),并用今日最低价减去(前日噪音均值乘以一个倍数)得到该止损线。为了抵消波动并且保证止损线的上移,在上述结果的基础上再取起N日(一般为3天)内的最高值
- hikyuu.indicator.SGN([data])
求符号值, SGN(X),当 X>0, X=0, X<0分别返回 1, 0, -1。
- hikyuu.indicator.SLICE(data, start, end, result_index=-1)
获取某指标中指定范围 [start, end) 的数据,生成新的指标
- 参数:
data (Indicator|sequence) -- 输入数据
start (int) -- 起始位置
end (int) -- 终止位置(不包含本身)
result_index (int) -- 原输入数据中的结果集, 默认小于0时表示全部结果集
- hikyuu.indicator.SLOPE(data, n=22)
计算线性回归斜率,N支持变量
- hikyuu.indicator.SMA([data, n=22, m=2])
求移动平均
用法:若Y=SMA(X,N,M) 则 Y=[M*X+(N-M)*Y')/N,其中Y'表示上一周期Y值
- hikyuu.indicator.SPEARMAN(ind1, ind2, n)
Spearman 相关系数
- hikyuu.indicator.SKEW([data, n=10])
计算N周期内未调整的总体偏度
- hikyuu.indicator.KURT([data, n=10])
计算N周期内的超额峰度(未调整的总体峰度 - 3)
超额峰度(Excess Kurtosis)是衡量数据分布峰态的指标,用于描述数据分布的尾部厚度。 正态分布的超额峰度为0。正的超额峰度表示分布比正态分布有更厚的尾部(尖峰厚尾), 负的超额峰度表示分布比正态分布有更薄的尾部(平峰薄尾)。
- hikyuu.indicator.SQRT([data])
开平方
用法:SQRT(X)为X的平方根
例如:SQRT(CLOSE)收盘价的平方根
- 参数:
data -- 输入数据
- 返回类型:
- hikyuu.indicator.STD([data, n=10])
计算N周期内样本标准差
- hikyuu.indicator.STDEV([data, n=10])
计算N周期内样本标准差
- hikyuu.indicator.STDP([data, n=10])
总体标准差,STDP(X,N)为X的N日总体标准差
- hikyuu.indicator.STKTYPE([k])
获取股票类型指标
返回当前股票的类型值(StockType枚举值)
示例:
# 使用默认上下文 stktype = STKTYPE() # 指定K线数据 stock = sm.getStock("sh000001") kdata = stock.getKData(Query(0, 100)) stktype = STKTYPE(kdata)
- hikyuu.indicator.SUM([data, n=20])
求总和。SUM(X,N),统计N周期中X的总和,N=0则从第一个有效值开始。
- hikyuu.indicator.SUMBARS([data, ]a)
累加到指定周期数, 向前累加到指定值到现在的周期数
用法:SUMBARS(X,A):将X向前累加直到大于等于A,返回这个区间的周期数
例如:SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数
- hikyuu.indicator.TIME([data])
取得该周期的时分秒。用法: TIME 函数返回有效值范围为(000000-235959)。
- 参数:
data -- 输入数据 KData
- 返回类型:
- hikyuu.indicator.TR([kdata])
真实波动幅度(TR)是以下三个值中的最大值: 1. 当前周期最高价与最低价之差 2. 当前周期最高价与前一周期收盘价之差的绝对值 3. 当前周期最低价与前一周期收盘价之差的绝对值
- hikyuu.indicator.TS_RANK([data, n=20])
时间序列排名,计算当前值在过去N个周期内的排名比例(Alpha101)
用法:TS_RANK(X,N),表示X在过去N个周期内的排名(从1到N)除以N。 例如:TS_RANK(CLOSE,20)表示收盘价在过去20个周期内的排名比例。
Alpha101中的定义: TS_RANK(x, n) = (rank of x in the last n observations) / n 其中rank为升序排名,即较小的值排名靠前,输出为0~1的百分位值。
该指标是单只股票在时间轴上的滚动排名,用于衡量当前值在历史序列中的相对位置。
- hikyuu.indicator.UPNDAY(data[, n=3])
连涨周期数, UPNDAY(CLOSE,M)表示连涨M个周期
- hikyuu.indicator.VAR([data, n=10])
估算样本方差, VAR(X,N)为X的N日估算样本方差
- hikyuu.indicator.VARP([data, n=10])
总体样本方差, VARP(X,N)为X的N日总体样本方差
- hikyuu.indicator.VOL([data])
获取成交量,包装KData的成交量成Indicator
- 参数:
data -- 输入数据(KData 或 Indicator)
- 返回类型:
- hikyuu.indicator.WEAVE(ind1, ind2[, ind3, ind4, ind5, ind6])
将最多6个Indicator的结果组合在一起放在一个Indicator中。如ind = WEAVE(ind1, ind2), 则此时ind包含多个结果,按ind1、ind2的顺序存放。
- hikyuu.indicator.WEEK([data])
取得该周期的星期数。用法:WEEK 函数返回有效值范围为(0-6),0表示星期天。
- 参数:
data -- 输入数据 KData
- 返回类型:
- hikyuu.indicator.WINNER([ind])
获利盘比例
用法: WINNER(CLOSE) 表示以当前收市价卖出的获利盘比例。
例如: 返回0.1表示10%获利盘;WINNER(10.5)表示10.5元价格的获利盘比例
该函数仅对日线分析周期有效,且仅对存在流通盘权息数据的证券有效,对指数、基金等无效。
- hikyuu.indicator.WITHKTYPE([ind, ktype, fill_null=False])
将指标数据转换到指定的K线类型。相关便捷函数: WITHWEEK, WITHMONTH, WITHQUARTER, WITHYEAR, WITHMIN, WITHMIN5 ...
- hikyuu.indicator.ZHBOND10([data, default_val])
获取10年期中国国债收益率
- 参数:
data (DatetimeList|KDate|Indicator) -- 输入的日期参考,优先使用上下文中的日期
default_val (float) -- 如果输入的日期早于已有国债数据的最早记录,则使用此默认值
- hikyuu.indicator.ZSCORE([data, out_extreme, nsigma, recursive])
对数据进行标准化(归一),可选进行极值排除
注:非窗口滚动,如需窗口滚动的标准化,直接 (x - MA(x, n)) / STDEV(x, n) 即可。