一個盤後的下午,電話那頭響起,一接起是從沒聽過陌生的聲音……

對方那頭說道:「賬戶送單刪單太頻繁,超過每秒2單,因為是首次,口頭警告,第二次直接Ban ID……」

溫斌老師是MC多年的低調客戶,詢問個人資料,溫斌老師總是謙虛的回應自己只是一名始終在想演算法的程序猿,讓我們來看看溫斌老師的HFT歷程。

我的Coding歷程

最開始是想業餘時間偷懶,如今的計算機行業這麼發達,我是不是可以把自己的想法丟給計算機?然後才發現自己進了一個更大的坑。(笑)

有了想法就動手干,開始在網路上找各種程序化的商用軟體,接觸的包括TB,麥語言,但是使用過後總感覺不太理想。

我後來搜索國外的軟體知道有TradeStation,下了各種試用版本,後來準備都開始交易美股了,才摸到了MC。

這其實在搜尋軟體和開發平台的時候,我就已經走了一條彎路,再後來就摸瓜到了MC,就開始全力的以MC作為自己的主力開發平台。

(實盤代碼執行圖)

跳出舒適區 —— HFT

在盯著更多交易窗口和更多的交易曲線,我每天看著K線的漲漲跌跌,我一直很想知道到底是什麼力量和原因來控制它的漲跌的。

我開了DOM窗口,看著數據在跳動,一會有一筆大買單掃掉了所有的賣單,行情報價上去了1 tick,然後又一筆買單掃掉了Ask Size,然後價格又上去了1 tick。

其實就這麼簡單也真的很簡單 — 在這個價格有多少人賣,有多少人買,買的多上漲,賣的多下跌,這就產生了HFT的一種策略最核心的設計思想和思路 Order Book。

跟蹤分析自己手裡這份交易所order book鏡像的變化,來制定交易策略,是高頻交易演算法的核心思想。

(實盤代碼執行圖)

什麼是HFT?

如何定義高頻交易 — 簡單來說,只要速度快的,時間短的都可以叫高頻交易。必須對市場微結構有非常細緻的認識,也就是對交易所的數據協議要很清楚。

HFT需要什麼條件?

現在HFT需要的硬體和條件?這我稍微搜索和查了一會,就五花八門什麼都有。有伺服器架設在交易所,拉光纖,用微波,走海底電纜,直接破譯網卡寫程序用FPGA的什麼都有,這已經跳脫了民用範疇。

硬體我們燒不起,軟體上我們能用什麼方式做高頻呢?有,並不是沒有。我的答案是用MC,為什麼,聽我一一道來。

現在主流直接能接入交易的,有C++ 和 JAVA 這兩種主流語言,但是,它開發和學習的維度太長,並且開放的空間太大還不如不開放。

我們需要實現的是交易和策略層面的問題,我把硬體優化和低延遲解決的再好,策略不賺錢,它就是不賺錢,在我看來,一個賺錢的策略比降低5納秒的延遲,對於普通交易員來的更有效,更有幫助。

那麼策略開發中最大的核心問題 — 不是硬體,不是網速,是演算法。高頻交易的主流四大交易策略 — 做市商,事件,套利,訂單流向,哪一項都需要演算法的支持,去研究演算法是小散有最高投入產出比的方式。

在更多的語言寫的高頻交易的策略或者是源碼中,許多的代碼都是在控制介面和信息流,而交易需要的往往是策略,防止本末倒置。

(實盤代碼執行圖)

實際上把交易壓到秒以後,我自己感受高頻策略的優缺點在哪呢?

優點:風險小,如果策略OK,那麼可以穩定收益。

缺點:開發投入巨大,閥值(交易手續費和滑點)很高。


如果策略無法預測或者是準確率不高,速度不夠快,單純介入短差交易,沒啥意義。就我目前工作和研究的方向我簡單歸納一下 — 就是訂單流系統還有差價系統, Order Flow — Bid AskSpread。

核心思想

通過掃描訂單,能夠搶先一步買入或者賣出獲利,或者等待差價回歸。在我看來,整個好的 strategy ,它的優秀不在於訂單的成交或者風控的管理,好的策略其實在於它的源頭,就是進場,在進場的那一刻其實就已經決定你是否已經輸了。

高頻交易的從原來的被動掃單 — 到主動去人工掃單Drak 和 Chix 的通道撤單,到用計算機下大量的訂單去幌騙(Spoofing)和FPGA(可編程邏輯陣列)到現在的時序,概率,統計,線性回歸,標準差等等都應有盡有。簡單的就不一定是不好的。

(實盤代碼執行圖)

專註Open PL

為什麼單獨說PL,因為走的彎路太多,印象過於深刻。止損,止損,止損,老生常談的止損大家都知道,但是有多少人說過止盈?

只說了1:3的風險和報酬比例,那麼什麼情況下是1:3?在短周期下還是1:3么?

盈利值 — 準確率 — 交易閥值,一把三項之力。到底是小盈利,大止損?還是大盈利,小止損呢?

怎麼來解讀這把 三項之力 ?在一個波動的市場中,這是我們所有有盈利可能的前提,不波動的市場是無法盈利的,市場有波動,我們就有進出場賺取差價的可能。

短期的盈利比長期的盈利更容易預期,小額的目標比大額的目標更容易達成,交易的策略周期,和策略重點就決定了高頻交易不適合那麼高的盈虧比。那麼多少是合適?有參考和參照么?

在伊士頓事件中,它用的比例實際是4 tick的止損,對8tick的止盈。換算下風險和虧損比例大概是2:1,盈虧的平衡點在 1.5:1 的樣子。

如果有足夠高的準確率,止損 1,止盈 0.5 也不是不可以,但是交易的閥值很容易吃掉這部分的盈利導致整體的虧損。

閥值和損耗 — 滑點或者是手續費成本是相當高昂的。價格的個人主觀歧視是一種信息和大眾選擇的體現,沒有任何證據能證明下次的行為概率在這個價格形態還會反覆出現。

※ 備註伊士頓件: 2個俄羅斯人寫高頻交易用500萬交易期指,賺走約5個億,其交易量佔據IH、IF、IC合約市場百分之三。


關於程序化交易帶來的思考

統計和概率還有速度,能夠讓你一定能夠盈利么?我覺得並不是,任何的價格浮動並不包含對未來行情的預測,如果真的覺得自己可以預測未來,那他離出局就不遠了,淘汰自己的不是市場,反而是他自己。

想要活下來,只能兢兢業業,如履薄冰。扎紮實實以不變應萬變,隨著時間和時代的弄潮不停的更新自己,更新策略,充實自己的實力,這才是立於不敗之地的不二法門。

實戰開發日誌

1、實盤中間跳過的N個坑。

我覺得所有程序的第一課都該教大家如何連接自己的賬戶。重要的事要反覆提及。有很多課程都是教大家策略和函數的,但是就沒有一個很完整的課程手把手的教大家做一個小項目。

把這個項目從建立到分析,到設計結構代碼和模擬測試,讓大家有一個完善的思路和理念,讓大家真正的明白該怎麼做。

2、行情和數據連接不穩,連接超時。所以我要寫一些小的掛鉤去測試賬戶的掉線和行情的突然中斷,安置一些邏輯鎖來保證我的賬戶不會亂髮單。

3、HFT需要把MC中的交易安全全關了,不然會交易報錯。

4、發單和撤單太多,首先就會容易被MC鎖掉賬號,其次,最嚴重的申報和撤銷交易次數太多容易被交易所盯上,大概500次左右。第一次警告,第二次封賬號。

一句話結尾:大獎章基金用的核心策略只有2個 — 趨勢追蹤和均值回歸。另,我希望大家好好讀讀《演算法導論》。

後記

當大家都想干高頻或者是統計套利等各種高大上之流,我到想問多少人很認真的研究了底層的函數和代碼,有多少人認真調試過了簡單的單均線突破和雙均線突破這種誰都知道『爛大街』的系統?

有研究過進出場么?有研究過每筆進場單和盈虧比么?有真的放到模擬盤跑數據和認真的看每天盤口去修改模型么?

每次一寫程序就是股指期貨,還不如實際點寫一個瘸腿的小代碼去跑螺紋鋼還實際點,比紙上談兵強。

代碼和金融世界天馬行空,縱有萬般風雲,又與我何干?做好自己,穩紮穩打,這才是真正硬核的道理。實際的偏差永遠比模擬精確錯誤的要好。超越自己,我相信總有一天能看到更好的未來。

官網軟體下載 → MultiCharts - 程序化交易軟體

更多程序化交易資訊,歡迎關注微信公眾號:MultiCharts

推薦閱讀:

相关文章