跳转至

指标组合实战手册

本手册提供 akquant.talib 在策略实战中的组合方式、调参顺序与排错要点,面向“从 TA-Lib 迁移到 AKQuant”以及“新策略快速起步”两类场景。

0. 运行示例

python examples/45_talib_indicator_playbook_demo.py
python examples/45_talib_indicator_playbook_demo.py --data-source akshare --symbol sh600000 --start-date 20240101 --end-date 20260301

1. 快速起步

from akquant import talib as ta

close = df["close"].to_numpy()
high = df["high"].to_numpy()
low = df["low"].to_numpy()
volume = df["volume"].to_numpy()

ema_fast = ta.EMA(close, timeperiod=20, backend="rust")
ema_slow = ta.EMA(close, timeperiod=60, backend="rust")
adx = ta.ADX(high, low, close, timeperiod=14, backend="rust")
natr = ta.NATR(high, low, close, timeperiod=14, backend="rust")

2. 组合模板

目标 推荐组合 触发逻辑骨架
趋势跟随 EMA + ADX + NATR 趋势方向 + 趋势强度 + 波动过滤
均值回归 BBANDS + RSI + MOM 偏离带宽 + 超买超卖 + 短动量确认
量价确认 OBV + MFI + ROC 价格方向先行,成交量信号放行
跟踪止损 SAR + ATR 趋势持有 + 动态止损宽度
upper, middle, lower = ta.BBANDS(close, timeperiod=20, backend="rust")
rsi = ta.RSI(close, timeperiod=14, backend="rust")
mom = ta.MOM(close, period=10, backend="rust")

long_signal = close[-1] < lower[-1] and rsi[-1] < 30 and mom[-1] > 0
exit_signal = close[-1] > middle[-1]

3. 调参顺序

建议固定以下顺序,避免参数空间爆炸:

  1. 先定交易风格:趋势或均值回归。
  2. 再定主信号:EMA/BBANDS/SAR 之一。
  3. 再定过滤器:ADX/RSI/MOM 之一。
  4. 最后定风险参数:ATR/NATR 阈值与止损系数。

4. warmup 与输出形态

  • 大多数指标在 warmup 区段会返回 NaN,应先做空值过滤再下单。
  • 多输出指标保持 tuple 结构:
  • MACD -> (macd, signal, hist)
  • BBANDS -> (upper, middle, lower)
  • STOCH -> (slowk, slowd)
macd, signal, hist = ta.MACD(close, backend="rust")
if macd.size == 0:
    return
if not (macd[-1] == macd[-1] and signal[-1] == signal[-1]):
    return

5. 常见误区

  • 只看单指标,不做趋势强度过滤,导致震荡期反复交易。
  • 忽略 warmup 区段,直接使用尾值触发信号。
  • 将参数一次性全局搜索,导致样本内过拟合。
  • 迁移时直接切换 rust,未先与 python 基线对齐。

6. 迁移清单

  1. 保持 TA-Lib 函数签名不变,先跑 backend="python"
  2. 验证输出结构与 warmup 一致后,再切到 backend="rust"
  3. 对支持 period 别名的指标优先沿用旧参数名。
  4. 用固定样本建立最小回归测试。

相关文档: - 能力补强路线图 - 第 5 章:策略开发实战 - 可运行示例:45_talib_indicator_playbook_demo.py