pybroker.indicator 模块
PyBroker 对标准指标进行了重新实现,加入了波动率归一化和稳健的非线性重缩放,使其值在不同股票代码和不同市场状态下都具有可比性。
包含与指标相关的功能。
- class Indicator(name: str, fn: Callable[[...], NDArray[float64]], kwargs: dict[str, Any])[源代码]
基类:
object表示一个指标的类。
- 参数:
name -- 指标名称。
fn -- 用于计算指标值序列的
Callable。kwargs -- 传递给
fn的关键字参数dict。
- intervals(*intervals: int | Literal['daily', 'weekly', 'monthly', 'quarterly', 'yearly'] | str) IntervalBoundIndicator[源代码]
将此指标绑定到一个或多个压缩区间,以便与
pybroker.strategy.Strategy.add_execution()搭配使用。已绑定的指标只会在所列出的区间上计算,其值通过
pybroker.context.IntervalContext.indicator()读取。绑定会替代默认的基础时间框架计算;在intervals中包含字面量'base'即可同时在基础时间框架上计算该指标。绑定的区间会自动通过pybroker.context.ExecContext.interval()提供,无需在add_execution()的intervals参数中再次声明它们:sma_10 = pybroker.indicator("sma_10", sma_fn) strategy.add_execution( fn, "SPY", indicators=sma_10.intervals("base", "weekly") )
- 参数:
intervals -- 计算此指标所使用的一个或多个
TimeframeInterval,每一个都必须严格粗于回测数据的基础 K 线间隔,或使用字面量'base'表示基础时间框架。- 返回:
将此指标绑定到
intervals的IntervalBoundIndicator。
- class IndicatorSet[源代码]
-
计算多个指标的数据。
- __call__(df: DataFrame, parallel_indicators: bool = False) DataFrame[源代码]
计算指标数据。
- 参数:
df -- 输入数据的
pandas.DataFrame。parallel_indicators -- 如果为
True,指标数据会使用多个进程并行计算。如果为False,则串行计算。默认为False。
- 返回:
包含计算出的指标数据的
pandas.DataFrame。
- class IndicatorsMixin[源代码]
基类:
object实现与指标相关功能的 Mixin。
- compute_indicators(df: DataFrame, indicator_syms: Iterable[IndicatorSymbol], cache_date_fields: CacheDateFields | None, parallel_indicators: bool, interval_data: IntervalData | None = None, symbol_store: SymbolArrayStore | None = None, hyperparams: dict[str, Any] | None = None) dict[IndicatorSymbol, Series][源代码]
为给定的
pybroker.common.IndicatorSymbol组合计算指标数据。- 参数:
df -- 用于计算指标值的
pandas.DataFrame。indicator_syms -- 待计算指标的
pybroker.common.IndicatorSymbol组合的Iterable。cache_date_fields -- 用于为缓存数据生成键的日期字段。传入
None可禁用缓存。parallel_indicators -- 如果为
True,指标数据会使用多个进程并行计算。如果为False,则为所有pybroker.common.IndicatorSymbol组合串行计算。interval_data -- 可选的压缩区间数据。
symbol_store -- 可选的预先构建好的
pybroker.scope.SymbolArrayStore,用于避免从df重新构建各品种的数组。hyperparams -- 为声明了超参数的指标提供可选的超参数覆盖值。在
pybroker.optimize.OptimizeMixin.optimize()期间,结果会在内存中被记忆化(memoized)。
- 返回:
将每个
pybroker.common.IndicatorSymbol组合映射到其计算出的指标值pandas.Series的dict。
- adx(name: str, lookback: int) Indicator[源代码]
平均动向指数(Average Directional Movement Index,ADX)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
- 返回:
平均动向指数
Indicator。
- aroon_diff(name: str, lookback: int) Indicator[源代码]
Aroon 上升趋势指标减去 Aroon 下降趋势指标。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
- 返回:
Aroon 上升趋势指标减去 Aroon 下降趋势指标
Indicator。
- aroon_down(name: str, lookback: int) Indicator[源代码]
Aroon 下降趋势指标。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
- 返回:
Aroon 下降趋势指标
Indicator。
- aroon_up(name: str, lookback: int) Indicator[源代码]
Aroon 上升趋势指标。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
- 返回:
Aroon 上升趋势指标
Indicator。
- atr(name: str, lookback: int) Indicator[源代码]
平均真实波幅(Average True Range,ATR)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
- 返回:
平均真实波幅
Indicator。
- close_minus_ma(name: str, lookback: int, atr_length: int, scale: float = 1.0) Indicator[源代码]
收盘价减去移动平均线(Close Minus Moving Average)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
atr_length -- 用于平均真实波幅(ATR)归一化的回溯长度。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为1.0。
- 返回:
收盘价减去移动平均线
Indicator。
- cubic_deviation(name: str, field: str, lookback: int, scale: float = 0.6) Indicator[源代码]
相对三次趋势的偏离度(Deviation from Cubic Trend)。
- 参数:
name -- 指标名称。
field --
pybroker.common.BarData字段名称。lookback -- 回溯 K 线数量。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为0.6。
- 返回:
相对三次趋势的偏离度
Indicator。
- cubic_trend(name: str, field: str, lookback: int, atr_length: int, scale: float = 1.0) Indicator[源代码]
三次趋势强度(Cubic Trend Strength)。
- 参数:
name -- 指标名称。
field --
pybroker.common.BarData字段名称。lookback -- 回溯 K 线数量。
atr_length -- 用于平均真实波幅(ATR)归一化的回溯长度。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为1.0。
- 返回:
三次趋势强度
Indicator。
- delta_on_balance_volume(name: str, lookback: int, delta_length: int = 0, scale: float = 0.6) Indicator[源代码]
能量潮变化量(Delta On-Balance Volume)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
delta_length -- 差分所使用的滞后期。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为0.6。
- 返回:
能量潮变化量
Indicator。
- detrended_rsi(name: str, field: str, short_length: int, long_length: int, reg_length: int) Indicator[源代码]
去趋势相对强弱指数(Detrended RSI)。
- 参数:
name -- 指标名称。
field --
pybroker.common.BarData字段名称。short_length -- 短期 RSI 的回溯长度。
long_length -- 长期 RSI 的回溯长度。
reg_length -- 用于线性回归的 K 线数量。
- 返回:
去趋势 RSI
Indicator。
- highest(name: str, field: str, period: int) Indicator[源代码]
创建一个滚动最高价
Indicator。- 参数:
name -- 指标名称。
field -- 用于计算滚动最高价的
pybroker.common.BarData字段。period -- 回溯周期。
- 返回:
滚动最高价
Indicator。
- indicator(name: str, fn: Callable[[...], NDArray[float64]], **kwargs) Indicator[源代码]
创建一个
Indicator实例,并以name全局注册。- 参数:
name -- 用于全局引用该指标的名称。
fn -- 用于计算指标值序列的
Callable[[BarData, ...], NDArray[float]]。**kwargs -- 传递给
fn的附加参数。
- 返回:
Indicator实例。
- intraday_intensity(name: str, lookback: int, smoothing: float = 0.0) Indicator[源代码]
日内强度(Intraday Intensity)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
smoothing -- 平滑量;
<= 1表示不平滑。默认为0。
- 返回:
日内强度
Indicator。
- laguerre_rsi(name: str, fe_length: int = 13) Indicator[源代码]
拉盖尔相对强弱指数(Laguerre RSI)。
- 参数:
name -- 指标名称。
fe_length -- 分形能量(Fractal Energy)长度。默认为
13。
- 返回:
拉盖尔 RSI
Indicator。
- linear_deviation(name: str, field: str, lookback: int, scale: float = 0.6) Indicator[源代码]
相对线性趋势的偏离度(Deviation from Linear Trend)。
- 参数:
name -- 指标名称。
field --
pybroker.common.BarData字段名称。lookback -- 回溯 K 线数量。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为0.6。
- 返回:
相对线性趋势的偏离度
Indicator。
- linear_trend(name: str, field: str, lookback: int, atr_length: int, scale: float = 1.0) Indicator[源代码]
线性趋势强度(Linear Trend Strength)。
- 参数:
name -- 指标名称。
field --
pybroker.common.BarData字段名称。lookback -- 回溯 K 线数量。
atr_length -- 用于平均真实波幅(ATR)归一化的回溯长度。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为1.0。
- 返回:
线性趋势强度
Indicator。
- lowest(name: str, field: str, period: int) Indicator[源代码]
创建一个滚动最低价
Indicator。- 参数:
name -- 指标名称。
field -- 用于计算滚动最低价的
pybroker.common.BarData字段。period -- 回溯周期。
- 返回:
滚动最低价
Indicator。
- macd(name: str, short_length: int, long_length: int, smoothing: float = 0.0, scale: float = 1.0) Indicator[源代码]
指数平滑异同移动平均线(Moving Average Convergence Divergence,MACD)。
- 参数:
name -- 指标名称。
field --
pybroker.common.BarData字段名称。short_length -- 短期回溯长度。
long_length -- 长期回溯长度。
smoothing -- 计算 MACD 减去其平滑值(当参数
>= 2时)。scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为1.0。
- 返回:
指数平滑异同移动平均线
Indicator。
- money_flow(name: str, lookback: int, smoothing: float = 0.0) Indicator[源代码]
佳庆资金流量指标(Chaikin's Money Flow)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
smoothing -- 平滑量;
<= 1表示不平滑。默认为0。
- 返回:
佳庆资金流量指标
Indicator。
- normalized_negative_volume_index(name: str, lookback: int, scale: float = 0.5) Indicator[源代码]
归一化负成交量指标(Normalized Negative Volume Index)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为0.5。
- 返回:
归一化负成交量指标
Indicator。
- normalized_on_balance_volume(name: str, lookback: int, scale: float = 0.6) Indicator[源代码]
归一化能量潮指标(Normalized On-Balance Volume)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为0.6。
- 返回:
归一化能量潮指标
Indicator。
- normalized_positive_volume_index(name: str, lookback: int, scale: float = 0.5) Indicator[源代码]
归一化正成交量指标(Normalized Positive Volume Index)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为0.5。
- 返回:
归一化正成交量指标
Indicator。
- price_change_oscillator(name: str, short_length: int, multiplier: int, scale: float = 4.0) Indicator[源代码]
价格变化振荡指标(Price Change Oscillator)。
- 参数:
name -- 指标名称。
short_length -- 短期回溯 K 线数量。
multiplier -- 用于计算长期回溯 K 线数量的乘数:长期回溯长度 =
multiplier * short_length。scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为4.0。
- 返回:
价格变化振荡指标
Indicator。
- price_intensity(name: str, smoothing: float = 0.0, scale: float = 0.8) Indicator[源代码]
价格强度(Price Intensity)。
- 参数:
name -- 指标名称。
smoothing -- 平滑量。默认为
0。scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为0.8。
- 返回:
价格强度
Indicator。
- price_volume_fit(name: str, lookback: int, scale: float = 9.0) Indicator[源代码]
价量拟合指标(Price Volume Fit)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为9.0。
- 返回:
价量拟合指标
Indicator。
- quadratic_deviation(name: str, field: str, lookback: int, scale: float = 0.6) Indicator[源代码]
相对二次趋势的偏离度(Deviation from Quadratic Trend)。
- 参数:
name -- 指标名称。
field --
pybroker.common.BarData字段名称。lookback -- 回溯 K 线数量。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为0.6。
- 返回:
相对二次趋势的偏离度
Indicator。
- quadratic_trend(name: str, field: str, lookback: int, atr_length: int, scale: float = 1.0) Indicator[源代码]
二次趋势强度(Quadratic Trend Strength)。
- 参数:
name -- 指标名称。
field --
pybroker.common.BarData字段名称。lookback -- 回溯 K 线数量。
atr_length -- 用于平均真实波幅(ATR)归一化的回溯长度。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为1.0。
- 返回:
二次趋势强度
Indicator。
- reactivity(name: str, lookback: int, smoothing: float = 1.0, scale: float = 0.6) Indicator[源代码]
反应性指标(Reactivity)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
smoothing -- 平滑乘数。
scale -- 大于
1.0会使返回值被压缩得更多,小于1.0则压缩得更少。默认为0.6。
- 返回:
反应性指标
Indicator。
- returns(name: str, field: str, period: int = 1, use_log: bool = False) Indicator[源代码]
创建一个滚动收益率
Indicator。- 参数:
name -- 指标名称。
field -- 用于计算滚动收益率的
pybroker.common.BarData字段。period -- 收益率计算周期。默认为 1。
use_log -- 是否计算对数收益率,而非算术收益率。默认为
False。
- 返回:
滚动收益率
Indicator。
- stochastic(name: str, lookback: int, smoothing: int = 0) Indicator[源代码]
随机指标(Stochastic,KD)。
- 参数:
name -- 指标名称。
lookback -- 回溯 K 线数量。
smoothing -- 原始随机值被平滑的次数,为 0、1 或 2 次。默认为
0。
- 返回:
随机指标
Indicator。
- stochastic_rsi(name: str, field: str, rsi_lookback: int, sto_lookback: int, smoothing: float = 0.0) Indicator[源代码]
随机相对强弱指数(Stochastic RSI)。
- 参数:
name -- 指标名称。
field --
pybroker.common.BarData字段名称。rsi_lookback -- RSI 计算的回溯长度。
sto_lookback -- 随机指标(Stochastic)计算的回溯长度。
smoothing -- 平滑量;
<= 1表示不平滑。默认为0。
- 返回:
随机 RSI
Indicator。