T+0量化:JAVA接入Level2高頻行情(附Python代碼)
去年在知乎分享過一個網(wǎng)格策略,評論區(qū)全是"代碼能跑通但實盤不敢用"的留言。當(dāng)時我也一樣——用第三方平臺回測美滋滋,一到實盤就慫:行情延遲3秒、API調(diào)用次數(shù)受限、策略邏輯被平臺規(guī)則卡脖子…直到把整套系統(tǒng)搬回本地,才發(fā)現(xiàn)自建交易系統(tǒng)的快感就像從合租屋搬進(jìn)獨棟:數(shù)據(jù)流自己做主,策略想怎么跑就怎么跑。
今天不聊策略邏輯,重點解決三個實操問題:怎么用Java接Level2行情?如何繞過第三方平臺直接下單?去哪找?guī)袠I(yè)資金流向的因子數(shù)據(jù)? 文中的代碼模塊都是我實盤在用的,替換秘鑰就能跑。

Level2行情接入:散戶也能玩高頻?
很多人以為Level2是機(jī)構(gòu)的玩具,其實用WebSocket接行情比http還簡單。看這段Java代碼片段:
// 創(chuàng)建WebSocket客戶端
Client client = new Client("wss://你的行情服務(wù)地址");
client.connect();
核心在于服務(wù)端的數(shù)據(jù)推送質(zhì)量。我用的是融合行情通道,港美A三市Level2數(shù)據(jù)用同一個端口接,特別適合做跨市場套利的朋友。他們的二進(jìn)制壓縮算法能把深交所十檔行情壓到20ms以內(nèi),對本地算力要求極低(實測樹莓派都能跑)。
高頻玩家注意這個細(xì)節(jié):
// 解壓行情數(shù)據(jù)時指定Inflater的noHeader參數(shù)為true
Inflater inflater = new Inflater(true);
很多行情服務(wù)商用的是zlib頭壓縮,這個參數(shù)設(shè)置不對會導(dǎo)致解壓亂碼。去年有次實盤就栽在這個坑里,眼睜睜看著茅臺行情變成火星文。
交易接口:別被CTP嚇破膽
當(dāng)初最讓我頭大的是交易API。CTP文檔像天書,券商給的demo動不動幾千行代碼。后來發(fā)現(xiàn)用RESTful接口比傳統(tǒng)柜臺系統(tǒng)友好十倍:
// 委托買入示例
String url = "http://交易服務(wù)器地址/buy?token=你的令牌&code=600519&price=1800&volume=100";
關(guān)鍵是要找支持智能路由的服務(wù)商。交易接口會自動選擇最優(yōu)通道,我在同時下A股和港股訂單時,延遲差異能控制在10ms以內(nèi)。他們的持倉查詢接口也很實用:
// 查實時持倉
JSONObject holdings = get("http://交易服務(wù)器地址/check_hold?token=你的令牌");
返回的hold_list字段直接帶當(dāng)日盈虧計算,不用自己算浮動損益。有個反直覺的經(jīng)驗:建議把交易憑證ticket存在Redis里而不是代碼寫死,遇到過token過期導(dǎo)致廢單的慘案。
因子挖掘:別在一棵樹上吊死
策略失效的元兇往往是因子質(zhì)量。推薦試試語義化數(shù)據(jù)庫查詢:
// 查最近三天主力流入超過1億的非ST股
String query = "非ST,主力流入>1億,流通市值<200億"; JSONArray results = queryDB("http://數(shù)據(jù)庫地址/sql?query="+URLEncode(query));
這種查詢模式兩大優(yōu)勢:
- 不需要記憶字段名,像"昨日開盤漲幅"這種口語化條件直接扔進(jìn)去
- 支持跨時間維度篩選,比如同時要求"當(dāng)日量比>2"和"過去5日有漲停"
有次我想找MACD底背離的消費股,用傳統(tǒng)方法得寫十幾行SQL,換成語義查詢只要:
query = "消費行業(yè),MACD底背離,30日均線向上";
寫在最后:為什么要選擇自建系統(tǒng)?
- 成本比想象中低:行情+交易+數(shù)據(jù)庫三件套,用的融合方案每月成本不到策略收益的千分之三
- 防止策略泄漏:本地部署不存在第三方平臺的后門風(fēng)險
- 擴(kuò)展性強(qiáng):上周剛接上他們的期權(quán)波動率曲面數(shù)據(jù),十分鐘就完成了策略迭代
最近把整套系統(tǒng)開源在GitHub了,不過數(shù)據(jù)接口部分需要自行申請秘鑰。建議先用模擬盤跑通,畢竟自己掌控數(shù)據(jù)流的體驗——真香!
Python參考:https://github.com/jvQuant/OpenAPIDemo/tree/main/Python?
浙公網(wǎng)安備 33010602011771號