應用程式/解決方案‎ > ‎雜記‎ > ‎專題‎ > ‎應用‎ > ‎

程式(自動)交易注意事項


玩家們利用KD設計各種策略進行回測,
往往覺得績效很好,但是實作的結果根本完全不一樣,
即便實作的過程中KD線圖與回測很好的時段幾乎一樣,
但是結果就是完全不同!

首先要看商品的交易方式是撮合還是逐筆,
如果是後者,沒有什麼好說的,絕對是比速度!
前者則是定時撮合儘可能符合委買委賣雙方可以產生最大的成交量

那麼為何實測總是和回測差異很大呢?
因為總是想買的價買不到,想賣的價沒賣出去,
不然就是滑價的結果導致買價偏高了,賣價偏低了...
這樣的績效結果當然就是和回測有天攘之別囉!

再來要瞭解掛單的方式是限價還是市價,
通常會以為限價就是想要用期望的價格去成交,
市價則是希望無論如何都能有成交優先...
而事實上限價和市價根本是相同的交易模式,
只是如果有漲跌停價的商品,
所謂市價其實就是以漲停價去買,以跌停價去賣,
沒有漲跌停價的商品則看券商的安控價位去處理,
其實就是看現價去加減一個趴數當漲跌停的意思

綜合前兩段,就會發現
1.以限價方式交易的,常常無法成交
2.以市價交易的,常常覺得滑價,所以成交的價位不理想

既然是要交易,總是要能成交才對吧!
因此,改善的方式就是以市價單的概念作限價交易
而安控的價位趴數由自己來決定...
當然買與賣的設定趴數可以不一樣...

所以要設幾趴好呢?
設很小或許績效(獲利百分比)很高,但是總成交金額低,也就是獲利也就低
如果設很大,總成交金額就會衝大,但是很少能保證是正績效的...也就是可能慘賠

如果採用的是有資訊(合併)減量的資訊來源,建議還是作波段吧!
程式(自動)交易只有省工的作用,並沒有太大的意義~
想賺的快,絕對是獲利的成交頻率要愈高愈好,
有的人認為是浪費手續費或稅,其實是錯誤的觀念!
因為一次進出的獲利原本就是把費用成本給考慮進去了,
同樣的100萬如果獲利是1%,能成功作1000次就能獲利1000萬
相同的時間,如果只能作出10次就只有獲利10萬,
如果這個時間是1年,對啦~後者還是比放定存好很多,
但如果是前者才會感到爽吧!

所以說如果是能賺錢的方式,
絕對是要考慮進出的次數而不是考慮費用的成本,
這樣有概念了嗎?!

那麼是否有更好的方式來決定自己的市價交易採用的限價內容呢?
當然是有的,就是委託簿囉! 也就是常說的最佳五檔或買賣十檔,
因此,市面上有所謂的超光速下單,
原理就是直接看委託簿上有沒想要的價位有委託量,
只要看到按下去就應該會成交的方式,
想要買,只要看賣價最便宜的點下去就買了...
當然,可能動作慢沒搶到,
權宜的方式就是看次便宜的價位是否仍符合期望,
可以直接按2檔甚至3~5檔的價位去交易...
只要出手快系統也快,可能仍然是成交在最便宜的一檔價位,
當然還是可能因為很搶手,連覺得有點不划算的五擋價下去搶都沒搶到,
因為量不夠又因為自己或系統速度慢還是被搶光光囉!

最後,要怎麼應用委託簿好呢?

由於撮合交易的委託簿呈現的是撮合或試撮後的結果內容,
而撮合要掛越高價買或越低價賣才會最被優先處理(同價量大的會優先),
但是成交則是在符合買賣方要求的最理想價位,
對買方來說買的便宜,對賣方來說賣比較高價,
這部分既然是要成交,用漲跌停價掛單當然會最優先,
這種撮合交易的機制,收到委託簿更新時考慮的是要不要撤單...
倘若委託簿上的價位已不理想就撤單囉!
如果已順利成交當然就無法撤單

逐筆交易的方式就是比快而已!
和撮合不一樣,撮合是先掛單後等委託簿更新決定要不要撤單,
逐筆則是要收到委託簿內容才決定要不要掛單去搶!!!
因為搶的到搶不到就是比速度而已,沒搶到單就是掛在那裡繼續等機會,
除非新的委託簿內容雖然價格較差,但仍符合想要的策略價位,那就繼續搶單委託了~
這裡完全沒有撮合機制那種用價位去搶的概念,所以千萬不要用什麼市價單去掛,切記阿!!!

很多人往往計較下單速度差個幾十幾百ms,卻忘了報價速度慢比別人晚觸發...
而下單只是一家一家券商的資料量,行情則是整個市場的資料量,
因此行情慢的系統往往延遲500ms以上甚至到幾秒,
還有那種會在快市搶寶時系統卡住的就不說了~
如果有心去作事後分析的話,從Tick就會發現下單再快也沒用!
希望的觸發點,想要的價位明明都有成交量...偏偏都不是自己的單,
所以報價慢就輸在起跑點了,好的時機往往不是沒參與到就是滑價香菇了!

如果看懂了就知道行情的速度非常重要,
尤其逐筆交易的方式最佳買賣價是很重要的!
而要更有效率的成交,五檔十檔就明顯很重要了!!
市場的量就那樣而已~
大家都要搶,搶不到就沒用, 回測的結果根本沒太大的參考意義!

懂了嗎? 懂了嗎? 懂了嗎?

然後, 有個更重要的觀念!!!
線圖是人工觀察所需要的操作工具,目前的一些策略軟體都是完完全全的本末倒置!
程式交易只需要程式運行策略,程式運作本身是不需要任何線圖去觀察的,
而是各種公式與數據搭配一堆邏輯去作一些關聯與觸發~
所以程式自動交易本身就必須是一個下單機同時收行情跑策略並且下單,
如果是透過任何報價軟體或線圖介面銜接才能完成前述動作的架構,其本身設計邏輯就是錯的!
也就是報價或線圖的工具或元件必須是一個peek概念的側接功能,完全不影響收行情到下單的運作流程~
就像網路上的監聽程式,或是如同文章擷取RMDS的資料作即時分析中所使用到的手法,
於某些架構中會有所謂的Repeter,線圖報價的功能透過Repeter獨自運作~
當然,如果沒有成本考量,沒有頻寬限制,行情源服務承擔的起,直接收兩份資料也並無不可,
所要強調的是平行作業,而不是串聯運作!

KD也有等級之分,如果完整KD包含時間/開/高/低/收/量,因為量的因素,
即時的那根KD必須每筆成交Tick也皆同時更新,也就是訊號的次數必須與Tick相同!
因此如果報價源是直接提供KD的,要把每筆訊號記錄比對Tick,就知道是否有偷雞,
如果是User端透過Tick即時組成KD的,
可由收到Tick的時間與Tick提供的時間來比較,觀察延遲的現象是否嚴重,
而最後都要與交易所提供的完整Tick去比對,確認所用的資訊源是否夠完整,
特別是外期,國內有PATS和路透與DMA,
其中PATS併筆非常嚴重,不僅漏量還可能漏價;
而路透與DMA則特別容易於快市時有延遲的現象,
以SGX為例, 可由官網(time_sales)下載到最近5個交易日的完整Tick明細,
將自己收到的逐筆時間與資料和官網下載的資料比對就能知道所用的行情源品質如何了~

早在更久之前預見雜誌就曾報導報價是所有交易策略之母,撇開內文針對某行情源的置入性行銷,
大部分其中所述內容是值得參考的,常提到的三大國際報價商應屬路透為其中佼佼者,只是費用特別昂貴,
於實戰經驗中,其實路透也有很多問題和狀況會發生,因此每每和GMDS/DMA作比對,再由交易所作確認,
已經多次發現路透行情有誤,等路透查明原因就需花費許多時日,若要排入修正更是漫長等待,
因此以GMDS/RMDS方式的架構能最快符合應用需求,而GMDS/DMA的架構更是獲得交易所認證的優秀平台,
GMDS架構精簡,單一主機就能完整接收處理CME Group的所有channels行情,
同樣的在應於路透行情的架構上更是完美,見證過的人都對其行情的即時性覺得不可思議~
弄過DMA與路透,回頭看IDC/iPower根本就沒什麼,RawData特別大而已,內容確實是比路透遜多了...
而在同等的資訊量同步所需要的頻寬,GMDS僅需路透的一半,若是對比IDC更只需要15%不到!

很多產品提到商品檔數說可以200檔就好像很了不起,但國內老牌有個產品其實就直接給3萬檔的商品了~
如果去看CME Group就知道會有上百萬檔商品要處理,當然也可以各別channel篩選降低同時處理的商品數量,
不過GMDS因為有優異的演算處理法,因此可以將所有channel統一集中處理,更能用簡單的介面監視所有相關運作狀態,
同樣的道理,GMDS所提供的DDE應用產品自然是比其他產品的RTD或API更快更穩定,而這真的沒什麼好奇怪的!
另外RTD比DDE快嗎? 我們可以看看IB所給的訊息Excel APIs
所以RTD只是設計來避免因為各種操作介面的因素所造成的資料遺漏而已,別再被一些誇大不實的商品宣傳給愚惑了!
是快是慢還是取決於實際提供RTD/DDE的軟體到底是怎麼設計的,如果IB只給250ms那麼就是最快只有250ms了~

附帶一提:
別再傻傻的靠KD訊號下單了,委買賣的訊號更重要,而KD無法跟Tick同等速度更新的也別用,
假如Tick/KD都作不好無法足夠即時的那就也別妄想其委買賣訊號會比較好,
因為連Tick都偷工,委買賣更是會被大減料(想想台期所就已經偷工減料過~ 完全與CMEG逐筆委託方式不能比!)
所以如果報價源是這類的,還是玩玩回測的遊戲就好了! 程式交易可能股票用競價的還比較安全~

然後說說下單機, 相信都已經在寫策略語言, 要開始寫些小程式應該不難才是,
下單自動化勢必要依賴各家券商提供的API, 雖然每家的設計都不一樣, 不過有共同點就是都很難用,
而這些API難用的原因簡單的說就是開發工具與執行環境的依賴度高, 因此下單機大多難以整合的很好,
不過已經有越來越多人發現, 與其用下單機還不如看自己在哪家下單, 使用該券商的API自己寫對應動作會更容易,
然後當然會發現券商API也提供行情, 只要有好用的QM, 最後根本就不需要任何看盤和策略的軟體了!
所以若接觸過GMDS架構就會知道可以用獨特引擎所設計高效率而簡單易用的QMSTM
由於用法都跟Windows API一模一樣, 且只要OS(XP~Win10)裝好就能用了, 不用管什麼轉散發還是哪版搭NET啦!
很容易的就能收納管理各種資料以供調用與隨時更新, 進而快速發展出各種應用與需求,
那麼回測也是可以自己來, 如同網路上的見證, 自己寫的總是比較快!!
最後如果得道就別再用傻瓜軟體, 既浪費時間又難以核實, 真真是糟蹋生命了...

回歸最基本的定義來看逐筆交易下的市價委託,
 撮合順序 - 市價委託優先於限價委託
 市價買進 - 以 最新成交價、買單限價、賣單限價 3者之中取最高
 市價賣出 - 以 最新成交價、買單限價、賣單限價 3者之中取最低
看到第一點撮合順序為市價委託優先於限價, 很多說法都會強調用市價比較好,
可惜, 逐筆交易的精髓是以速度快者優先, 不論市價還是限價都是先到先成交, 成交速度越快越好
再者, 市價欲成交必須參考 最新成交價、買單限價、賣單限價 也就是限價單可以左右成交的行情結果
那麼可以預測的到 市價單將被一些策略組合下單給宰殺,
所以, 明明委託簿最佳買賣價就掛在那邊可以參考, 又何必用市價而增加風險呢!

註解