2015年7月23日 星期四

開發商品的交易系統 - 基礎篇 [46]

EasyTrader ArtNo 272
布林極限(%BB)由布林帶衍生而來的,輔助布林帶研判買賣信號的可靠性
布林帶(Bollinger Bands,BBands)也稱為布林通道、包寧傑帶狀、保力加通道或布歷加通道,是由約翰·包寧傑(John Bollinger)在1980年代發明的技術分析工具。應用上結合了移動
平均和標準差的概念,其基本的型態是由三條軌道線組成的帶狀通道(中軌和上、下軌各一條)。中軌為股價的平均成本,上軌和下軌可分別視為股價的壓力線和支撐線。

%BB 指標(Percent b,PBB),以數字形式呈現收盤價在布林帶中的位置,做為交易決策時的關鍵指標。例如:當%BB值為0.5(或以百分比表示50%),代表收盤價處於布林帶的中間位置。

%BB值 = (收盤價−布林帶下軌值) ÷ (布林帶上軌值−布林帶下軌值)
由於收盤價會在上、下軌道震盪遊走,幅度甚至大於軌道範圍(0~1),因此%BB值沒有上下
限。當走勢向上突破,收盤價落於上軌上方時,%BB值> 1;而走趨向下突破,收盤價落在下軌下方時,%BB值< 0。

藉由觀察分析「%BB指標」可以提供投資時的參考,依據指標的強弱走勢,作出買賣決策。
在1996 "STOCKS & COMMODITIES" 雜誌中有一篇文章  “Enhancing on-balance and negative volume” 作者Phillip Holt's 介紹了將 OBV指標應用了布林極限的觀念發展了一個新指標 OBVDI " OBV disparity trading system"作為趨勢判斷的元素。這個指標主要是將以價格為基礎的%BB 與以 OBV為基礎的 %BB分別計算後,再求其比值作為策略元素。

Name: OBVDI
Type: User-Function 

Inputs: Length(Numeric);
Vars: BollTop(0), BollBot(0), PerB(0), OBVBollTop(0), OBVBollBot(0), OBVPerB(0);
BollTop=BollingerBand(Close,Length,2);
BollBot=BollingerBand(Close,Length,-2);
If (BollTop-BollBot)<>0 then PerB=(Close-BollBot)/(BollTop-BollBot);
OBVBollTop=BollingerBand(OBV,Length,2);
OBVBollBot=BollingerBand(OBV,Length,-2);
If (OBVBollTop-OBVBollBot)<>0 then OBVPerB=(OBV-OBVBollBot)/(OBVBollTop-OBVBollBot);

OBVDI=(1+PerB)/(1+OBVPerB);

也可以從這裡下載 http://www.multicharts.com/support/base/?action=article&id=1354


{系統參數與變數}
input:ExitType(2);
inputs:NBarL(5),NBarS(45),TradeProfit(0.055),TradeStopLoss(0.038),ATRs_L(0.75),ATRs_S(3.5);
vars: IsBalanceDay(False),MP(0),PF(0),PL(0);

inputs: LenA(9),AvgL(16),LenB(20),AvgS(7),HB(1.09),LB(1.2),HighBar(8),LowBar(7);
Vars: OBVL(0),OBVS(0), AvgL1(0), AvgS1(0) ;

MP = MarketPosition ;
if DAYofMonth(Date) > 14 and DAYofMonth(Date) < 22 and DAYofWeek(Date)= 3 then isBalanceDay = True else isBalanceDay =False ;

PF = AvgPrice*TradeProfit ;
PL = AvgPrice*TradeStopLoss ;
{ 多方 OBVL 計算 }
OBVL = _OBVDI(LenA) ;
AvgL1 = Average(OBVL,AvgL) ;

{ 空方 OBVS 計算 }
OBVS = _OBVDI(LenB) ;
AvgS1 = Average(OBVS,AvgS) ;

{ OBVL 上穿均線則在下根K棒為近期高點時買進作多 }
if MP <> 1 and OBVL Cross over AvgL1 then Buy next bar at Highest(High,HighBar) stop ;

{ OBVsS 下穿均線則在下根K棒為近期低點時賣出作空 }
if MP <> -1 and OBVS Cross under AvgS1 then Sell next bar at Lowest(Low,LowBar) stop ;

if ExitType = 1 then SetStopLoss(PL * BigPointValue) ;

if ExitType = 2 then Begin
SetStopLoss(PL * BigPointValue) ;
setProfitTarget(PF * BigPointValue) ;
end;

if ExitType = 3 then Begin
if MP > 0 and BarsSinceEntry = NBarL then ExitLong next bar at Market ;
if MP < 0 and BarsSinceEntry = NBarS then ExitShort next bar at Market ;
end;

if ExitType = 4 then Begin
SetStopLoss(PL * BigPointValue) ;
SetProfitTarget(PF * BigPointValue) ;
if MP > 0 and BarsSinceEntry = NBarL then {Sell } ExitLong next bar at Market ;
if MP < 0 and BarsSinceEntry = NBarS then {Buy} ExitShort next bar at Market ;
end;

if IsBalanceDay or date = 1150224 then setExitonClose ;
台指期 30 min K 多空留倉 交易週期 2005/3/1~ 2015/2/28 交易成本 1200


加上如意多空網台指期 30 min K 多空留倉 交易週期 2005/3/1~ 2015/2/28 交易成本 1200


結論:OBVDI 指標主要合成了價格與成交量的對應關係通常搭配成交量開發的策略都有不錯的績效表現,只是應用成交量時要注意到日K以上週期是 Volume ,分K週期是使用 Ticks,所以讀者使用內建 OBV函數時要作修改才能同時應用於日K與分K的策略測試
MagicQS180

沒有留言:

張貼留言