2020年3月17日 星期二

有報價(Quote)與有交易(Trade)的差別

一般來說,有報價(Quote)不一定能交易(Trade),也就是可交易時間(Trading Hours)是比你能看到的時間來的少一些。

通常來說,這段時間不會太長,主要是來自於券商的限制。例如剛開盤的 5到 15 分鐘,券商不允許你交易,但是仍然有報價。也因此,交易程式的雛型一旦開發完成,就會開始著手分拆的動作。

也有一個情形,是券商那邊系統有問題,造成市場有報價但你不能交易,這有可能發生在 demo account 喔!大家在模擬交易的時候要小心,模擬交易的處理 priority 是比real server 低的。 

Quote 與 Trade 和交易程式的寫法

所以根據 Quote 和 Trade 的本質上的不同,最終我們應該把交易程式中許多錯誤處理(Error Handling)以及監控反饋(Monitoring)的程式,拆出來變成獨立的一個 program ,在 MT 中就是額外的 EA。

這個 EA 可以在有 Quote 的時候就開始著手準備一些處理,雖然他不能立即對交易採取什麼動作,但至少他可以寫檔案、傳訊息等,而 Trading EA 還是在等待交易時間在繼續執行他的邏輯。


這會有助於你把外匯的交易程式,搬到其他標的上面,例如原物料和指數期貨,因為除了外匯標的,通常其他標的有更多複雜的條件(例如原物料晚上會停 1 小時,指數中間會停 1 小時,有一些假日會有 Quote 但不能 Trade。)

關於 Quote Data 與 Trade Data

同時你也要留意到,既然根據券商本身的差異,會造成 Quote 與 Trade 有差別,那麼在歷史資料的回測上面,你是在 Quote Data 和 Trade Data 上面回測也會有些許差異。

一般來說,如果你沒有 Trade Data 的話才會用 Quote Data,再怎麼糟糕我覺得還是要有 Trade Data,資料來源可能不是你最後交易的券商,但是你用 Trade Data 至少能在一定程度保證你的 Close Price 是比較正確的,而 High/Low 可能根據券商會有些微差異。

所以這也提醒你,如果必要可以優先使用 Applied 到 Close 價格的指標或分析,而非應用於 High/Low 的(例如大多數形態學都是以 High/Low 為主,資料切換就會有很大影響)
 

你不需要一開始寫交易程式就想到這件事情,而是隨著你的交易程式開始成熟,你開始大量地使用他,你為了讓他更穩定,你開始要對裡面的一些邏輯做一些技術性的調整,以及對應真實市場機制採取一種特別的程式架構。

沒有留言:

張貼留言