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. Linux内存参数

    用free -m查看的结果:# free -m         total    used    free     shared buffers     cachedMem:           50 ...

  2. Linux系统安装Samba共享服务器详解及安装配置

    一.简介 Samba服务程序是一款基于SMB协议并由服务端和客户端组成的开源文件共享软件,实现了Linux和windows系统间的文件共享.SMB(Server Messages Block,信息服务 ...

  3. map 函数基本写法

    map(需要对对象使用的函数,要操作的对象) 函数可以是自定义的,也可以是内置函数的,或者 lambda 匿名函数 操作的对象多为 可迭代对象可以是函数名的列表集合     2020-05-04

  4. PHP date_create() 函数

    ------------恢复内容开始------------ 实例 返回一个新的 DateTime 对象,然后格式化日期: <?php$date=date_create("2013-0 ...

  5. webapp项目新建java class、webapp目录树结构

      上一篇中我们介绍了IDEA.maven新建webapp项目的两种方式,分别是:在命令行中用模板创建.直接在IDEA中选择骨架创建. 但都存在一个问题:目录树不完整.有些人会不知道接下来该如何创建j ...

  6. FreeSql增加新特性Context

    源 FreeSql 作者做了很完善的组件 我看了一下,感觉很实用,使用上有很大的可自定义操作的地方,跟传统Orm固定格式不同,也异于Dapper的设计,支持表达式树 原地址 https://www.c ...

  7. 【从零开始撸一个App】Dagger2

    Dagger2是一个IOC框架,一般用于Android平台,第一次接触的朋友,一定会被搞得晕头转向.它延续了Java平台Spring框架代码碎片化,注解满天飞的传统.尝试将各处代码片段串联起来,理清思 ...

  8. 006_go语言中的互斥锁的作用练习与思考

    在go语言基本知识点中,我练习了一下互斥锁,感觉还是有点懵逼状,接下来为了弄懂,我再次进行了一些尝试,以下就是经过我的尝试后得出的互斥锁的作用. 首先还是奉上我改造后的代码: package main ...

  9. java_环境搭建、变量的使用

    java_环境搭建.变量的使用 Java语言开发环境搭建 1. Java虚拟机——JVM JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想 ...

  10. 敏捷工具:Scrum板与Kanban如何抉择?敏捷工具:Scrum板与Kanban如何抉择?

    Scrum板作为一种工具,主要应用于Scrum团队的敏捷项目管理,能够帮助团队更新任务进度,促进团队信息共享,及时发现任务过程中的异常现象,从而查漏补缺.团队在每日站会时会通过Scrum板来直观地展示 ...