OKEX API(Websocket)


本文介紹OKEX API Websocket

 

WebSocket API for SPOT    

開始使用    

WebSocket是HTML5一種新的協議(Protocol)。它實現了客戶端與服務器全雙工通信,使得數據可以快速地雙向傳播。通過一次簡單的握手就可以建立客戶端和服務器連接,服務器根據業務規則可以主動推送信息給客戶端。其優點如下:

  • 客戶端和服務器進行數據傳輸時,請求頭信息比較小,大概2個字節;
  • 客戶端和服務器皆可以主動地發送數據給對方;
  • 不需要多次創建TCP請求和銷毀,節約寬帶和服務器的資源。

強烈建議開發者使用WebSocket API獲取市場行情和買賣深度等信息。

請求交互    

幣幣交易WebSocket服務連接地址:wss://real.okex.com:10440/ws/v1        

訪問時需要科學上網

發送請求

請求數據格式為:
{'event':'addChannel','channel':'channelValue','parameters':{'api_key':'value1','sign':'value2'}} 
其中
event: addChannel(注冊請求數據)/removeChannel(注銷請求數據)
channel: OKEx提供請求數據類型
parameters: 參數為選填參數,其中api_key為用戶申請的APIKEY,sign為簽名字符串,簽名規則參照請求說明

例如: websocket.send("{'event':'addChannel','channel':'ok_sub_spot_bch_btc_ticker' }")   websocket.send("[{'event':'addChannel','channel':'ok_sub_spot_bch_btc_ticker'},{'event':'addChannel','channel':'ok_sub_spot_bch_btc_ticker'},{'event':'addChannel','channel':'ok_sub_spot_bch_btc_ticker'}]"),支持批量注冊

服務器響應

返回數據格式為: [{"channel":"channel","success":"","errorcode":"","data":{}}, {"channel":"channel","success":"","errorcode":1,"data":{}}]
其中
channel: 請求的數據類型
result: true成功,false失敗(用於WebSocket 交易API) data: 返回結果數據
errorcode: 錯誤碼(用於WebSocket 交易API)

推送過程說明

為保證推送的及時性及減少流量,行情數據(ticker)和委托深度(depth)這兩種數據類型只會在數據發生變化的情況下才會推送數據,交易記錄(trades)是推送從上次推送到本次推送產生的增量數據。

如何判斷連接是否斷開

OKEx通過心跳機制解決這個問題。客戶端每30秒發送一次心跳數據:{'event':'ping'},服務器會響應客戶端:{"event":"pong"}以此來表明客戶端和服務端保持正常連接。如果客戶端未接到服務端響應的心跳數據則需要客戶端重新建立連接。

API參考

幣幣行情 API

獲取OKEx幣幣行情數據

  1. ok_sub_spot_X_ticker   訂閱行情數據

websocket.send("{'event':'addChannel','channel':'ok_sub_spot_X_ticker'}");

X值為幣對,如ltc_btc

示例

# Request
{'event':'addChannel','channel':'ok_sub_spot_bch_btc_ticker'}
# Response
[
    {
        "channel": "ok_sub_spot_bch_btc_ticker",
        "data": {
            "high": "10000",
            "vol": "185.03743858",
            "last": "111",
            "low": "0.00000001",
            "buy": "115",
            "change": "101",
            "sell": "115",
            "dayLow": "0.00000001",
            "dayHigh": "10000",
            "timestamp": 1500444626000
        }
    }
]

返回值說明

buy(double): 買一價
high(double): 最高價
last(double): 最新成交價
low(double): 最低價
sell(double): 賣一價
timestamp(long):時間戳
vol(double): 成交量(最近的24小時)
  1. ok_sub_spot_X_depth 訂閱幣幣市場深度(200增量數據返回)

websocket.send("{'event':'addChannel','channel':'ok_sub_spot_X_depth'}");

X值為幣對,如ltc_btc

示例

# Request
{'event':'addChannel','channel':'ok_sub_spot_bch_btc_depth'}
# Response
[
    {
        "channel": "ok_sub_spot_bch_btc_depth",
        "data": {
            "asks": [],
            "bids": [
                [
                    "115",
                    "1"
                ],
                [
                    "114",
                    "1"
                ],
                [
                    "1E-8",
                    "0.0008792"
                ]
            ],
            "timestamp": 1504529236946
        }
    }
]

返回值說明

bids([string, string]):買方深度
asks([string, string]):賣方深度
timestamp(string):服務器時間戳

使用描述  

第一次返回全量數據,根據接下來數據對第一次返回數據進行如下操作:刪除(量為0時);修改(價格相同量不同);增加(價格不存在)。

  1. ok_sub_spot_X_depth_Y 訂閱市場深度

websocket.send("{'event':'addChannel','channel':'ok_sub_spot_X_depth_Y'}");

X值為幣對,如ltc_btc

