簡單使用
./hqCenter -h-initCodesFile string啟動即訂閱的code (default "./data/initCodes.json")-listen stringhttp監聽地址 (default ":31800")-saveHqFile string行情寫入文件,自動加日期后綴。為空則不寫入文件。 (default "./data/hq")-token stringjvQuant平臺的訪問token
控制API
動態增加或刪除訂閱可以通過 自定義指令API 實現。
接收實時行情 http://127.0.0.1:31800/hq
接收回放行情 http://127.0.0.1:31800/hq?file=hq.2024-04-10.txt
發送自定義指令 http://127.0.0.1:31800/cmd?cmd=add=lv2_600519
接收實時日志 http://127.0.0.1:31800/log
控制退出 http://127.0.0.1:31800/ctl?op=exit
/hq接口file參數為空則為實時行情模式,指定file則為回放模式
起因
之前寫的自動交易策略,把行情/策略/交易都寫在了一個包里,牽一發動全身,調試很頭疼。
基于軟件工程解耦的思想,決定拆分模塊。
行情模塊專注接收行情,暫時完善了訂閱/推送/存儲/回放/控制這幾個功能。
用Http SSE推送模式,實時性相差無幾,本地起個服務,支持多個訂閱者,Python/PHP/JS接入也方便,不用再受tcp連接控制的苦。
Golang有跨平臺直接生成可執行文件的優點,支持Mac/Linux/Windows。
可執行文件放在hqCenter/bin下,后綴區分不同平臺。
沒有Go環境的可以直接下載bin里的可執行文件,都是最新編譯再推上來的。
發送自定義指令cmd 細節請參看jvQuant官方的wiki
這個行情模塊放出來給有需要的人,有bug或建議可以提Issue。沒有賬號的可以通過jvQuant邀請碼鏈接?注冊, 感謝支持。
執行示例:
cd hqCenter/
./bin/hqCenter.exe -listen=:31800 -saveHqFile=./data/hq -initCodesFile=./data/initCodes.json -token=token
initCodesFile 格式為json Map,數組內分別為啟動立即訂閱的code。
lv1代表level1行情,lv2代表level2行情。 格式示例:
{"lv1": ["600519"],"lv2": ["000700","123089"] }
SSE接收示例:
- Shell
curl -N 'http://127.0.0.1:31800/hq'
- Python
import requestsurl = 'http://127.0.0.1:31800/hq' r = requests.get(url=url, stream=True)for line in r.iter_lines(decode_unicode=True):print(line)
- PHP
<?php $url = 'http://127.0.0.1:31800/hq'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch, $data) {print_r($data);return strlen($data); }); curl_exec($ch); curl_close($ch);
- Golang
func SseGet(url string, ch chan []byte) (err error) {var rb []bytevar resp *http.Responseresp, err = http.Get(url)if err != nil {return}defer resp.Body.Close()br := bufio.NewReader(resp.Body)for {rb, err = br.ReadBytes('\n')if err != nil {return}ch <- rb}return }
From:GitHub - freevolunteer/hangqing: A股行情訂閱工具,支持股票/可轉債level2/level2數據,不限訂閱數,主動推送,支持回放,支持記錄行情到文件。