备用调试编码:正式编码后加"DEV"3个字母,即为调试编码。在不影响正式编码使用同时,方便开发环境中调试。(调试编码只允许1连接点,只允许订阅BTC,推送频率为每秒)
*注意:本站数据适用开发者数据分析和策略测试,无软件提供,接口使用禁止涉及违法业务。
*注意:实现对接至少2个步骤,1-建立连接,2-订阅合约
请求连接
执行对指定服务器IP端口的连接
请求认证
连接成功后,30秒内需要发送认证请求
报文内容:{命令1}+{type}/{token},
参考报文说明
参数:type,string,必填,返回数据结构选 json。接收信息和数据格式和该选择匹配
参数:token,string,必填,编码
接收内容:{命令1}+{code}+{msg},
参考报文说明
code:int,执行结果,code>=0代表成功
msg:string,具体信息
注意:连接数超出允许连接数后,之前的连接会被系统关闭。
注意:连接失败请做日志,方便诊断问题,重复的多次连接建议间隔10秒以上,反复重连系统可能会认定异常并阻挡。
注意:由于系统/网络复杂,连接中断不可避免,建议在“发送心跳无正确返回”时执行重新连接。
订阅合约或品种,一次最多100个
参数:symbols,string,必填,完整代码,逗号分隔如BTC,EURJPY,单次最多100个代码
品种合约代码信息查询*
参数:支持期货的分组订阅,如订阅CFFEXIC* 则代表订阅CFFEXIC,CFFEXIC1909,CFFEXIC2002...等合约
接收内容:{命令5}+{code}+{msg},
参考报文说明
code:int,执行结果,code>=0代表成功
msg:string,具体信息
说明:订阅成功后,系统即接收来自服务端的消息,消息的Cmd=rm即为输出实时行情数据,请
参考行情实体结构
注意:如果已经订阅了分类,再订阅该分类下的品种,订阅品种将不成功
注意:如果订阅个数超过限制个数,新订阅的品种合约会替换最先订阅的品种合约。
注意:订阅失败请做日志,方便诊断问题,重复多次订阅命令建议间隔5秒执行,或应使用批量订阅。
指定分类订阅,一次可多个
参数:routs,string,必填,完整分类代码,逗号分隔。CNST:沪深A股,CNETF:沪深ETF,USST:美股,HKST:港股,GBFSB:外汇,GBCFD:CFD,GBFT:国际期货(GBIF指数/GBCF商品/GBFF外汇),CNFT:国内期货(CNIF指数CNCF商品),GBDC:数字货币,GBIDX:全球股指
接收内容:{命令6}+{code}+{msg},
参考报文说明
code:int,执行结果,code>=0代表成功
msg:string,具体信息
说明:订阅成功后,系统即接收来自服务端的消息,消息的Cmd=rm即为输出实时行情数据,
参考行情实体结构
注意:订阅失败请做日志,方便诊断问题,重复多次订阅命令建议间隔5秒执行,或应使用批量订阅。
指定市场订阅,一次可多个
参数:markets,string,必填,完整市场代码,逗号分隔。
接收内容:{命令10}+{code}+{msg},
参考报文说明
code:int,执行结果,code>=0代表成功
msg:string,具体信息
说明:订阅成功后,系统即接收来自服务端的消息,消息的Cmd=rm即为输出实时行情数据,
参考行情实体结构
注意:订阅失败请做日志,方便诊断问题,重复多次订阅命令建议间隔5秒执行,或应使用批量订阅。
取消订阅,可多个
参数:symbols,string,必填,完整代码或分类,逗号分隔如BTC,EURJPY,CNIF
接收内容:{命令9}+{code}+{msg},
参考报文说明
code:int,执行结果,code>=0代表成功
msg:string,具体信息
服务器端60秒内没有收到连接客户端的心跳命令,将中断该客户端连接
心跳命令可选2个方式发送。方式1.定时每15-60秒内,向服务器端发送心跳命令
方式2.在接收到服务端信息 {命令2}+{ok} 时,向服务端发送心跳命令
接收内容:{命令2}+{code}+{msg},
参考报文说明。同样的:如果连续2次发送心跳都没有收到服务端返回的正确信息,则可以认为数据连接已经中断
code:int,执行结果,code>=0代表成功
msg:string,具体信息
1、非常重要!重新连接:由于系统/网络复杂,连接中断不可避免,建议每15秒发送心跳,如果连续2次心跳返回不正确/或无返回,则执行重连
2、非常重要!重新订阅:如果客户端监测某订阅品种合约无数据接收,不确定是否正确订阅的,可以再次订阅该品种合约
3、不应频繁重连,如果1分钟内超过10次重连,系统会临时屏蔽来自该编码或IP的连接
4、建立的连接数不应超过允许的最大连接数,超过会导致连接中断和数据异常
5、相同命令发送间隔建议5秒以上
6、非常重要!数据接收处理:接收到的数据直接进入进队列或做异步逻辑处理,不要做任何同步的耗时处理逻辑,避免接收数据堵塞。
可选功能。指定接收字段,如不指定则传输默认字段(默认字段并非全部),指定后只返回指定字段
参数:fields,string,必填,字段,逗号分隔如Z,Z2,TS,H1,字段请参考
行情实体结构参考
接收内容:{命令4}+{code}+{msg},
参考报文说明
code:int,执行结果,code>=0代表成功
msg:string,具体信息
请求一次品种合约某周期最近k线,返回一次性数据,最多25(默认)~90~180~365~730个k数据(视订阅等级定),限制频率每分钟在(订阅个数*8,最大300)次以内。*只能请求正在订阅中的合约的k线
发送内容:{命令8}+{symbol,period,count},
参考报文说明
参数:symbol,string,必填,完整品种合约代码
参数:period,string,必填,周期1M,3M,5M,10M,15M,30M,1H,2H,3H,4H,D,W,M
参数:num,int,必填,1~25~90~180~365~730
接收内容:{命令8}+{code}+{data},
参考报文说明
code:int,执行结果,code>=0代表成功
data:string,{symbol}-{period}:{msg}
msg:秒Tick,Open,High,Low,Close,Vol;秒Tick,Open,High,Low,Close,Vol 如 1582424400,9664.9,9664.9,9664.8,9664.8,1.12;1582424340,9664.9,9665,9661.8,9664.9,26.93
说明:订阅成功后,系统即接收来自服务端的一次性消息,最后一个动态k线数据在订阅字段中可以订阅
注意:相同命令(含参数)重复执行需间隔15秒执行,只能请求正在订阅中的合约(就是已经执行sub成功的合约)的k线
请求一次指定合约的实时行情,返回一次性数据,限制频率每分钟5次以内。*只能请求正在订阅中的合约的行情
调用演示
发送内容:{命令8}+{symbol,period,count},
参考报文说明
参数:symbol,string,必填,完整品种代码,多个逗号分隔
接收内容:{命令8}+{code}+{data},
参考报文说明
code:int,执行结果,code>=0代表成功
data:string,输出结构和行情订阅一样
说明:订阅成功后,系统即接收来自服务端的一次性 cmd=rm的消息
注意:只能请求正在订阅中的合约(就是已经执行sub成功的合约)的行情
报文格式
发送:byte数组1(内容(命令和信息)包长度[int型]转byte数组)+byte数组2(命令[int型]转byte数组)+byte数组3(内容信息转byte数组)。"+"代表该连接,3个byte数组依次连接。包长度是后2个byte数组的总长度
接收:byte数组1(内容(命令和code和信息)包长度[int型]转byte数组)+byte数组2(命令[int型]转byte数组)+byte数组3(返回结果code[int型]转byte数组)+byte数组4(返回信息string转byte数组)。"+"代表该连接,4个byte数组依次连接。包长度是后是后3个byte数组的总长度
命令代码
0 = msg信息
1 = connect连接
2 = heartbeat心跳
4 = fields订阅字段
5 = sub订阅指定合约
6 = subrout订阅分类
7 = rm请求一次实时
8 = reqk请求一次k线
9 = unsub取消订阅
10 = submkt订阅市场
错误代码
code >= 0,调用成功
code <0 表示调用失败,并输出错误信息 Msg 失败提示
cmd,请求源
输出结构和连接时使用的参数匹配
json: {"Cmd":"rm","M":"xx","S":"xx","C":"xx" .... }
text: rm:M,S,C ....
form: Cmd=rm&M=xx&S=xx&C=xx...