9. 計算 A/D (累積/派發線) 指標 :
A/D 指標是由 1970 年代至 1980 年代活躍於華爾街的著名技術分析師與資深股票期權交易員 Marc Chaikin (馬克蔡金) 所提出的, 此指標在 OBV 的基礎上加入了用來衡量股價與成交量關係價格的 "位置加權" 以捕捉資金流向, 可用來判斷資金是淨流入 (Accumulation, 累積=資產的買入) 還是淨流出 (Distribution, 派發=資金流出或賣壓), 使量能的判斷更精細, 可提前發現股價可能的反轉或背離.
傳統的 OBV 指標只看收盤價是上漲或下跌, 然後將全部成交量視為買入或賣出 (贏者全拿), Marc Chaikin 認為應該看收盤價是在價格區間的哪個位置來判定買賣雙方力量最終博弈的結果才對. A/D 指標的核心設計思維就是根據收盤價在該交易日價格區間 (最低價~最高價) 中的位置對當日的成交量進行加權 :
- 收盤價越接近高點 : 表示買家在當日價格戰中勝利, 即使價格只微幅上漲, 也應視為強勁的累積 (Accumulation).
- 收盤價越接近低點 : 表示賣家在當日價格戰中勝利, 即使價格只微幅下跌, 也應視為強勁的派發 (Distribution).
這種對成交量的細緻加權處理使 A/D 指標在偵測法人資金是在默默吸收還是釋出籌碼方面比傳統的 OBV 指標更具有參考價值.
A/D 指標的計算是基於一個值介於 +1 與 -1 之間的 "資金流乘數 (Money Flow Multiplier)", 此乘數用來衡量收盤價相對於當日最高價 (High) 和最低價 (Low) 範圍的位置, 然後用它來乘以當日成交量 (Volume) 並進行累加. 換句話說, A/D 指標是透過收盤價的相對位置來量化買賣雙方力量的勝負, 並按比例將當日成交量加權累計, 這比單純看漲跌更細膩地反映了市場資金的真實動向. A/D 的計算公式如下 :
先計算收盤價位置比率 (Money Flow Multiplier, MFM) :
MFM = ((Close − Low) − (High − Close)) / (High − Low)
= ((Close − Low) / (High − Low) × 2 − 1)
- 若收盤價接近高點 → MFM 接近 +1 → 多頭累積
- 若收盤價接近低點 → MFM 接近 -1 → 空頭派發
然後計算資金流量 (Money Flow Volume, MFV)
MFV = MFM × Volume
最後累加 MFV 得到 A/D 線 :
A/D = ∑ (MFM × Volume)
注意, MFM 的值為 -1~1, 但最後計算出來的 A/D 值域並無邊界, A/D 值的大小無意義 (它取決於計算開始的起始點和標的物的總成交量), 重點是看 A/D 曲線的變化趨勢和方向 :
- 上升趨勢 : 代表累積 (買入) 壓力佔上風
- 下降趨勢 : 代表派發 (賣出) 壓力佔上風
pandas-ta 套件提供 ta.ad() 函式與 df.ta.ad() 方法計算 A/D 指標, 傳回值為累積的 A/D 值組成的 Series 物件. 下面程式碼利用 yfinance 取得台股 0050 價量資料來計算 A/D 指標, 並於 K 線圖的副圖中繪製 A/D 曲線 :
# pandas-ta-ad.py
import yfinance as yf
import pandas_ta as ta
from kbar import KBar
# 下載資料
df=yf.download('0050.TW', start='2024-11-06', end='2025-01-09', auto_adjust=False)
df.columns=df.columns.map(lambda x: x[0])
# 計算 A/D 指標
df['AD']=ta.ad(high=df['High'], low=df['Low'], close=df['Close'], volume=df['Volume'])
# 建立 KBar 物件並繪圖
kb=KBar(df)
kb.addplot(df['AD'], panel=2, color='red', width=1.2, ylabel='A/D')
kb.plot(volume=True, mav=(5, 10), title='K 線圖與 A/D 指標')
執行結果 :
從 11 月底至 12 月的 A/D 線緩慢回升, 顯示底部累積正在發生, 價格可能上漲, 可底部買入. 2025 年初的 A/D 線短暫尖峰後急跌, 顯示在關鍵價位派發壓力的存在, 可能是頂部信號.

沒有留言 :
張貼留言