2015年10月13日 星期二

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

EasyTrader ArtNo 277
在股市中有趨勢行情與盤整行情,有70%的時間都在盤整行情,而30%的時間才是趨勢行情,趨勢的形成和改變都不會是一朝一夕形成的,所以趨勢要轉向也不會馬上就掉頭。
趨勢線表明當股價向其固定方向移動時,它非常有可能沿著這條線繼續移動。
(1)當上升趨向線跌破時,就是一個出貨訊號。在沒有跌破之前,上升趨向線就是每一次回落的支持。
(2)當下降趨向線突破時,就是一個入貨訊號。在沒升破之前,下降趨向線就是每一次回升的阻力。
(3)一種股票隨著固定的趨勢移動時間愈久,就趨勢愈是可靠。
(4)在長期上升趨勢中,每一個變動都比改正變動的成交量高,當有非常高的成交量出現時,這可能為中期變動終了的信號,緊隨著而來的將是反轉趨勢。
我們今天要來介紹在 S&C Magazine 由 M.H. Pee 所發表文章 "Trend Continuation Factor" 所提出
的策略元素概念 TCF 所發展的簡單策略。 原始文章連結

指標程式碼
inputs:Length(35);
vars:Change(0),PlusChange(0),MinusChange(0),PlusCF(0),MinusCF(0),PlusTCF(0),MinusTCF(0) ;
Change = Close - Close[1] ;
PlusChange = iff( Change > 0, Change, 0 ) ;
MinusChange = iff( Change < 0, -Change, 0 ) ;
PlusCF = iff( PlusChange = 0, 0, PlusChange + PlusCF[1] ) ;
MinusCF = iff( MinusChange = 0, 0, MinusChange + MinusCF[1] ) ;
PlusTCF = Summation( PlusChange - MinusCF, Length ) ;
MinusTCF = Summation( MinusChange - PlusCF, Length ) ;

Plot1(PlusTCF,"Plus") ;
Plot2(MinusTCF,"Minus") ;
Plot3(0,"Zero") ;

而根據指標所顯示的圖型,我改用了正負向動能趨勢交叉的方式作進場

{系統參數與變數} 
input:EntryType(2),ExitType(1);
inputs:NBarL(6),NBarS(9),TradeProfit(0.05),TradeStopLoss(0.02),ATRs_L(14),ATRs_S(12);
vars:IsBalanceDay(False),MP(0),PF(0),PL(0);
inputs:LenA(24),LenB(2),Upper(-300),Down(200),AvgLen1(5),AvgLen2(8),HighBar(4),LowBar(18) ;
vars:Change(0),PlusChange(0),MinusChange(0),PlusCF(0),MinusCF(0),PlusTCF(0),MinusTCF(0),PlusTCFA(0),MinusTCFB(0),MyVol(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 ;

{ 以收盤價漲跌作為趨勢方向計算基礎 }
Change = Close - Close[1] ;
PlusChange = iff( Change > 0, Change, 0 ) ;
MinusChange = iff( Change < 0, -Change, 0 ) ;

{分別累加漲跌量}
PlusCF = iff( PlusChange = 0, 0, PlusChange + PlusCF[1] ) ;
MinusCF = iff( MinusChange = 0, 0, MinusChange + MinusCF[1] ) ;

{計算期間內當根K棒漲跌值與累加量的差距加總 - 使用相同週期}
PlusTCF = Summation( PlusChange - MinusCF, LenA ) ;
MinusTCF = Summation( MinusChange - PlusCF, LenA ) ;

{計算期間內當根K棒漲跌值與累加量的差距加總 - 使用不同週期}
PlusTCFA = Summation( PlusChange - MinusCF, LenA ) ;
MinusTCFB = Summation( MinusChange - PlusCF, LenB ) ;

if EntryType = 1 then Begin
當正向趨勢動能在大於區間線 Upper狀態,突破近期高點進場作多
if MP <> 1 and PlusTCF > Upper then Buy next bar at Highest(High,HighBar) stop ;

當正向趨勢動能在小於區間線 Down 狀態,跌破近期低點進場作空
if MP <> -1 and MinusTCF > Down then Sell next bar at Lowest(Low,LowBar) stop ;
end;

if EntryType = 2 then Begin
當正向趨勢動能在大於區間線 Upper狀態向上突破負向趨勢動能進場作多
if MP <> 1 and PlusTCFA Cross over MinusTCFB and PlusTCFA > Upper then Buy next bar at Highest(High,HighBar) stop ;

當正向趨勢動能在小於區間線 Down 狀態向下跌破負向趨勢動能進場作空
if MP <> -1 and PlusTCFA Cross under MinusTCFB and MinusTCFB < Down 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 ;
台指期 30 min K 多空留倉 交易週期 2005/6/30~ 2015/6/30 交易成本 1200


結論:通常我們應用資料作計算時都只是往前追溯一小段期間來引用,TCF的趨勢延伸概念則是將 PlusCF 與 MinusCF 從第一根K棒開始累加計算引用,再與實時的K棒表現作比較,而績效回測也有一定的穩定性。
MagicQS185

8 則留言:

  1. 好棒的趨勢線概念!
    感謝Egale老師的分享.

    回覆刪除
  2. 請教Egale老師, Entry Type 1,2... and Exit Type 1,2... 的內容是什麼?

    回覆刪除
  3. if EntryType = 1 then Begin
    if MP <> 1 and PlusTCF > Upper then Buy next bar at Highest(High,HighBar) stop ;
    if MP <> -1 and MinusTCF > Down then Sell next bar at Lowest(Low,LowBar) stop ;
    end;

    在 begin 後面開始的資料就是 EntryType = N 的內容

    回覆刪除
  4. 請教老師,有關"如意多空網"的問題. 要如何才能取得"如意多空網"程式碼? 我是想了解濾網的架構與精神.

    回覆刪除
  5. jacky58.lu@msa.hinet.net
    謝謝老師

    回覆刪除
  6. 閱讀老師的文章讓我這個新手眼界大開、獲益匪淺,請問老師我也可以索取多空如意網的程式碼來學習嗎?我的email是linchengyuan1985@gmail.com,謝謝老師!

    回覆刪除