Giter Site home page Giter Site logo

data_websocket_client's Introduction

一、程序说明

1.程序介绍

  1. 从config文件读取配置信息
  2. 从指定网站订阅websocket数据
  3. 将数据统一为标准的json格式
  4. 将数据转发到zmq端口

2.开发环境

vs2019 windows10 windows server 2019

3.开发依赖

  1. json 解析库 使用 rapidjson (开源的三方库,只需包含头文件即可,所有头文件在 rapidjson_include.rar)

  2. https websocket 通讯使用 libhv(开源的三方库,项目在github上) https://github.com/ithewei/libhv/blob/master/README-CN.md

  3. zmq 组件 libzmq-4.3.4,其实版本不限制 https://zeromq.org/get-started/?language=cpp&library=zmqpp#

  4. 不使用 rapidjson libhv zmq openssl 之外的其他三方库

  5. 原工程可编译运行,模式是 64位 release 模式

4.启动流程

  1. 编辑 myconfig.json 配置文件

  2. 双击 myplatform_market.exe 启动程序

二、配置文件说明

config文件,以下面json内容为例

  1. "WSMarketConfig"的每个子元素 表示一个 websocket 连接通道,一个连接通道对应一个发送端口(zmqstr指定)

  2. 子元素(如 "binance-f_1") 中, 1) "wsclass" 表示 交易所名称 (如binance-f,okx-f) 2) "depth" 表示 订阅深度信息 3) "trade" 表示 订阅成交信息 4) "zmqstr" 行情发送位置

  3. "depth" 中
    1) "type":"limit" 表示有限档深度行情,"full" 表示增量深度行情 2) "level":"20" 表示 取20档,即只 发送前20档数据到 zmq 3) "symbol" 指 订阅哪些品种的行情

如果需要同时订阅全品种信息,考虑到python的接收效率 和 交易所单连接可支持的最大订阅数量,建议 分成若干个 连接通道,如下("binance-f_1", "binance-f_2")

{
    "WSMarketConfig": 
    {                           // 配置总名称 不用动
        "binance-f_1":          // 交易所线程  命名规则:交易所小写-衍生品类型小写_分区id
        {  
            "isstart": "1",     // 是否启动  1启动 0不启动
            "wsclass": "okx-f", // 解析类名 命名规则:交易所小写-衍生品类型小写
            "depth": 
            {                   // 订阅数据类型 depth和trade两种
                "type": "full", // depth数据类型 目前只有full
                "level": "20",  // depth数据档位 
                "symbol": [     // 品种列表
                    "BTC-USDT", // 交易品种名称 命名规则:品种名称-结算代币
                    "ETH-USDT"
                ]
            },
            "trade": 
            {                   // 订阅数据类型 depth和trade两种
                "symbol": [
                    "BTC-USDT",
                    "ETH-USDT"
                ]
            },
            "zmqstr": "tcp://127.0.0.1:5551"  //zmq发布端口
        },
        "binance-f_2":         // 交易所线程 命名规则:交易所小写-衍生品类型小写_分区id
        {
            "wsclass":"binance-f",
            "depth":
            {
                "type":"limit",
                "level":"20",
                "symbol":
                [
                    "LTC-USDT",
                    "EOS-USDT"
                ]
            },
            "trade":
            {
                "symbol":
                [
                    "LTC-USDT",
                    "EOS-USDT"
                ]
            },          
            "zmqstr":"tcp://127.0.0.1:5552"
        }
    }
}

三、发送到zmq的数据格式

  1. trades:
{
    "instrument_id": "binance-f_BTC-USDT_trades", #数据流名称 命名规则:交易所小写-衍生品类型小写_交易品种-结算品种_数据类型
    "data_type": "trades",  #数据类型 数据类型
    "exchange": "BINANCE_FUTURES", #交易所大写——衍生品类型大写
    "symbol": "BTC-USDT-PERP", #品种名称
    "side": "buy", #买卖方向
    "amount": 0.1, #成交数量
    "price": 47412.3, #成交金额
    "id": "1154117591", #成交ID
    "type": None, #成交类型
    "timestamp": 1648623478.337, #成交时间戳
    "receipt_timestamp": 1648623478.5280075 #本地接受数据时间戳
}
  1. orderbook:
{
    "instrument_id": "binance-f_BTC-USDT_depth-10",  #数据流名称 命名规则:交易所小写-衍生品类型小写_交易品种-结算品种_数据类型
    "data_type": "depth-10",  #数据类型 depth-深度档位数
    "exchange": "BINANCE_FUTURES", #交易所大写——衍生品类型大写
    "symbol": "BTC-USDT-PERP",  #交易品种-结算品种-衍生品类别
    "book": {                   #orderbook
        "ask":                   #卖单列表,升序
        {
            "47412.3": 0.017,   #价格:数量
            "47412.7": 0.022,
            "47412.8": 0.117,
            "47412.9": 0.117,
            "47413.1": 0.001,
            "47413.4": 0.117,
            "47414.1": 0.005,
            "47415.7": 0.008,
            "47415.9": 0.065,
            "47416": 0.189
        },
        "bid":                  #买单列表,降序
        {
            "47412.2": 4.459,   #价格:数量
            "47412.1": 0.001,
            "47411.6": 0.5,
            "47411.2": 2,
            "47409.5": 0.05,
            "47409.4": 0.097,
            "47409.3": 4.874,
            "47408.9": 0.011,
            "47408.8": 0.838,
            "47408.7": 4.462
        }
    },
    "timestamp": 1648623478.583, #成交时间戳
    "receipt_timestamp": 1648623478.6130261 #本地接受数据时间戳
}
  1. kline:
{
    "instrument_id": "binance-f_BTC-USDT_kline",  #数据流名称 命名规则:交易所小写-衍生品类型小写_交易品种-结算品种_数据类型
    "data_type": "kline",  #数据类型 kline 默认1min
    "exchange": "BINANCE_FUTURES", #交易所大写——衍生品类型大写
    "symbol": "BTC-USDT-PERP",  #交易品种-结算品种-衍生品类别
    "open": 47412.3, #开盘价
    "high": 47412.3, #最高价
    "low": 47412.3, #最低价
    "close": 47412.3, #最近价 收盘价
    "volume": 0.1, #成交数量
    "id": "1154117591", #ID
    "type": None, #类型
    "timestamp": 1648623478.337, #交易所时间戳
    "receipt_timestamp": 1648623478.5280075 #本地接受数据时间戳
}

data_websocket_client's People

Contributors

longyue188 avatar

Watchers

 avatar

Forkers

kanbang

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.