[tradestation 8.x] 實做 BBI Bollinger 多空布林通道指標 (含原始碼)

我現在幾乎已不使用所謂的指標來交易了,除了會參考期指常用的 Sar 拋物線,以及這個 ─ Bollinger Band,中文一般翻譯為「布林通道」。我在想這個翻譯應該是有問題的,因為它與程式語言常使用的 Boolean (True/False) 型態一點關係都沒有。 我以為這應該是字義上的誤判,把 Bollinger 看成是 Boolean,而事實上, Bollinger 就是創造該指標的技術分析大師的名字,中文翻譯為 包寧傑;而且我昨天甚至為開始研究這個指標,還特別買了這本經典著作:「包寧傑帶狀操作法 (Bollinger on Bollinger Bands)」回來研讀。

在實做的演算邏輯上,我使用了國內甚為通用的、加了所謂多空線的改良式布林通道 (這裡就仍沿用 布林通道 這個國內常用的術語),全文應該是稱為 Bull and Bear Index Bollinger Band, BBI Bollinger's Band。

應用在 2009/09/16 兩分K 台指期的分析圖形呈現效果如下:
20090916 兩分鐘台指期與多空布林通道線

該指標基本的邏輯如下:

  • 先規劃出一條所謂的多空線。 一般這裡的實做是以可呈現較中期趨勢的均線為主,可以依交易者自己的習慣與喜好來決定多空線。
  • 以這條多空線為中線,往上與往下各畫一條壓力與支撐線。 與中線的距離是以離散數學的「標準差」來計算出。一般是建議兩個單位的標準差 (不過這應該是與市場的波動率有關)。另外,標準差如何計算,這個不用煩惱,幾乎所有提供程式撰寫的語言都會提供這個數學函數,例如 Excel 就提供了 STDV() 標準差函數。
  • 標準差函數一般需要帶進兩個參數: 基準數 (也就是上述的 BBI 中線),以及 樣本參考數據的數目 (亦即要參考的 K線棒數目,一般是建議 14~26)。

依據這樣的演算邏輯,利用 Tradestation 8.x EasyLanguage 所寫出來的程式如下:

Inputs:
	MA1(3), MA2(6), MA3(12), MA4(24), 
	N(15), P(20);

Variables:
	BBI(0), UpperBand(0), LowerBand(0);

BBI = (XAverage(Close, MA1) + XAverage(Close, MA2) + XAverage(Close, MA3) + XAverage(Close, MA4))/4;
{利用 3,6,12,24 的 EMA 來決定多空線;也可以只使用一般的 MA 均線為中線}

{預設使用 標準差x2 來決定通道的上下寬度}
UpperBand = BBI + ((P/10) * StdDev(BBI, N));
LowerBand = BBI - ((P/10) * StdDev(BBI, N));

Plot1(BBI, "BBI", Blue);
Plot2(UpperBand, "UpperBand", Red);
Plot3(LowerBand, "LowerBand", DarkGreen);

**思考心得**
我以為,指標可不是傻傻的照用,而是要能從其本質來思考。 我覺得多空布林通道的關鍵應該是兩個: 一為時間格局 (參數 N)、另一為通道寬度 (P/10 * 標準差)。 而這兩者,絕對是與市場的特性與當時所處的趨勢有關。

時間格局,應該是與所謂的「區間」有關。 盤整時的區間狹小且經歷的時間較長;趨勢發動的區間則大且時間短。

通道寬度,我則是認為與波動率有關,而波動率則是與震盪程度有關。

所以總的來說,上述這兩個參數應該是要用動態的來決定才是,要能辦識區間的期間、價格的震盪程度等,而動態改變這兩個參數的數值。 如果是一直就用某個固定數據的參數,我總覺得這樣太僵化了。

不過上述兩者的辨識,要能寫成演算邏輯,看來應該相當困難。 是否先人為動態調整還是有更理想的判讀作法? 這些仍待後續再行思考與研究了。