SamJiang 發表於 18-6-20 18:51

請問~~怎樣進行自動換月?

本帖最後由 SamJiang 於 18-6-20 18:51 編輯

每年 6~8月的密集除權息季節,台指期的近月和遠月都有很大的價位差。
如果不做當沖而做波段策略的話,在MC上,要怎樣進行自動換月呢?

以多倉為例。手動換月的標準動作是:在到期日,當月(即舊月)收盤前的某個時間點,如 13:25,Sell 近月(FTX1),Buy 遠月(FTX2)。
而買到的「遠月」到了明天就會自動成為近月。

到期日有程式碼可以自動判斷。13:25,Sell 近月(FTX1)也沒有問題。問題在:怎樣在 13:25,Buy 遠月(FTX2)?

困惑中....

請問前輩們,您是怎麼解決的?可以開示一下嗎?



PS:到期日的次日開盤附近,再以市價買進新月,也不是不可以。不過,總是覺得不是理想的波段單換月程序。

easytrader788 發表於 18-6-20 20:40

If 結算日 and time >=1330 then begin
   If 多單 then buy next bar at market ;
   If 空單 then sellshort next bar at market ;
End;

SamJiang 發表於 18-6-21 07:12

感謝E大的快速回應及指導。

結算日舊月收盤時間是1335。
對5分鐘以上的週期, “結算日 and time >=1330” 的條件的確可以換到新月。
不過,這樣似乎是換到新月的次日開盤價。
如果交易時段設成「標準」,則可以換到新月於結算日當天T+1盤的15:00的開盤價。
這應該是最簡單的自動換月方法了。

感恩!

SamJiang 發表於 18-6-21 09:08

一個良心的小提醒:

除權息季節,新月會向下大幅跳空。例如昨天舊月收10936,今天新月開10725,連續圖「向下跳空」了 211點。而以7月台指來看,昨收10736,只向下11點!
(我有點懷疑,這是因為沒經驗的程式交易碼,以台指連績月為策略基礎而下的市價空單所致。不會剛好就是你的程式單吧?^_^ )

另外,換月前改看新月的圖,而不是用連續圖可能比較好。只是這樣不適合進行長期的歷史回測,也不適合程式全自動下單。

所以,「看加權做台指期」可能是程式自動交易的唯一選項了。

程式碼沒注意到這一點,又沒注意到換月的問題的話,別怪實際下單與回測的結果不符喲!

SamJiang 發表於 18-6-21 16:30

SamJiang 發表於 18-6-21 07:12
感謝E大的快速回應及指導。

結算日舊月收盤時間是1335。


我搞錯了,結算日舊月收盤時間不是1335,而是1330。
所以,E大的那個條件「結算日 and time >=1330 then... 」,完全正確。
適合所有的K線週期。


這讓我想起:如果能把新月資料由結算日的1330,開始和舊月串接起來,
而不是目前的次日開盤才串接起來,
那麼,換月的回測和實際下單,就都能輕易地無縫接軌了。


有這樣的連續月串接方式嗎?


SamJiang 發表於 18-7-2 15:38

找到比較理想的換月方法了~~~!
(以下仍以多單換倉為例。)
前面所述的方法及E大的程式碼,在舊月出場後,新月只能在次月才能買到。

手動理想換月方式是希望能夠:
在舊月到期日,近月(即舊月)收盤前的某個時間點,如 12:00~13:25,Sell 近月(FTX1),Buy 遠月(FTX2)。

由於牽涉到新舊月兩個商品的串接,MC程式碼似乎無法用一個視窗做到上述要求。


但是可以用MC的下單機做到這個要求,也就是自行設定轉倉的時間點,如圖片所示。
下單機就會在設定的時間點自動將舊月轉倉到新月。

但是,要注意幾件事:
(1)在MC訊號腳本中,確認訊號在所設的自動轉倉時間點之前,不要有 Sell 舊月的換月平倉動作。
    (2)要小心換新月之後,不會當天立即出現新月出場的條件。所以,越靠近13:30,這種情況越可避免。
    (3)次日,出場條件的資料要使用新月商品於換月日之前的資料,也就是FTX2在到期日之前的資料,以避免新舊月的價差影響進出場的條件判斷值。
    (4)下單機只適用於換月的當下,回測時不會生效。因此,回測時,還是要參考上面E大的程式碼。

以上是「比較理想」的換月方法。
之所以不理想,是因為回測時,仍有到期日新月換倉價與次日新月開盤價的價差,造成回測誤差的問題。

程式碼中,可以知道這個價差的值。
但是要怎樣將這個價差值,放進績效的回測之中呢?
有高手可以指點一下嗎?感恩!


如果可以的話,換月就百分百理想了。
頁: [1]
查看完整版本: 請問~~怎樣進行自動換月?