2015年2月26日 星期四

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

EasyTrader ArtNo 248
估波指標(Coppock Curve)又稱“估波曲線”,通過計算月度價格的變化速率的加權平均值來測量市場的動量,屬於長線指標。估波指標由Edwin·Sedgwick·Coppock於1962年提出,主要用於判斷牛市的到來。該指標用於研判大盤指數較為可靠,一般較少用於個股;再有,該指標只能產生買進訊號。依估波指標買進股票後,應另外尋求其他指標來輔助賣出訊號。
估波指標的計算方法
兩個周期參數n1、n2,加權平均參數n3 。
R(n1) = 100 ×(當日收盤價 - 前n1日收盤價)÷ 前n1日收盤價
R(n2) = 100 ×(當日收盤價 - 前n2日收盤價)÷ 前n2日收盤價
RC(n1,n2) = R(n1) + R(n2)
Coppo(n1,n2,n3) = WMA[RC(n1,n2),n3]
(RC的加權平均值,權重n3)

估波指標的判研方法
1、估波指標適合在指數的月線圖表中分析。
2、當估波曲線從零以下向上穿越零線,預示牛市來臨,是中期買入信號。
3、估波指標不適宜尋找賣出時機,應結合其它指標來進行分析。
4、估波指標與價格的背離,也是買賣信號。
估波指標的周期參數一般設置為11、14,加權平均參數為10,也可以結合指標的平均線進行分析。
資料來源 MBA智庫
根據指標的說明與觀察,我們設計了兩個策略元素來作測試
系統參數與變數
input:EntryType(1),ExitType(4);
input:NBarL(33),NBarS(20),TradeProfit(0.04),TradeStopLoss(0.03),ATRs_L(12.7),ATRs_S(4.6);
vars: IsBalanceDay(False),MP(0),PF(0),PL(0),HLRange(100);

input:LenA(11),LenB(14),LenC(10),LStrength(2),RStrength(2),AvgLen(13) ;
Vars:Coppock(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 ;

CopPock = Waverage(RateofChange(Close,LenA)+RateofChange(Close,LenB),LenC) ;

{策略 1 : 當指標發生轉折}
過去我們介紹過 SwingHigh / SwingLow 內建函數,SwingHigh(Occur,Price,STRENGTH,Length)
它判斷轉折的依據是轉折點兩側是同樣的K棒數量 
這裡介紹一個新的內建函數,PivotHighVS (Occur,Price,LSTREN,RSTREN,Length)
它判斷轉折的依據是轉折點兩側可以是不同的K棒數量 (左1右2 ,或左 4右3...)

if EntryType = 1 then Begin
{指標反轉向下作空}
if MP <> -1 and PivotHighVS(1,CopPock,LStrength,RSTrength,6) <> -1 then Sell next bar at Lowest(Low,RSTrength) Stop ;

{指標反轉向上作多}
if MP <> 1 and PivotLowVS(1,CopPock,LStrength,RSTrength,6) <> -1 then Buy next bar at Highest(High,LSTrength) Stop ;
end;

{策略 2 : 當指標與均線交叉}
if EntryType = 2 then Begin
if MP <> 1 and CopPock Cross over Average(CopPock,AvgLen) then Buy next bar at Highest(High,RSTrength) stop ;
if MP <> -1 and CopPock Cross under Average(CopPock,AvgLen) then Sell next bar at Lowest(Low,LSTrength) 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;

{ 結算日增加 20150224 }
if IsBalanceDay or Date = 1150224 then setExitonClose ;

 策略1台指期 60 min K 留倉 交易期間 2004/12/31 ~ 2014/12/31 交易成本 1200
   策略2台指期 60 min K 留倉 交易期間 2004/12/31 ~ 2014/12/31 交易成本 1200
結論:雖然原作者設計的想法是從長線的動量觀點來作多,但對於策略開發者而言,可以從指標的變化走勢來設計進出場的參考點,並通過歷史回測來驗證可行性
MagicQS156

沒有留言:

張貼留言