本帖最後由 zxcmnb 於 13-7-30 15:24 編輯
不好意思因為最近工作比較忙, 所以拖稿了一陣子, 現在繼續補完上次沒說完的部分.
之前說過tradingBot分成兩種進場模式, 一種是checkin()另一種則是lowMcheckin(). 進場模式是用lowMFlag這個變數來決定. 詳細的算法就在checkin()裡面. 基本上就是當出現上漲/下跌的pattern, 但是摩台表現得卻不如台指時, checkin()就不會進場, 反而是設定lowMFlag來換成lowMcheckin()的模式.
lowMcheckin()的進場稍微複雜一點. 當切換成lowM模式以後, 會用兩個變數higho和lowo來計算現在的高低點. higho和lowo的起始值是分別是
higho = input + (10 * multiple);
lowo = input - (10 * multiple);
(變數multiple是在checkin()里根據目前的漲幅來決定的)
以上漲的pattern來說, 如果現在的價位大於lowo+Gapvolin而且價格也再創新高的話就買進; 相對的, 以下跌的pattern來說, 如果現在的價位小於higho-Gapvolin而且價格也再創新低的話就放空.
再來就是第三種進場模式checkSGXGapB(). (最近重看code, 發現自己上次漏看了這個). 這個進場模式比較簡單, 就是當checkin()或是lowMcheckin()的進場不成立的話, 就會進來檢查這個模式. checkSGXGapB()的進場非常簡單, 就是: 只要摩台的漲幅超過台指有SGXGapB=0.32%這麼多, 就買進. 反之摩台的跌幅超過台指0.32%, 就放空.
接下來tradingBot的出場呢... 其實如果進場的source code都看懂了的話, 出場也不會太難理解. 所以我就暫時先不寫了.
我比較想討論的是我們可以從tradingBot裡學到什麼呢? 我有一些看法:
1. 直接收tick data進來處理, 而不是一般人用的xx分k線.
2. 當沖交易不需要抓住每一個上漲/下跌的波段, 像是tradingBot就只在某些特定的高勝算pattern出現的時候才交易.
3. 摩台可能是一個台指的領先指標/濾網.
再來就是使用tradingBot之前, 應該要考慮和測試的事情:
1. tradingBot整個系統的參數非常多, 會不會有overfitting的問題. (或者應該問, 我們要怎麼不斷適應一直變化的市場).
2. 系統在急漲/急跌的時候發出訊號, 會不會有滑價的問題.
最後是tradingBot可以改進的地方:
1. 之前提過的, 就是下單和發訊息的code如果可以獨立出來的話, 交易策略應該會看起來比較精簡易讀.
2. 其實我對java不是很熟, 不過我對add()和getQueryModel()這兩個函數有些疑慮. 這兩個函數會把data一直在linked list和array之間互轉. 而且是每個tick都要做這件事. 在一般PC上跑可能沒什麼差, 但是我不太確定如果是在pi上跑的話, 會不會影響performance.
以上, 希望能有機會加入philipz大的公司服務~ |