Y值為獲取深度條數,如5,10,20

示例

# Request
{'event':'addChannel','channel':'ok_sub_spot_bch_btc_depth_5'}
# Response
[
    {
        "channel": "ok_sub_spot_bch_btc_depth_5",
        "data": {
            "asks": [],
            "bids": [
                [
                    "115",
                    "1"
                ],
                [
                    "114",
                    "1"
                ],
                [
                    "1E-8",
                    "0.0008792"
                ]
            ],
            "timestamp": 1504529432367
        }
    }
]

返回值說明

bids([string, string]):買方深度
asks([string, string]):賣方深度
timestamp(long):服務器時間戳
  1. ok_sub_spot_X_deals   訂閱成交記錄

websocket.send("{'event':'addChannel','channel':'ok_sub_spot_X_deals'}");

X值為幣對,如ltc_btc

示例

# Request
{'event':'addChannel','channel':'ok_sub_spot_bch_btc_deals'}
# Response
[{
    "channel":"ok_sub_spot_bch_btc_deals",
    "data":[["1001","2463.86","0.052","16:34:07","ask"]]
}]

返回值說明

增量數據返回
[交易序號, 價格, 成交量, 時間, 買賣類型]
[string, string, string, string, string]
  1. ok_sub_spot_X_kline_Y   訂閱K線數據

websocket.send("{'event':'addChannel','channel':'ok_sub_spot_X_kline_Y'}");

X值為幣對,如ltc_btc

Y值為K線時間周期,如1min, 3min, 5min, 15min, 30min, 1hour, 2hour, 4hour, 6hour, 12hour, day, 3day, week

示例

# Request
{'event':'addChannel','channel':'ok_sub_spot_bch_btc_kline_1min'}
# Response
[{
    "channel":"ok_sub_spot_bch_btc_kline_1min",
    "data":[
        ["1490337840000","995.37","996.75","995.36","996.75","9.112"],
        ["1490337840000","995.37","996.75","995.36","996.75","9.112"]
    ]
}]

返回值說明

[時間,開盤價,最高價,最低價,收盤價,成交量]
[string, string, string, string, string, string]

幣幣交易 API

獲取OKEx幣幣交易數據  

  1. login 登錄事件(個人信息推送)

示例

# Request
{"event":"login","parameters":{"api_key":"xxx","sign":"xxx"}}
# Response
[
    {
        "channel": "login",
        "data": {
            "result": true
        }
    }
]

請求參數

參數名 描述
api_key 用戶申請的APIKEY
sign 請求參數的簽名

說明    

訂閱login后還需要訂閱 ok_sub_spot_X_order 交易數據接口,和ok_sub_spot_X_balance賬戶信息接口。

  1. ok_sub_spot_X_order 交易數據

示例

# Response
[
    {
        "base": "bch",
        "channel": "ok_sub_spot_bch_btc_order",
        "data": {
            "symbol": "bch_btc",
            "tradeAmount": "1.00000000",
            "createdDate": "1504530228987",
            "orderId": 6191,
            "completedTradeAmount": "0.00000000",
            "averagePrice": "0",
            "tradePrice": "0.00000000",
            "tradeType": "buy",
            "status": 0,
            "tradeUnitPrice": "113.00000000"
        },
        "product": "spot",
        "quote": "btc",
        "type": "balance"
    }
]

返回值說明

createdDate(string):創建日期
orderId(long):訂單id
tradeType(string):交易類型(buy:買入;sell:賣出;buy_market:按市價買入;sell_market:按市價賣出)
sigTradeAmount(string):單筆成交數量
sigTradePrice(string):單筆成交價格
tradeAmount(string):委托數量(市價賣代表要賣總數量;限價單代表委托數量)
tradeUnitPrice(string):委托價格(市價買單代表購買總金額; 限價單代表委托價格)
symbol(string):交易幣對,如ltc_btc
completedTradeAmount(string):已完成成交量
tradePrice(string):成交金額
averagePrice(string):平均成交價
unTrade(string):當按市場價買幣時表示剩余金額,其他情況表示此筆交易剩余買/賣幣的數量
status(int):-1已撤銷,0等待成交,1部分成交,2完全成交,4撤單處理中

請求參數

參數名 描述
symbol 交易幣對,如ltc_btc
  1. ok_sub_spot_X_balance 賬戶信息

示例

# Response
[
    {
        "base": "bch",
        "channel": "ok_sub_spot_bch_btc_balance",
        "data": {
            "info": {
                "free": {
                    "btc": 5814.850605790395
                },
                "freezed": {
                    "btc": 7341
                }
            }
        },
        "product": "spot",
        "quote": "btc",
        "type": "order"
    }
]

返回值說明

free:賬戶余額
freezed:賬戶凍結余額

請求參數

參數名 描述
symbol 交易幣對,如ltc_btc


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM