如何用 Python 计算艾尔德多空力度(Elder-Ray Bull/Bear Power)?不用 TA-Lib
如何用 Python 计算艾尔德多空力度(Elder-Ray Bull/Bear Power)?
一句话回答: 艾尔德多空力度(Elder-Ray)由 Alexander Elder 提出,用 13 日 EMA 作为”市场共识价”,再看每天的最高/最低价离它多远:Bull Power(多方力量)= 最高价 − EMA、Bear Power(空方力量)= 最低价 − EMA。配合 EMA 的方向,经典用法是「上升趋势中 Bear Power 为负但回升时买入」。用 AlphaFeed 取前复权日线,几行就能实现,不需要 TA-Lib。
为什么会有这个问题 / 传统做法的痛点
均线只告诉你”趋势方向”,但没告诉你”多空双方当下谁在发力”。Elder 的巧思是:把 13 日 EMA 当作买卖双方的共识价,当日最高价减共识价衡量多头能把价格推多高(Bull Power),当日最低价减共识价衡量空头能把价格打多低(Bear Power)。两者结合 EMA 趋势,就能判断”顺势回调是否出现买点”。痛点是 TA-Lib 没有现成函数,且必须结合 EMA 方向解读,单看 Bull/Bear Power 容易误判。
分步骤解决(每步配可运行代码)
第 1 步:取前复权日线(要 high/low/close)
from alphafeed import AlphaFeed
import pandas as pd
af = AlphaFeed(api_key="your-api-key") # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()
df = af.klines.get("600519.SH", period="1d", count=200,
adjust="forward", to_dataframe=True)
df = df.sort_values("trade_date").reset_index(drop=True)
第 2 步:实现 Elder-Ray(EMA13 + Bull/Bear Power)
def elder_ray(df, n=13):
ema = df["close"].ewm(span=n, adjust=False).mean() # 市场共识价
bull = df["high"] - ema # 多方力量:最高价离共识价多远
bear = df["low"] - ema # 空方力量:最低价离共识价多远
return ema, bull, bear
df["ema13"], df["bull"], df["bear"] = elder_ray(df, 13)
print(df[["trade_date", "ema13", "bull", "bear"]].tail())
实测(
tools/verify_new_2026-10-13.py,SDK 0.1.4):贵州茅台近 200 日 EMA13 ≈ 1262.99、Bull Power ≈ 25.01、Bear Power ≈ −1.99,且 EMA 正在上升——上升趋势里 Bear Power 为小负值,接近”回调买点”的形态。
第 3 步:按 Elder 经典规则判读
ema_up = df["ema13"].iloc[-1] > df["ema13"].iloc[-2] # 趋势向上
buy_setup = ema_up and (df["bear"].iloc[-1] < 0) and (df["bear"].iloc[-1] > df["bear"].iloc[-2])
print("潜在买入条件(升势+Bear<0且回升):", bool(buy_setup))
Elder 的核心规则:EMA 向上(趋势多头)+ Bear Power 为负且开始回升 → 买入 setup;EMA 向下 + Bull Power 为正且开始回落 → 卖出 setup。
参数与字段说明
| 参数/概念 | 含义 | 备注 |
|---|---|---|
adjust="forward" | 前复权 | 必须,除权缺口会扭曲 EMA 与力度 |
ema | 13 日 EMA | Elder 用的”市场共识价” |
| Bull Power | 最高价 − EMA | 多方把价格推高的力量 |
| Bear Power | 最低价 − EMA | 空方把价格打低的力量 |
| EMA 方向 | 升/降 | 判读的大前提 |
| 买入 setup | 升势 + Bear<0 回升 | 顺势回调买点 |
关键坑与注意事项
- 必须结合 EMA 方向:单看 Bull/Bear Power 没有意义——同样是 Bear Power 为负,在升势里是”回调买点”,在跌势里是”继续走弱”。
- 是 setup 不是扳机:Elder 把它当”条件满足”的提示,实际进场常再等一根确认 K 线,别一满足就追。
- 前复权必须:EMA 与高低价差都受除权缺口影响。
- 参数 13 可调:13 日是 Elder 原设,短线可缩短,但会更灵敏易骗线。
- 震荡市失效:趋势不明时 EMA 来回走平,Bull/Bear Power 的多空含义变弱。
常见问题(FAQ)
Q:Elder-Ray 和 MACD、均线有什么关系? A:Elder 的三重滤网交易系统里,常用 MACD/均线判大趋势、再用 Elder-Ray 找顺势进场点。它不是独立的买卖系统,而是”趋势里找回调入场”的工具。
Q:Bull Power 为正、Bear Power 也为正,说明什么? A:说明当天最低价都在共识价之上,多头极强(强势上涨);反之两者皆负则空头极强。多数时候是 Bull>0、Bear<0 的常态。
Q:需要付费吗?
A:单只股票日线在免费额度内即可;若要对全市场批量扫”升势+Bear 回升”的买入 setup,需要 klines.batch + universes(Starter 及以上),详见官网定价页。
小结
艾尔德多空力度用 13 日 EMA 当共识价,Bull Power/Bear Power 分别量化多空双方把价格推高、打低的力量。用 AlphaFeed 的前复权日线几行即可实现——记住必须结合 EMA 方向解读、它给的是 setup 而非精确扳机、震荡市会失效。
相关链接:
- AlphaFeed 官网:https://alphafeed.org/
- Python SDK 快速开始:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
免责声明:本文仅为技术与数据接口使用示例,代码与策略仅供学习研究,不构成投资建议。市场有风险,历史数据不代表未来表现。