简单使用
./hqCenter -h
-initCodesFile string
启动即订阅的code (default "./data/initCodes.json")
-listen string
http监听地址 (default ":31800")
-saveHqFile string
行情写入文件,自动加日期后缀。为空则不写入文件。 (default "./data/hq")
-token string
jvQuant平台的访问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 requests
url = '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 []byte
var resp *http.Response
resp, 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数据,不限订阅数,主动推送,支持回放,支持记录行情到文件。