BIGI行情-实时行情数据源接口socket接入方法
1、国际期货、国内期货、外汇、贵金属、现货、期权、股指、数字货币和A股实时行情和历史行情
2、推送的有:socket,websocket,http接收,主动请求的有http get或post方式
3、免费调用K线,实时推送K线
4、稳定、无延时
5、交易所:纽约NYMEX、纽约COMEX、芝加哥CME、芝加哥CBOE、美国ICE、欧洲ICE、瑞士EUREX、伦敦LME、香港HKEX、新加坡SGX、京东TOCOM、马来西亚BMD、中金所CFFEX、上期所SHFE、大商所DCE、郑商所CZCE、上期能源INE
3.WebSocket连接
根据BIGI提供的IP、端口做连接,连上后返回字符串“ok”,然后可以发送登陆请求。
3.1.WebSocket登陆
3.1.1.登陆请求
发送登陆请求字符串:0=login|1=10002|2=abcde25oem5f6
0=login表示登陆;
1=10002 BIGI分配的账号;
2=abcde25oem5f6 BIGI分配的token;
“|” (0x7C)为每个数据元的分割符,分成key=value形式;
请求发出后等待登陆响应。
3.1.2.登陆响应
登陆响应返回:0=login|1=1|2=无效的令牌或账户已过期
0=login表示登陆;
1=1(0)0表示登陆成功,1表示登陆错误;
2=无效的令牌或账户已过期,登陆成功或失败的描述(登陆成功、登陆账户过期、未授权的登陆账户、未授权的ip地址);
“|” (0x7C)为每个数据元的分割符,分成key=value形式;
收到登陆成功信息后即可以发起订阅请求。
3.2.WebSocket订阅产品行情
3.2.1.订阅请求
发送订阅不带k线请求字符串:0=subscribe|1=6BML,HSIML,NGML
0=subscribe表示订阅;
1=6BML,HSIML,NGML 表示所要订阅的产品,也可以分开一个个产品订阅。
“|” (0x7C)为每个数据元的分割符,分成key=value形式;
请求发出后等待订阅响应。

