2012年7月20日 星期五
Open tomorrow 下的資訊更新時間
這個標題大概是會讓多數讀者直接跳過吧,也許多數人根本都用不到這個東西。不過,我還是會把我在程式交易這條路上碰到的各種狀況在不損害我自己的前提下分享出來。
什麼是 Open tomorrow?簡單講就是把還沒發生的下一根K棒的開盤價,拿來做條件判斷或是價位計算,過去有發表過一篇相關的「」。
結算後的第一天,按照我在策略程式中的設計,應該要在開盤的時候,把昨天參與結算的部位給建回來,理由可參考「」。不過,我發現了一點點的問題...
我們來做個實驗,寫一段程式碼如下。從 Print 出來的資訊來看,很明顯在結算日最後一根,marketposition 的資訊是沒有因為 setexitonclose 而"即時"更新的,它還停留在 多單 的狀態,而這是正常或說是我們習慣的,因為 MultiCharts 是必須要等到"換棒"時才會更新資訊的。
接著我要把 Open tomorrow 引進來,程式碼如下。從 Print 的訊息看到,在結算日最後這一根的 marketposition 竟然變成了...零!從這個反應,我假設程式碼裡如果引進了 Open tomorrow 會讓資訊往前提早到K棒的收盤就更新而不是等到換棒的時候。只不過這對我要處理跨月換倉帶來了麻煩~
Open tomorrow 引進會讓資訊的更新從換棒提前到K棒的收盤(我推測的),因此我將不能沿用一般處理系統部位跨月換倉的方式,因為結算日的最後一根都會因為 setexitonclose 而且在收盤就更新資訊而使 marketposition=0,造成無法判斷隔天開盤應該要建立的是多單還是空單,或是...本來就空手。因此,我嘗試著把記錄 marketposition 與部位數量的時間往前移一根,結算日的倒數第二根。程式碼如下。
我取用這個實驗的程式碼是有用意的,因為如果在結算日的最後一根K棒沒有發生交易動作的話,引進 Open tomorrow 其實不會產生困擾只要把要取用來給隔天開盤建倉的資訊從最後一根往前移一根就好了。但是如果就剛好在這一根翻單呢?就像這裡所實驗的例子,本來是多單而剛好在最後一根翻單了呢?
一旦引進 Open tomorrow 的話,取最後一根的資訊會得到真正的即時資訊,讓我無法在結算日隔天延續部位(方向與數量都因 setexitonclose 都是零)。而取用前一根的資訊則會如果就剛巧最後一根K棒有動作的話,造成資訊落後而錯誤!到目前,我還沒想到解決之道。
結論:如果交易策略的程式碼需要引入 Open tomorrow 的話,首先必須知道資訊更新的時間不同。再來,為了兼顧我不要回測報表有灌水的因素,我選擇結算日一樣收盤出場,之後則等待新訊號再進場了。
ps. 你的策略回測有沒有灌水?
熱門文章
-
在 MultiCharts 或是 TradeStation 中都有 Set開頭的一些指令可以運用,比如 停損─SetStopLoss、停利─SetProfitTarget,這些都是所謂的 ThisBar 模式運作的特殊指令,它們讓你在條件成立的當根K棒就可以做出對應動作,而不是一...
-
在 MultiCharts 裡,本來我以為 EntryPrice(0) 就代表了最後一個進場的成本價,經過測試後,確定了 EntryPrice( 0 ) 不是最後一次進場價,而是最後進場方向的第一筆價格(可查閱"程式交易語法大全 page 255")。什麼意思...
-
殷鑑不遠。這是 2019/07/03 的台指期貨,在大約 10來秒的時間之中,台指閃崩了近 500點,並且快速回復。這樣類似的事件,在台指不是空前,也不會絕後,即使台灣期貨交易所有所謂的動態穩定機制在運作,這一天,據我所聽聞到也有不少友人在這很短的時間內... 中槍了。這裡,我們...
-
在 myCTA 的基礎上,我有把這個基礎擴展到多商品,過去曾經有極為少數的幾位朋友上過 myCTA 多商品版本的的課程(當時取名為 SmartCTA),但後來就不再開課,coding 難度實在太高了~ 因為要交易多商品,造成在下單設定上的困擾。當你要同時交易 50、100、20...