成交量指标

成交量指标通过结合交易成交量数据来分析买卖压力。成交量确认价格走势,并可能预示趋势反转。


OBV - 能量潮

能量潮是一个累积成交量指标,在上涨日增加成交量,在下跌日减少成交量。它衡量买卖压力。

公式

\[\begin{split}OBV_t = \begin{cases} OBV_{t-1} + volume_t & \text{if } close_t > close_{t-1} \\ OBV_{t-1} - volume_t & \text{if } close_t < close_{t-1} \\ OBV_{t-1} & \text{if } close_t = close_{t-1} \end{cases}\end{split}\]

特性

属性

输入

OHLCV (close, volume)

输出

单个值(累积 OBV)

回看期

0(从第一个 K 线开始有效)

内存

O(1)

API 用法

from techkit import OBV

# Object-oriented
obv = OBV()
result = obv.update_ohlcv(open, high, low, close, volume)
if result.valid:
    print(f"OBV: {result.value:.0f}")

# Batch
from techkit import talib_compat as ta
obv_values = ta.OBV(close, volume)
const tk = require('techkit');

// Streaming
const obv = tk.obv();
const result = obv.updateOHLCV({open, high, low, close, volume});

// Batch
const values = tk.OBV(close, volume);
#include <techkit/techkit.hpp>

techkit::OBV obv;
techkit::OHLCV bar{open, high, low, close, volume};
auto result = obv.update(bar);
tk_indicator obv = tk_obv_new();
tk_ohlcv bar = {open, high, low, close, volume};
tk_result r = tk_update_ohlcv(obv, &bar);
tk_free(obv);

交易用法

  • 趋势确认: OBV 随价格上涨 = 上升趋势确认

  • 背离: 价格创新高但 OBV 没有 = 看跌背离

  • 突破: OBV 突破通常先于价格突破

  • 成交量分析:

    • 上升的 OBV + 上升的价格 = 强势上升趋势

    • 下降的 OBV + 下降的价格 = 强势下降趋势

    • 上升的 OBV + 下降的价格 = 潜在向上反转

    • 下降的 OBV + 上升的价格 = 潜在向下反转

局限性

  • OBV 在长期内可能累积误差

  • 不考虑成交量强度(仅考虑方向)

  • 需结合价格行为使用



ADOSC - 蔡金 A/D 振荡器

蔡金 A/D 振荡器是累积/派发线的快速和慢速 EMA 之间的差值。它为 A/D 线提供动量信号。

公式

\[ADOSC = EMA(AD, fast) - EMA(AD, slow)\]

其中:

  • \(fast\) = 快速 EMA 周期(默认: 3)

  • \(slow\) = 慢速 EMA 周期(默认: 10)

参数

参数

类型

默认值

范围

描述

fast_period

int

3

1-100000

快速 EMA 周期

slow_period

int

10

1-100000

慢速 EMA 周期(必须 > fast)

特性

属性

输入

OHLCV (open, high, low, close, volume)

输出

单个值(振荡器)

回看期

slow_period - 1

内存

O(1)

API 用法

from techkit import ADOSC

adosc = ADOSC(fast_period=3, slow_period=10)
result = adosc.update_ohlcv(open, high, low, close, volume)
if result.valid:
    print(f"A/D Oscillator: {result.value:.0f}")
const adosc = tk.adosc(3, 10);
const result = adosc.updateOHLCV({open, high, low, close, volume});
techkit::ADOSC adosc(3, 10);
auto result = adosc.update(bar);
tk_indicator adosc = tk_adosc_new(3, 10);
tk_result r = tk_update_ohlcv(adosc, &bar);

交易用法

  • 动量: 正 ADOSC = 累积增加

  • 交叉: ADOSC 穿越零线 = 动量转换

  • 背离: ADOSC 与价格背离 = 反转信号

  • 信号解释:

    • ADOSC > 0: 累积动量

    • ADOSC < 0: 派发动量

    • ADOSC 上升: 买入压力增加

    • ADOSC 下降: 卖出压力增加

常用周期

快速

慢速

用途

3

10

标准(最常用)

5

15

较慢,敏感性较低

2

8

较快,敏感性较高


MFI - 资金流量指标

资金流量指标是一个成交量加权的 RSI,衡量买卖压力。范围从 0 到 100。

公式

\[TP = \frac{high + low + close}{3}\]
\[MF = TP \times volume\]
\[+MF = \sum MF \text{ where } TP > TP_{prev}\]
\[-MF = \sum MF \text{ where } TP < TP_{prev}\]
\[MFI = 100 - \frac{100}{1 + \frac{+MF}{-MF}}\]

参数

参数

类型

默认值

范围

描述

period

int

14

1-100000

平均周期数

特性

属性

输入

OHLCV (open, high, low, close, volume)

输出

单个值(0-100)

回看期

period

内存

O(period)

API 用法

from techkit import MFI

mfi = MFI(period=14)
result = mfi.update_ohlcv(open, high, low, close, volume)
if result.valid:
    if result.value > 80:
        print("Overbought")
    elif result.value < 20:
        print("Oversold")
const mfi = tk.mfi(14);
const result = mfi.updateOHLCV({open, high, low, close, volume});
techkit::MFI mfi(14);
auto result = mfi.update(bar);
tk_indicator mfi = tk_mfi_new(14);
tk_result r = tk_update_ohlcv(mfi, &bar);

交易用法

  • 超买/超卖:

    • MFI > 80: 超买(潜在卖出)

    • MFI < 20: 超卖(潜在买入)

  • 背离: MFI 与价格背离 = 反转信号

  • 成交量确认: MFI 通过成交量加权确认 RSI

  • 与 RSI 比较:

    • RSI: 基于价格的动量

    • MFI: 成交量加权的动量

    • 结合使用以获得更强的信号

常用周期

周期

用途

14

标准(最常用)

21

长期

9

短期,更敏感


成交量指标比较

指标

计算

范围

最佳用途

OBV

累积成交量

无界

基本成交量趋势

AD

加权累积

无界

资金流量分析

ADOSC

A/D 动量

无界

动量信号

MFI

成交量加权 RSI

0-100

超买/超卖


相关指标

  • Volume Price Trend (VPT): 类似于 OBV,但使用百分比变化

  • Volume Rate of Change: 衡量成交量动量

  • Price-Volume Trend: 结合价格和成交量变化