Files
2026-07-13 12:07:23 +08:00

476 lines
7.3 KiB
Markdown

# 指标计算函数
VeighNa Elite Trader的CTA策略模块内置了以下计算函数供策略调用:
**sma** :简单移动平均
* 入参
* close: np.ndarray
* time_period: int=30
* 出参
* sma_array: np.ndarray
**ema** :指数滑动平均
* 入参
* close: np.ndarray
* time_period: int=30
* 出参
* ema_array: np.ndarray
**kama** :适应性移动平均
* 入参
* close: np.ndarray
* time_period: int=30
* 出参
* atr_array: np.ndarray
**wma** :加权移动平均
* 入参
* close: np.ndarray
* time_period: int=30
* 出参
* wma_array: np.ndarray
**apo**:绝对价格振荡器
* 入参
* close: np.ndarray
* fast_period: int=12
* slow_period: int=26
* matype: int=0
* 出参
* apo_array: np.ndarray
请注意,matype分别对应:0=SMA, 1=EMA, 2=WMA, 3=DEMA, 4=TEMA, 5=TRIMA, 6=KAMA, 7=MAMA, 8=T3
**cmo**:钱德动量摆动指标
* 入参
* close: np.ndarray
* time_period: int=14
* 出参
* cmo_array: np.ndarray
**mom**:上升动向值
* 入参
* close: np.ndarray
* time_period: int=10
* 出参
* mom_array: np.ndarray
**ppo**:价格震荡百分比指数
* 入参
* close: np.ndarray
* fast_period: int=12
* slow_period: int=26
* matype: int=0
* 出参
* ppo_array: np.ndarray
**roc**:变动率指标
* 入参
* close: np.ndarray
* time_period: int=10
* 出参
* roc_array: np.ndarray
**rocr**:变动率比率
* 入参
* close: np.ndarray
* time_period: int=10
* 出参
* rocr_array: np.ndarray
**rocp**:变动率百分比
* 入参
* close: np.ndarray
* time_period: int=10
* 出参
* rocp_array: np.ndarray
**trix**:三次平滑EMA的一天变化率
* 入参
* close: np.ndarray
* time_period: int=30
* 出参
* trix_array: np.ndarray
**stddev**:标准偏差
* 入参
* close: np.ndarray
* time_period: int=5
* nbdev: float=1
* 出参
* stddev_array: np.ndarray
**std**:标准偏差
* 入参
* close: np.ndarray
* time_period: int=5
* nbdev: float=1
* 出参
* std_array: np.ndarray
**obv**:能量潮
* 入参
* close: np.ndarray
* volume: np.ndarray
* 出参
* obv_array: np.ndarray
**cci**:顺势指标
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* time_period: int=14
* 出参
* cci_array: np.ndarray
**atr**:真实波动幅度均值
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* time_period: int=14
* 出参
* atr_array: np.ndarray
**natr**:归一化波动幅度均值
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* time_period: int=14
* 出参
* natr_array: np.ndarray
**rsi**:相对强弱指数
* 入参
* close: np.ndarray
* time_period: int=14
* 出参
* rsi_array: np.ndarray
**macd**:平均异同移动平均线
* 入参
* close: np.ndarray
* fast_period: int=12
* slow_period: int=26
* signal_period: int=9
* 出参
* macd_array: np.ndarray
* macdsignal_array: np.ndarray
* macdhist_array: np.ndarray
**adx**:平均趋向指数
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* time_period: int=14
* 出参
* adx_array: np.ndarray
**adxr**:平均趋向指数的趋向指数
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* time_period: int=14
* 出参
* adxr_array: np.ndarray
**minus_di**:负趋向指标
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* time_period: int=14
* 出参
* minusdi_array: np.ndarray
**plus_di**:正趋向指标
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* time_period: int=14
* 出参
* plusdi_array: np.ndarray
**willr**:威廉指标
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* time_period: int=14
* 出参
* willr_array: np.ndarray
**ultosc**:终极波动指标
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* time_period: int=7
* time_period2: int=14
* time_period3: int=28
* 出参
* ultosc_array: np.ndarray
**trange**:真实波幅
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* 出参
* trange_array: np.ndarray
**aroon**:阿隆指标
* 入参
* high: np.ndarray
* low: np.ndarray
* time_period: int=14
* 出参
* aroonup_array: np.ndarray
* aroondown_array: np.ndarray
**aroonosc**:阿隆震荡
* 入参
* high: np.ndarray
* low: np.ndarray
* time_period: int=14
* 出参
* aroonosc_array: np.ndarray
**minus_dm**:负趋向变动值
* 入参
* high: np.ndarray
* low: np.ndarray
* time_period: int=14
* 出参
* minusdm_array: np.ndarray
**plus_dm**:正趋向变动值
* 入参
* high: np.ndarray
* low: np.ndarray
* time_period: int=14
* 出参
* plusdm_array: np.ndarray
**mfi**:资金流量指标
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* volume: np.ndarray
* time_period: int=14
* 出参
* mfi_array: np.ndarray
**ad**:平衡交易量指标
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* volume: np.ndarray
* 出参
* ad_array: np.ndarray
**adosc**:震荡指标
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* volume: np.ndarray
* fast_period: int=3
* slow_period: int=10
* 出参
* adosc_array: np.ndarray
**bop**:均势指标
* 入参
* open: np.ndarray
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* 出参
* bop_array: np.ndarray
**stoch**:随机指标
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* fastk_period: int=5
* slowk_period: int=3
* slowk_matype: int=0
* slowd_period: int=3
* slowd_matype: int=0
* 出参
* slowk_array: np.ndarray
* slowd_array: np.ndarray
**boll**:布林通道
* 入参
* data: np.ndarray
* window: int
* dev: float
* 出参
* bollup_array: np.ndarray
* bolldown_array: np.ndarray
**keltner**:肯特纳通道
* 入参
* high: np.ndarray
* low: np.ndarray
* close: np.ndarray
* window: int
* dev: float
* 出参
* kkup_array: np.ndarray
* kkdown_array: np.ndarray
**donchian**:唐奇安通道
* 入参
* high: np.ndarray
* low: np.ndarray
* window: int
* 出参
* donchianup_array: np.ndarray
* donchiandown_array: np.ndarray
**cross_over**:上穿
* 入参
* data: np.ndarray
* level: float
若data上一个值小于等于level以及data最新值大于level,则返回True。
* 出参
* cross_over: bool
**cross_below**:下穿
* 入参
* data: np.ndarray
* level: float
* 出参
* cross_below: bool
若data上一个值大于等于level以及data最新值小于level,则返回True。
**check_increasing**:检查序列单调上升
* 入参
* data: np.ndarray
* 出参
* increasing: bool
**check_decreasing**:检查序列单调下降
* 入参
* data: np.ndarray
* 出参
* decreasing: bool
**resample_data**:对K线数据重新取样
* 入参
* df: pd.DataFrame
* rule: str
* 出参
* resampled_df: pd.DataFrame
* 示例
若想要测试resample_data函数的效果,可以在策略的on_history函数收到hm推送的时候先获取K线DataFrame,再调用resample_data函数对K线数据重新取样,如下所示:
```python3
# 判断实盘trading状态,只有策略启动之后才进行输出
df: pd.DataFrame = hm.to_dataframe()
resampled_df: pd.DataFrame = resample_data(df, "5min")
```