五、回朔測試與真實交易系統
回朔測試模擬真實市場交易情境,整合了交易策略、計算指標運算、交易所與券商訂單管理功能、投資組合管理(portfolio-manage) 、即時部位權益數狀態分析(可動用資金、淨值、損益分析),這樣的即時系統需把歷史資料一筆筆掃瞄,更新訂單spool狀態,投資組合管理最新統計資訊,運算策略產生交易信號。AB的環境之下發展真實AT交易系統模組整合接收最新報價、運行交易策略、處理訂單,說明群益報價、下單及成交回報API建置此系統
l接收即時資料,更新至AB的資料庫。報價API以non-blocking方式監看伺服器,有資料到達時,callback方式至使用者函式,callback函式註冊是保存函式進入點至指標變數供回調呼叫,API那端回調時可以經由working thread直接跳至或訊息通知UI thread進入,群益所有的回調都是佔用main UI thread。
l下單應該在成交回報連線狀態正常之下才允許進行,足以監看由AFL操作訂單之後的訂單狀態改變。成交回報也由單一支working thread監看連線,有新成交回報產生,跳入Callback函式更新本地端訂單spool,同樣地成交回報的回調函式執行緒角色亦為UI thread。
l報價、下單、成交回報均運行於main UI thread,已經避免掉multi-thread帶來的變數資料讀寫存取同步問題,但相對來說這三大動作佔用的執行時間配置就變得相當重要。
l手動啟動AT,以AFL運行於scan或filter,勾選AA視窗上”run every xxx”,AB的AT觸發架構無法與接收即時資料整合在同個流程下,而是在UI thread下設置一個timer事件,每次執行用靜態記下最新tick資料的日期時間與BarCount。
lAT連續2次AFL時間間隔,掛單、刪改單需讓本地端訂單spool與券商、交易所端訂單狀態同步,計算最新權益數。
l盤後離線時所有開倉和已平倉之交易保存匯出,投資組合管理軟體匯進報價,進行投資部位效益衡量因子分析(淨值變化、獲利期望值、勝率)。這種報告用來當作中長財務資金投資規劃,用以檢驗成效紀錄。
l系統當機或異常危機處理(含人工輔助)
Reference:
[1] Porfolio Backtester Interface Reference Guide
[2] http://www.amibroker.com/kb/category/afl/custom-backtest/
[3] http://www.amibroker.com/docs/Houston2.pdf
[4] Portfolio-level backtesting
[5] Back-testing your trading ideas
[6] Backtesting systems for futures contracts
|