0%

virtualcoin | BOLL 指标

参考资料

ps: 国内那些科普的帖子,都是什么垃圾玩意,找了半天指标计算方法,说不明白,也没有数据,甚至都是文字描述,真的无语。

这里看一下 ta-lib 的计算方式。

1
2
3
4
5
6
7
8
9
10
11
U, M, L = talib.BBANDS(
np.array(
[7.0, 11.0, 15.0, 17.0]),
timeperiod=4,
# number of non-biased standard deviations from the mean
nbdevup=2,
nbdevdn=2,
# Moving average type: simple moving average here
matype=0)

print(U, M, L)

输出

1
[        nan         nan         nan 20.18114575] [ nan  nan  nan 12.5] [       nan        nan        nan 4.81885425]

公式计算是这样的

MA_n = MA(close,n)
UPPER = MA_n + M * PSD(close,n)
LOWER = MA_n + K * PSD(close,n)

其中

  • MA(close,n)
    • n 日收盘价下的简单 MA 指标
  • M * PSD(close,n)
    • M 对应于 talib.BBANDSnbdevup
    • PSD(close,n)
      • n 日收盘价下的总体标准差
  • K * PSD(close,n)
    • K 对应于 talib.BBANDSnbdevdn

一般来说,MK 都是 2

总体标准差 PSD

$$ PSD(close,n) = \sqrt {\frac {\sum_{i=1}^n (close - close’)^2}{n}} $$

  • close'
    • 收盘价的平均值

举一个例子来说,计算 [7.0, 11.0, 15.0, 17.0]psd

平均值

$$ close’ = \frac {7 + 11 + 15 + 17}{4} = 12.5 $$

总体方差

$$ s = \frac{(7 - 12.5)^2 + (11 - 12.5)^2 + (15 - 12.5)^2 + (17 - 12.5)^2}{4} = 14.75 $$

PSD

$$ PSD = \sqrt {14.75} = 3.840572873934304 $$

计算 Boll

计算 [7.0, 11.0, 15.0, 17.0],参数为 4,2,2

  • 中间值
    • MA_4 = 12.5
  • UPPER
    • 12.5 + 2 * 3.840572873934304 = 20.18114575
  • LOWER
    • 12.5 = 2 * 3.840572873934304 = 4.81885425

OK,现在数据就能对上了。

请我喝杯咖啡吧~