WebSocket API 接入文档

1. 接入地址

WebSocket服务地址:

wss://labs.zqqbot.com/ws

支持通过 signals 参数订阅多个主题,例如:

wss://labs.zqqbot.com/ws?signals=btcusdt@marketSignal/ethusdt@marketSignal/solusdt@marketSignal

订阅全部交易对:

wss://labs.zqqbot.com/ws?signals=all@marketSignal

2. 连接与订阅

3. 心跳与连接保活

websocket.send("ping"); // 客户端定时发送
// 收到 pong 响应

4. 消息格式说明

// 收到推送内容示例 (当订阅全部交易对返回的则是JSON数组字符串):

    {
        "symbol": "XRP/USDT", // 交易对
        "lowerDiff": 0.0457, // 下方差值
        "upperDiff": 0.0103, // 上方差值
        "lowerPrice": 2.272, // 下方一阶价格
        "upperList": [ // 上方价格列表
            {
                "intensity": 12617360, //  强度
                "price": 2.34, // 价格
                "percentage": 54.27 // 百分比 %
            },
            {
                "intensity": 18409139,
                "price": 2.328,
                "percentage": 79.18
            }
        ],
        "currentPrice": 2.3177, //  当前价格
        "lowerIPercentage": 0.019718, // 下方价差百分比 %
        "maxLiqValue": 23250262, // 最大强度值
        "upSumPercentage": 133.45, // 上方强度累计百分比 %
        "unSumPercentage": 483.5, //  下方强度累计百分比 %
        "upperIPercentage": 0.004444, // 上方价差百分比 %
        "lowerList": [ // 下方价格列表
            {
                "intensity": 21860143, // 强度
                "price": 2.272, // 价格
                "percentage": 94.02 // 百分比
            },
            {
                "intensity": 12962187,
                "price": 2.208,
                "percentage": 55.75
            }
        ],
        "upperPrice": 2.328, //  上方一阶价格
        "exchange": "Binance", // 交易所
        "latestTime": 1749630900000, //  最新时间
        "time":1749630900000, // 信号生成时间
        "rsi": 56.45,  // RSI6的值
        "trend":"LONG" // 趋势状态:LONG [做多]/SHORT [做空]/oscillation [震荡]
    }

        

5. 示例代码

JavaScript (浏览器)

const ws = new WebSocket('wss://labs.zqqbot.com/ws?signals=btcusdt@marketSignal/ethusdt@marketSignal');
ws.onopen = function() {
    // 定时心跳
    setInterval(() => ws.send('ping'), 30000);
};
ws.onmessage = function(event) {
    if(event.data === 'pong') return; // 心跳响应
    // 处理推送数据
    console.log('收到推送:', event.data);
};
ws.onclose = function() {
    console.log('连接已关闭');
};

Python (websocket-client)

import websocket
import threading
import time

def on_message(ws, message):
    if message == 'pong':
        return
    print('收到推送:', message)

def on_open(ws):
    def run():
        while True:
            ws.send('ping')
            time.sleep(30)
    threading.Thread(target=run).start()

ws = websocket.WebSocketApp('wss://labs.zqqbot.com/ws?signals=btcusdt@marketSignal/ethusdt@marketSignal',
                            on_message=on_message,
                            on_open=on_open)
ws.run_forever()

Java (OkHttp)

import okhttp3.*;

public class WssTests {
    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();
        String url = "wss://labs.zqqbot.com/ws?signals=btcusdt@marketSignal/ethusdt@marketSignal";
        Request request = new Request.Builder().url(url).build();
        WebSocket ws = client.newWebSocket(request, new WebSocketListener() {
            @Override
            public void onOpen(WebSocket webSocket, Response response) {
                System.out.println("连接成功");
                // 定时心跳
                new Thread(() -> {
                    try {
                        while (true) {
                            webSocket.send("ping");
                            Thread.sleep(30000);
                        }
                    } catch (InterruptedException ignored) {}
                }).start();
            }
            @Override
            public void onMessage(WebSocket webSocket, String text) {
                if ("pong".equals(text)) return;
                System.out.println("收到推送: " + text);
            }
            @Override
            public void onFailure(WebSocket webSocket, Throwable t, Response response) {
                t.printStackTrace();
            }
        });
    }
}

6. 注意事项