認識 布林通道Bollinger Bands 指標

許多技術分析的書籍裡面都會提到布林通道,算是很常見的指標 也是各大券商看盤軟體裡面很受歡迎的指標之一

布林通道的英文為Bollinger Bands,是一條均線並且上下加減一定的標準差所組成,用來研判股價或大盤趨勢為多頭或是空頭 。

布林通道總共有三條線,一般都是取 N 日的移動平均與2倍標準差。
中間值 = N日移動平均
上通道 = 移動平均線 + M倍標準差(通常是2倍)
下通道 = 移動平均線 – M倍標準差

在統計學中作為測量常態分布的機率。
大約68%數值分布在距離平均值有1個標準差之內的範圍;大約95%數值分布在距離平均值有2個標準差之內的範圍;大約99.7%數值分布在距離平均值有3個標準差之內的範圍

布林通道是結合了移動平均線和統計學的標準差的概念,二倍的標準差是指有95%的時間 價格會落在上通道和下通道內區間。

inputs: Length( 20 ),NumDevs( 2 );
variables: var0( 0 ),var1( 0 ),var2( 0 ),var3( 0 ) ;

var0 = AverageFC( close, Length ) ; // 移動平均線
var1 = StandardDev( close, Length, 1 ) ; //標準差
var3 = var0 + NumDevs * var1 ; // 上通道為N倍標準差
var2 = var0 – NumDevs * var1 ; // 下通道為N倍標準差

其中 Length是均線的參數, NumDevs是標準差(預設值為2)

從Multicharts主圖上面的設定>>新增指標>>新增

將Bollinger Bands 套用在交易的圖表上觀察 會發現大部分的時間 價格都會落在上通道和下通道之間

BBand 指標是Bollinger Bands的延伸,把布林通道和價格的關係用百分比方式呈現

程式碼如下

input: Length( 20 ),NumDevs( 2 );
vars: var0( 0 ),var1( 0 ),var2( 0 ),var3( 0 ),Bband(0) ;

var0 = AverageFC( c, Length ) ;
var1 = StandardDev( c, Length, 1 ) ;
var3 = var0 + NumDevs * var1 ;
var2 = var0 – NumDevs * var1 ;

if var3-var2>0 then begin
Bband = ((close-var2) / (var3-var2))*100;
end;

plot1(Bband);
plot2(100); // 大於100就是價格高於2倍標準差的上通道
plot3(50); // 50附近就是均線上下
plot4(0); // 小於0就是價格低於2倍標準差的下通道

一般教科書上面建議的使用方式是來到通道下軌買進多單 大於通道上軌買進空單,這是屬於逆勢的操作方式;我們用Multicharts實驗回測(採用 60分K 50MA均線 2倍標準差)

程式碼範例如下

UP = average(C,Len) + X * stddev(c,Len);
Dn = average(C,Len) – X * stddev(c,Len);

if close cross over DN then buy next bar at market;
if close cross under UP then sellshortnext bar at market;

用60分K套用台指期回測績效如下

先不考慮出場 不論是用什麼參數績效看起來都不怎麼好看

於是把布林通道的做法改成順勢,也就是突破通道的上緣買進多單,跌破通道的下緣買進空單

if close cross over UP then buy next bar at market;
if close cross under DN then sellshortnext bar at market;

(用台指期60分鐘全時段回測時間2018-2024)

似乎看到了一線署光 😅😅

原本預設是2倍的標準差,試著把布林通道的標準差改成其他參數;同時再加入一道濾網 上通道減去下通道需要在一定的區間內(也就是不能發散太多)

If UP-DN<200 then begin
If c cross over UP then buy next bar at H stop;
If Ccross under DN then sellshort next bar at L stop;
end;

看起來舒服多了,布林通道果然要在收斂的時候進場會比較好

加入停損停利; 停損停利值可利用最佳化功能調整

if marketposition=1 and close – entryprice >XX then sell next bar at market;
ifmarketposition=-1 and entryprice – close >XXthen buytocover next bar at market;
if marketposition = 1 then sell next bar at entryprice –XX stop;
if marketposition =-1 then buytocover next bar at entryprice + XX stop;

平倉權益曲線圖

小心得

  1. 如果價格長期落在上軌和中軌之間則趨勢偏多,如果價格落在中軌和下軌之間 趨勢較偏空
  2. 通道區間壓縮到一定的程度突破進場更能提高效率
  3. Bollinger Bands在判斷上操作上可以順勢也可以逆勢,標準差的寬度可以當作波動度參考,

回測的績效也不代表未來,但是回測的績效太難看很難說服自己實際下單,透過Multicharts統計分析找出適合的交易策略 可以減少一些彎路!!🤗🤗

分享你的喜愛