发送订阅带k线请求字符串:0=subscribe|1=6BML,HSIML,NGML|2=k
3.2.2.订阅响应
发送订阅请求字符串:0=Subscribe|1=1|2=无效的令牌或账户已过期
0=subscribe表示订阅;
1=1(0)0表示登陆成功,1表示登陆错误。
2=无效的令牌或账户已过期,登陆成功或失败的描述(未授权的登陆账户或访问ip、产品xxx"已经订阅过、你没有订阅xxx产品的权限、订阅xxx成功)。
“|” (0x7C)为每个数据元的分割符,分成key=value形式;
“\n” (0x0A)发送内容结束符,每条请求指令或服务端响应都以\n为结束符。
收到订阅成功信息后即可开始正常接收服务器的最新行情。
3.3.WebSocket行情推送
3.3.1服务推送过来行情(不带k线)
0=hq|1=17|2=NGML|3=4.577|4=1542614598|5=1|6=4.574|7=4.577|8=1|9=3|10=9232|11=4.625|12=4.737|13=4.550|14=4.390
0=hq表示行情;
1=17 顺序码,不是唯一码;
2=NGML 产品,唯一码;
3=4.577 最新价格;
4=1542614598 时间,行情时间(UTC+8)与1970-1-1 0:0:0过去的秒数;
5=1 现手;
6=4.574 买价;
7=4.577 卖价;
8=1 买量;
9=3 卖量;
10=9232 成交量;
11=4.625 开盘价;
12=4.737 最高价;
13=4.550 最低价;
14=4.390 昨收价;
“|” (0x7C)为每个数据元的分割符,分成key=value形式;
3.3.2服务推送过来行情(带k线)
0=hq|1=4|2=CLML|3=62.94|4=1556512732|5=2|6=62.93|7=62.94|8=46|9=22|10=34112|11=62.95|12=63.11|13=62.79|14=62.80|M1=62.94,62.94,62.93,62.94,76,1904291238|M5=62.95,62.95,62.93,62.94,266,1904291235|M15=62.96,62.95,62.93,62.94,799,1904291230|M30=62.96,62.95,62.93,62.94,799,1904291230|H1=62.99,62.95,62.92,62.94,4190,1904291200|D1=63.11,62.83,62.83,62.94,57264,1904290800\n
0=hq表示行情;
1=4 顺序码,不是唯一码;
2= CLML产品,唯一码;
3=62.94 最新价格;
4=1556512732 时间,行情时间(UTC+0)与1970-1-1 0:0:0过去的秒数;
5=2 现手;
6=62.93 买价;
7=62.94 卖价;
8=46 买量;
9=22 卖量;
10=34112 成交量;
11=62.95 开盘价;
12=63.11 最高价;
13=62.79 最低价;
14=62.80 昨收价;
M1=62.94,62.94,62.93,62.94,76,1904291238,在时间19年04月29日12点38分1分钟k线,后面以逗号隔开的分别为高、开、低、收、成交量、k线时间 。
M5=62.95,62.95,62.93,62.94,266,1904291235,在时间19年04月29日12点35分5分钟k线,后面以逗号隔开的分别为高、开、低、收、成交量、k线时间 。
M15=62.96,62.95,62.93,62.94,799,1904291230,在时间19年04月29日12点30分15分钟k线,后面以逗号隔开的分别为高、开、低、收、成交量、k线时间 。
M30=62.96,62.95,62.93,62.94,799,1904291230,在时间19年04月29日12点30分30分钟k线,后面以逗号隔开的分别为高、开、低、收、成交量、k线时间 。
H1=62.99,62.95,62.92,62.94,4190,1904291200,在时间19年04月29日12点1小时k线,后面以逗号隔开的分别为高、开、低、收、成交量、k线时间 。
D1=63.11,62.83,62.83,62.94,57264,1904290800,在时间19年04月29日日k线,后面以逗号隔开的分别为高、开、低、收、成交量、k线时间 。

“|” (0x7C)为每个数据元的分割符,分成key=value形式;

3.4.WebSocket行情接收总结
7.客户端连接行情服务器;
成功连接后服务端返回“ok”;
8.客户端发送登陆请求:
0=login|1=10002|2=abcde25oem5f6
9.服务端响应登陆请求,成功登陆返回客户端:
0=login|1=0|2=登陆成功
10.客户端收到登陆成功后发送订阅产品行情请求:
不带k线的实时行情请求:0=subscribe|1=6BML,HSIML
带k线的实时行情请求:0=subscribe|1=6BML,HSIML,NGML|2=k
11.服务端响应订阅成功返回给客户端:
0=subscribe|1=0|2=订阅6BML成功\n
0=subscribe|1=0|2=订阅HSIML成功\n
12.服务器开始正式推送最新行情到客户端
0=hq|1=1|2=6BML|3=1.2841|4=1542610107|5=2|6=1.2830|7=1.2880|8=1|9=1|10=0|11=1.2781|12=1.2895|13=1.2777|14=1.2841\n
0=hq|1=2|2=HSIML|3=26128|4=1542617107|5=1|6=26125|7=26168|8=1|9=1|10=43903|11=26107|12=26239|13=25958|14=26115\n
以上为不带k线的推送。
以下为带k线的推送:
0=hq|1=4|2=CLML|3=62.94|4=1556512732|5=2|6=62.93|7=62.94|8=46|9=22|10=34112|11=62.95|12=63.11|13=62.79|14=62.80|M1=62.94,62.94,62.93,62.94,76,1904291238|M5=62.95,62.95,62.93,62.94,266,1904291235|M15=62.96,62.95,62.93,62.94,799,1904291230|M30=62.96,62.95,62.93,62.94,799,1904291230|H1=62.99,62.95,62.92,62.94,4190,1904291200|D1=63.11,62.83,62.83,62.94,57264,1904290800
所有请求或响应都带了\n,这是因为通讯协议为继承Socket,Websocket相对简单,无需处理封包,websocket客户端接收到的每条信息都是完整的信息。
3.4.1.WebSocket行情接收伪代码
WebSocket websocket = new WebSocket(“ws://ip:port/xxxx”);//创建一个全局的socket对象
websocket.OnClose += new EventHandler(OnClose);//断开连接事件
websocket.OnError += new EventHandler<WebSocketSharp.ErrorEventArgs>(OnError);//错误处理
websocket.OnMessage += new EventHandler(OnMessage)/ /接收到服务端信息事件
websocket.OnOpen += new EventHandler(OnOpen);//连上
void OnOpen(object sender, EventArgs e)
{

}
void OnMessage(object sender, MessageEventArgs e)
{
1
2
3
//分割字符串,以“|”为分隔符,压key-value进入Dictionary。
If msg==”ok” 连接成功,可以发起登陆
{
//发送登陆请求
_client.send(“0=login|1=10002|2=abcde25oem5f6\n”);
}
Else if Dictionary.Contain(0)and Dictionary[“0”]”login” and Dictionary[“1”]”0”
{
//登陆成功返回,发起订阅不带k线
_client.send(“0=subscribe|1=6BML,HSIML”);

//登陆成功返回,发起订阅带k线
1
//_client.send(“0=subscribe|1=6BML,HSIML|2=k”);
}

Else if Dictionary.Contain(0)and Dictionary[“0”]==”hq”
1
{
//接收行情,处理行情
--------行情处理业务逻辑----
}

}
1
void OnError(object sender, WebSocketSharp.ErrorEventArgs e)
{
ReConnection();//连接断开后重连
}

void websocket_OnClose(object sender, CloseEventArgs e)
{
ReConnection();//连接断开后重连
}
---------------------
作者:BIGI行情
来源:CSDN
原文:https://blog.csdn.net/vguiwang/article/details/91037990
版权声明:本文为博主原创文章,转载请附上博文链接!

BIGI行情-实时行情数据源接口websocket接入方法的更多相关文章

  1. 如何获取东方财富文华新浪财经实时行情数据API接口

    BIGI行情期货外汇股指A股期权实时行情数据文华新浪财经API接口新浪财经并非实时行情数据源,所以获取的行情数据源也并非实时的.以下介绍的方法和新浪财经获取行情数据源的方法是一致的.需要实时行情数据源 ...

  2. BIGI行情http请求实时行情数据方式

    BIGI行情http请求实时行情数据方式 新浪财经文华财经并非实时行情数据源,所以获取的行情数据源也并非实时的.以下介绍的方法和新浪财经获取行情数据源的方法是一致的.需要实时行情数据源可以向BIGI行 ...

  3. JavaDBF:保存行情实时数据到DBF文件

    JavaDBF.jar其实很早都不再更新了,在日新月异的科技圈算得上远古上神的jar包,早该身归混沌了. 但我们的项目要用到,因为之前做的大宗期货交易行情的分析文件依然是dbf文件,没有办法,还得用 ...

  4. 获取sina,baidu,google财经历史和实时股票数据接口

    实时股票数据接口 股票数据的获取目前有如下两种方法可以获取:1. http/javascript接口取数据2. web-service接口1.http/javascript接口取数据1.1Sina股票 ...

  5. 关于 实时推送技术--WebSocket的 知识分享

    今天学习了关于WebSocket的知识,觉得挺有用的,在这记录一下,也和大家分享一下!!有兴趣的可以看看哦 WebSocket简介 Web领域的实时推送技术,也被称作Realtime技术.这种技术要达 ...

  6. Jmeter实时监控+SpringBoot接口性能实战

    性能测试 Jmeter实时监控+SpringBoot接口性能实战 自动化 SpringBoot Java Jmeter实时监控+SpringBoot接口性能实战 一.实验目的及实验环境 1.1.实验目 ...

  7. Flink实战| Flink+Redis实时防刷接口作弊

    随着人口红利的慢慢削减,互联网产品的厮杀愈加激烈,大家开始看好下沉市场的潜力,拼多多,趣头条等厂商通过拉新奖励,购物优惠等政策率先抢占用户,壮大起来.其他各厂商也紧随其后,纷纷推出自己产品的极速版,如 ...

  8. ArcGIS 网络分析[8.2] 资料2 使用IDatasetContainer2接口的CreateDataset方法创建网络数据集

    上节提及如何使用IDatasetContainer2接口访问到网络数据集,上例可以封装为一个方法. 这节就使用IDatasetContainer2接口(Geodatabase类库)的CreateDat ...

  9. 网络 互联网接入方法、Mbit与MB的转换

    ADSL:非对称数字用户环路(绝大多数家庭接入方法,使用电话线).可以提供最高1Mbps的上行速率和最高8Mbps的下行速率.最新的ADSL2+可以提供最高24Mbps的下行速率. 千千兆TB 千兆G ...

随机推荐

  1. parted分区

    ((parted)mklabel ----创建磁盘标签New disk labeltype? gpt ---输入磁盘表情名(parted) p ----再次列出磁盘分区 (parted) mkpart ...

  2. Git文件合并

    两个分支:主分支master,分支pre 1.将pre分支文件合并到master分支: 切换到master分支下操作: 合并文件夹[如果是文件则为a.text b.text]: git checkou ...

  3. 第十二章 类加载器&反射

    12.1.类加载器 12.1.1.类加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载.类的连接.类的初始化这三个步骤来对类进行初始化.如果不出现意外情况,JVM将会连续完成 ...

  4. centos7安装部署docker

    Kubernetes/K8s架构师实战集训营[中级班]:https://pan.baidu.com/s/1FWAz2V7BPsObixlZyW93sw 提取码:mvu0 Kubernetes/K8s架 ...

  5. PHP wordwrap() 函数

    实例 按照指定长度对字符串进行折行处理: <?php高佣联盟 www.cgewang.com$str = "An example of a long word is: Supercal ...

  6. 3.28 省选模拟赛 染色 LCT+线段树

    发现和SDOI2017树点涂色差不多 但是当时这道题模拟赛的时候不会写 赛后也没及时订正 所以这场模拟赛的这道题虽然秒想到了LCT和线段树但是最终还是只是打了暴力. 痛定思痛 还是要把这道题给补了. ...

  7. Spark中直接操作HDFS

    Spark作为一个基于内存的大数据计算框架,可以和hadoop生态的资源调度器和分布式文件存储系统无缝融合.Spark可以直接操作存储在HDFS上面的数据: 通过Hadoop方式操作已经存在的文件目录 ...

  8. easyui 属性 事件 方法

    在easyui当中 属性和事件可以按照json定义的对象来使用. /*在easyui中 属性和事件的使用方法相同*/ var loginWinJson = { closed: false, closa ...

  9. 对Word2Vec的理解

    1. word embedding 在NLP领域,首先要把文字或者语言转化为计算机能处理的形式.一般来说计算机只能处理数值型的数据,所以,在NLP的开始,有一个很重要的工作,就是将文字转化为数字,把这 ...

  10. Ubuntu16.04忘记用户登录密码以及管理员密码,重置密码的解决方案

    1. 问题现象: 密码遗忘 2. 问题原因 问题原因,搞不懂,只是修改了/etc/shadow和/etc/sudoers这俩文件 3. 解决方案 在系统开机前常按shift键进入grub界面,如下: ...