2013年12月30日 星期一

★ 最高價與最低價的交易策略 + 如意多空網 (程式碼)

EasyTrader ArtNo 086
隨著不斷練習開發策略的過程愈長,在不同時期內對同樣的策略也會有不同的想法,前一陣子讀了 Larry Williams 短線交易策略後,看到書中對於每日商品的價格所作的觀察與數據收集,確實了解這些研究是有其一定的意義存在!

過去在 Wen 大的部落格看到一篇程式失效前的潛在獲利,它是一個以當日(最高價-最低價) 大於開盤價的某個比例當作下一根K棒的買賣信號點位,也可以解讀為 K棒型態學的進出場方式,可惜的是在 2012/04 以後的表現,光芒不再!

原始程式碼 2001/1~ 2013/10/31 台指期 日K 交易成本 1200 結果如下圖



原始程式加上如意多空網不改參數的結果,交易次數降低約一半, MDD也下降約 30%



有許多讀者詢問有關如意多空網在不同週期的應用狀況,我就以這個當作應用範例作不同週期的測試,為了方便比較,我對原始程式作了一些修改

測試程式碼
inputs:Ratio(0.0115),TradeProfit(0.05),TradeStopLoss(0.03),NBarL(2),NBarS(2),TimeFrame(0),Type(1) ;
Vars:IsBalanceDay(False),MP(0),PF(0),PL(0),BuyPoint(99999),BuyExit(0),SellPoint(0),SellExit(0),TimeValue(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 ;

if DataComPression <= 1 then Begin
{ 分K週期內取用日K}
   if TimeFrame = 0 then Begin
      if HighD(0) - lowD(0)>= Ratio * OpenD(0) and CloseD(0) - OpenD(0) < 0 then begin
         BuyPoint = HighD(0) ;
         BuyExit = LowD(0) ;
      end;
     if HighD(0) - lowD(0) >= Ratio * OpenD(0) and CloseD(0) - OpenD(0) > 0 then begin
        SellPoint = LOWD(0);
        SellExit = HighD(0) ;
    end;
  end;
end else Begin
    if High - low>= Ratio * Open and Close - Open < 0 then begin
        BuyPoint = High ;
        BuyExit = Low ;
    end;
    if High - low >= Ratio * Open and Close - Open > 0 then begin
       SellPoint = LOW;
       SellExit = High ;
    end;

end;

if _MagicQF001(1) > 0 and MP <= 0 then begin
   buy next bar at BuyPoint+1 stop ;
   exitshort next bar at SellExit stop;
end;

if _MagicQF001(1) < 0 and MP >= 0 then begin
   sell next bar at SellPoint-1 stop ;
   exitlong next bar at BuyExit stop;
end;


{SetProfitTarget(PF * BigPointValue) ;}
SetStopLoss(PL * BigPointValue) ;

if Type = 1 then setProfitTarget(PF * BigPointValue) ;

if Type = 2 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 Type = 3 then Begin
   SetProfitTarget(PF * BigPointValue) ;
   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 IsBalanceDay then setExitonClose ;

紅字 _MagicQF001(1) 為如意多空網

藍字部份為原始程式主邏輯,其他部份為測試加上去的(進場/出場規則組合 TimeFrame/Type)

TimeFrame 0 為日K ,1為 60分K ,2為 30分K , 3為 15分K
0/0 : 日K + Type 0 (只有停損)
0/1 : 日K + Type1 (停利 + 停損)
0/2 : 日K + Type2 (停損 + N根 Bar 出場 )
















如意多空網在不同週期的應用上,也都有相當不錯的表現!!
MagicQS031

2 則留言:

  1. EasyTrader您好,還想請問您這篇文章中的進場規則3大概是如何修改原始進場條件的?是加上什麼特殊綠網嗎? 感謝您。

    回覆刪除
  2. 加上如意多空網 ,以及參照不同週期資料產生的

    回覆刪除