2013年12月4日 星期三

艾達透視指標 Elder Ray 交易模型 Part 2 (程式碼)

EasyTrader ArtNo 066
根據原始程式碼,分別使用日K與 30分K先作了歷史回測,
基本設定為 台指期留倉策略 回測日期 2001/1 ~2013/10/31 來回成本 1200




雖然不是很好,但不代表不行,尤其 30分K在前面的450次交易的績效看起來是不錯的!接下來我們就開始一起測試開發新策略之旅

首先,將結算日平倉加到策略裡 ,並加上可能要用到的參數,略作修改後

測試程式碼:
inputs:BaseLen(10),RefLen(60),TradeProfit(0.05),TradeStopLoss(0.03),HighBand(200),LowBand(200),UpBand(0),DnBand(0);
Vars:HighOsc(0),LowOsc(0),CloseAvg(0),BuySetup(false),SellSetup(false),MP(0),IsBalanceDay(False);
Vars:PFpoint(0),LossPoint(0),HL(0) ;

PFPoint = AvgPrice*TradeProfit ;
LossPoint = AvgPrice*TradeStopLoss ;

MP = MarketPosition ;

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

HighOsc = High - Xaverage(High,BaseLen) ;
LowOsc = Low - Xaverage(Low,BaseLen) ;
CloseAvg = Xaverage(Close,RefLen) ;

BuySetup = CloseAvg > CloseAvg[1] and Close > CloseAvg and LowOsc < -DnBand ;
SellSetup = CloseAvg < CloseAvg[1] and Close < CloseAvg and HighOsc > UpBand ;

if BuySetup and LowOsc > LowOsc[1] then Buy ("HB") next bar at Market ;
if MP = 1 then begin
{Sell} ExitLong ("LTrailStop") next bar at Close-(LossPoint) stop ; {出場1}

if HighOsc Cross Under UpBand then {Sell} ExitLong ("LTiming") next bar at Market ;
end; {出場 2}

if SellSetup and HighOSc < HighOsc[1] then Sell ("LS") next bar at Market;

if MP = -1 then Begin
{Buy} ExitShort ("StrailStop") next bar at Close+(LossPoint) stop ; {出場1}
if LowOsc Cross Over -DnBand then {Buy} ExitShort ("STiming") next bar at Market ;
end; {出場 2}

if IsBalanceDay then SetExitonClose ;

以下為四種不同進出場方式在不同週期的表現










觀察現象:
1.國外的策略作台指期的測試需要作一些調整
2.日K的 PF值都還不錯(交易次數少了一些)
3.30分K果然在進出場方式調整後有不錯的表現(交易次數多了一點)
4.再次驗證勝率跟獲利不一定是成正比的,30分K策略是屬於吃大賠小

3 則留言:

  1. 版主您好^^
    請教一下: {出場1}的位置為Close-(LossPoint) stop ; 是代表甚麼意思? 當LossPoint初始值為零,這樣有移動停利的效果嗎?

    回覆刪除
  2. 既然是移動停利 , Losspoint就不會是 0 ,程式一開始 LossPoint = AvgPrice*TradeStopLoss ;

    回覆刪除