2013年11月11日 星期一

簡單特別的交易系统 Part 1 (程式碼)

EasyTrader ArtNo 047
這個系統是個老美寫的,沒有參數,但是測試結果良好。它的基本邏輯是一天的交易過程,上半場是業餘隊的選手去戰場廝殺,下半場才是職業隊出場表演,剛好美股交易時間又長,所以每天就下半場的時間整點進場!

在紐約時間 13:00~16:05
如果市場價格高於昨天的收盤價格,以小時K線的收盤價做“多”。
如果市場價格低於昨天的收盤價格,以小時K線的收盤價做“空”。


這個系統還有一個濾網 Avgtruerange ,當濾網條件成立時, 一天之中只有四個點(可以交易),就是紐約時間的13:00,14:00,15:00,16:00。
程式碼如下
If Avgtruerange(35)>3 then begin
   If time >= 1300 and time < sess1endtime - 10 then begin
      If close>closeD(1) then buy this bar at close;
      If close<closeD(1) then sell this bar at close;
   End;
End;

不使用濾網在S&P500上的測試





有作國外指數期貨的可以試試看

我很好奇的轉到台指期並加了濾網參數與停損來試試 ( 15分K 2001~2013/10/31 留倉 ,來回成本 1200 )

程式碼{ for 15 min }
input:BarNo(3),ATR(50) ;
Value1 = StrtoNum(RightStr(NumtoStr(time,0),2)) ;

if time > 900 and (Value1 = 0 or Value1 = 15) {or Value1 = 30 or Value1 = 45 } then Begin
    if AvgTrueRange(BarNo) > ATR then Begin
       if Close > CloseD(1) then Buy ("Buy_ATR") next bar at Market ;
       if Close < CloseD(1) then Sell ("Sell_ATR") next bar at Market ;
    end;
end;

setStopLoss(40000) ;







測試結論:
1.每逢整點及15分時 ,若收盤價大於前日收盤時下根K棒開盤價作多,反之作空
2. 75%左右的交易發生在上半場 ,也就是在台指的戰場上,一開戰精英都出動了!


4 則留言:

  1. 請問這段語法 (Value1 = 0 or Value1 = 15) {or Value1 = 30 or Value1 = 45 }意思是說0900,0915,0930,0945的意思嗎?

    回覆刪除
  2. Hi
    先謝謝你的分享 這個網站我每天都來學習 謝謝你提供這麼多程式碼跟想法
    有一個問題是這程式沒有參數 但 Avgtruerange(35)>3 不就是參數嗎? 請問你怎麼看待他?
    請問版主的經驗如何避免Overfitting的問題? 參數三四個以下? 還有策略開發完成後 等個三個月才上線嗎?

    Have a good day^^

    回覆刪除
  3. 1. 按照這樣的邏輯所有策略都有參數 , 我不會花時間去討論這問題 ,重要的是原作者怎麼觀察到這現象 ,這才是重點
    2. 策略開發若嚴謹一些 ,可能事先將歷史資料區分樣本內外 ,樣本外要留多長就看自己調整囉 2 ~ 6個月都可以
    3. 我的觀念能順盤勢的策略 , overfitting 也不會掛掉 ,不順盤勢的策略 ,有沒有overfitting 都會掛掉

    回覆刪除