2015年3月16日 星期一

●(CCI) 順勢指標 [程式碼]

EasyTrader ArtNo 253
Commodity Channel Index (CCI) 順勢指標是由美國股市分析家 Donald Lambert 所創,由 CCI 的英文名稱己清楚說明,它最早是用於期貨市場,後在股票市場也被廣泛使用。CCI 假設期貨價格是有一定的週期性,把價格與股價平均區間的偏離程度以正負值在圖表上展示。
CCI不是以零軸來分界多空;CCI 率先引進了過濾線的使用,數據的+100/-100為兩條過濾線, 在這兩條過濾線之內歸類為盤整盤, 而行情超過了上下線, 則是偏激的多頭與空頭趨勢行情

CCI指標的運行區間也分為三類:+100以上為超買區,-100以下為超賣區,+100到-100之間為震蕩區。
當CCI > +100時,表明股價已經進入超買區間,股價的異動現象應多加關注。
當CCI < -100時,表明股價已經進入超賣區間,投資者可以逢低吸納股票。
當CCI 介於 +100 和 -100之間時表明股價處於窄幅振蕩整理的區間,投資者應以觀望為主。

測試程式碼
input:EntryType(1),ExitType(1);
inputs:NBarL(30),NBarS(27),TradeProfit(0.03),TradeStopLoss(0.04),ATRs_L(15),ATRs_S(10);
vars: IsBalanceDay(False),MP(0),PF(0),PL(0),HLRange(100);

inputs: CCILen(20), AvgLen(10),CCILenS(20), AvgLenS(10), HB(-100), LB(100), HighBar(4), LowBar(11);
Vars: AvgCCI(0),AvgCCISlow(0), BSetup(False), SSetup(False);

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 ;

{Calculation of Average CCI and determination of setup conditions}
AvgCCI = Average(CCI(CCILen), AvgLen);
AvgCCISlow = Average(CCI(CCILen), AvgLen*3);
BSetup = AvgCCI Crosses over HB;
SSetup = AvgCCI Crosses under LB;

{ 突破分界線 }
if EntryType = 1 then Begin
{Long Entry}
IF MP <> 1 and AvgCCI > HB AND MRO(BSetup, 5, 1) <> -1 Then
Buy Next Bar at Highest(High, HighBar)[1] Stop;

{Short Entry}
IF MP <> -1 and AvgCCI < LB AND MRO(SSetup,5, 1) <> -1 Then
Sell Next Bar at Lowest(Low, LowBar)[1] Stop;
end;

{長短均線交叉}

if EntryType = 2 then Begin
if MP <> 1 and AvgCCI Cross over AvgCCISlow then Buy next bar at Highest(High,Highbar) stop ;
if MP <> -1 and AvgCCI Cross under AvgCCISlow then Sell next bar at Lowest(Low,Lowbar) stop ;
end ;

{Exits}
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 ;

策略一台指期 60 min K 留倉 交易期間 2004/12/31 ~ 2014/12/31 交易成本 1200


策略二台指期 60 min K 留倉 交易期間 2004/12/31 ~ 2014/12/31 交易成本 1200


0 留言:

張貼留言

如果有私人問題想請教,請透過網站右方『與站長聯絡』之表單,謝謝!

----------------------------------------------------------------------------------------------------
網站聲明(Disclaimer)
本教學網站內所提供之程式碼(包括函數、指標、訊號)屬開放程式碼,用意在於讓使用者學習程式語法之撰寫,使用者可以任意修改語法內容並調整參數。本網站所有之內容(包括文章、影片、歷史紀錄、程式碼、教材)限用於個人學習使用,請勿轉寄、濫用,嚴禁私自串接帳戶交易。
-------------------------------------------------------------------------------------------------