電子信箱 service [at] bituzi.com
幣圖誌首頁 facebook粉絲團 google plus google plus

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


KVO 成交量擺盪指標是由 Stephen J.Klinger開發的。這是一個確認指標。它使用最高價、 最低價,收盤價和成交量以建立一個量能力道。然後這個量能力道 (VF) 利用快速與慢速的指數平滑化的差值變成一個擺盪指標(KO)。信號線 (KOS)是由KO的  EMA 演算得到。使用者可以更改的方法 (EMA) 和週期長度。

雖然信號產生如圖所示的計算中,成交量擺盪指標應和其他指標使用。 KVO 指標的開發想法有兩個看起來目的相反的目標:


1. 對於短期頂部和底部,信號要夠敏感。
2. 準確反映商品交易長期的資金流動。

KO 基於以下原則:
1.振幅 (最高價 - 最低價) 是價格移動的衡量而成交量是其背後的趨動力。
2.最高價+最低價+收盤價的總合與前一根K棒的比較是用來定義趨勢的方向。

成交量影響了日內交易中的價格連續變化並反應了買賣雙方的壓力,KO指標則是以量能力道量化了在每一天的吸籌與出貨間彼此的差異,一個強力的上升量能力道必然伴隨著一個向上的趨勢並且在隨後的階段中持續上升,同時也出現一些早期的回檔現象。

通過將34週期和 55 週期的量能力道作指數平均數之間的差異轉換為擺盪指標,與 13 週期信號線作比較,很容易觀察到這種力道在商品上的進出變化。進而可以進一步透過背離的觀察來確認頭部與底部。

指標程式碼
inputs:FastLen(34),SlowLen(55),TrigLen(13);
Vars:TSum(0),Trend(0),CM(0),DM(0),VForce(0),KOFast(0),KOSlow(0),KVO(0),Signal(0) ;

if BarNumber = 1 then Trend = -1 ;
if TypicalPrice > TypicalPrice[1] then Trend = 1 else Trend = -1 ;

DM = Range ;
if Trend = Trend[1] then CM = CM[1] + DM else CM = DM + DM[1] ;
if CM = 0 then Value1 = -2 else Value1 = AbsValue(2*(DM/CM-1)) ;
VForce = iff(DataComPression > 1 , Volume,Ticks) * Value1 * Trend {* 100} ;
KOFast = XAverage(VForce,FastLen) ;
KOSlow = Xaverage(VForce,SlowLen) ;

KVO = KOFast - KOSlow ;
Signal = Xaverage(KVO ,TrigLen) ;

Plot1(KVO,"KVO") ;
Plot2(Signal,"Signal") ;


{系統參數與變數}
input:EntryType(1),ExitType(2);
input:NBarL(6),NBarS(9),TradeProfit(0.04),TradeStopLoss(0.04),ATRs_L(12.7),ATRs_S(4.6);
vars:IsBalanceDay(False),MP(0),PF(0),PL(0);
input:TrigX(13),RatioX(1.618),SmoothX(1),HighBar(2),LowBar(2) ;
Vars:TSum(0),Trend(0),CM(0),DM(0),VForce(0) ;
Vars:FastX(0),SlowX(0),KOFastX(0),KOSlowX(0),KVOX(0),SignalX(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 ;

{利用參數變化來計算快速與慢速線之間維持一定的差距 }
FastX = TrigX * (RatioX+1) ;
SlowX = FastX * RatioX ;

if BarNumber = 1 then Trend = -1 ;

{利用前後根K棒均價上升與下降來判斷趨勢方向}

if TypicalPrice > TypicalPrice[1] then Trend = 1 else Trend = -1 ;
DM = Range ;

{ 累計振幅變化 }
if Trend = Trend[1] then CM = CM[1] + DM else CM = DM + DM[1] ;
if CM = 0 then Value1 = -2 else Value1 = AbsValue(2*(DM/CM-1)) ;

{ 將成交量納入向上或向下力道的計算 }
VForce = iff(DataComPression > 1 , Volume,Ticks) * Value1 * Trend {* 100} ;

{ 計算快速與慢速的動能 }
KOFastX = XAverage(VForce,FastX) ;
KOSlowX = Xaverage(VForce,SlowX) ;

{計算 KVO 擺盪指標 與信號線 }
KVOX = Summation((KOFastX - KOSlowX),SmoothX);
SignalX = Summation(Xaverage(KVOX ,TrigX),SmoothX) ;

{ 以零軸穿越作為多空進出依據 }
if EntryType = 1 then Begin
if MP <> 1 and KVOX Cross over 0 then Buy next bar at Highest(High,HighBar) stop ;
if MP <> -1 and KVOX Cross under 0 then Sell next bar at Lowest(Low,LowBar) stop ;
end;

{ 以信號線穿越作為多空進出依據 }
if EntryType = 2 then Begin
if MP <> 1 and KVOX Cross over SignalX then Buy next bar at Highest(High,HighBar) stop ;
if MP <> -1 and KVOX Cross under SignalX then Sell next bar at Lowest(Low,LowBar) stop ;
end;

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 ;

台指期 15 min K 多空留倉 交易週期 2005/3/31~ 2015/3/31 交易成本 1200

原作者表示KO指標在超買超賣區與威廉指標搭配 ,或是在趨勢方向的確認與MACD一起使用都能讓指標的表現有更佳的效果。

原文轉載自就是愛現,程式交易

0 意見: