OKEX V5 WS giao diện tài khoản lưu trữ đẩy ví dụ

Tác giả:Giấc mơ nhỏ, Ngày: 2021-09-02 17:46:59
Tags:

OKEX V5 WS giao diện tài khoản lưu trữ đẩy ví dụ

OKEX V5 WS giao diện dùng ví dụ giao diện riêng, tham số chính sáchaccessKeysecretKeypassphraseTrong đó.passphraseĐây là mật khẩu khóa được nhập khi tạo APIKEY trên trang web của sàn giao dịch. Ví dụ chính sách là đăng nhập xác minh trước và sau đó đăng ký tất cả thông tin nắm giữ.


function getLogin(pAccessKey, pSecretKey, pPassphrase) {
    // 签名函数,用于登录
    var ts = (new Date().getTime() / 1000) + ""
    var login = {
        "op": "login",
        "args":[{
            "apiKey"    : pAccessKey,
            "passphrase" : pPassphrase,
            "timestamp" : ts,
            "sign" : exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey)
        }]
    }    
    return login
}

var client_private = null 
function main() {
    // 因为read函数使用了超时设置,过滤超时的报错,否则会有冗余错误输出
    SetErrorFilter("timeout")
    
    // 持仓频道订阅信息
    var posSubscribe = {
        "op": "subscribe",
        "args": [{
            "channel": "positions",
            "instType": "ANY"
        }]
    }

    var payload = JSON.stringify(getLogin(accessKey, secretKey, passphrase))
    client_private = Dial("wss://ws.okex.com:8443/ws/v5/private|reconnect=true&payload=" + payload)
    Sleep(3000)  // 登录时,不能立即订阅私有频道,需要等待服务器反应
    if (client_private) {        
        client_private.write(JSON.stringify(posSubscribe))
        var lastPingTS = new Date().getTime()
        while (true) {
            var buf = client_private.read(2000)
            if (buf) {
                Log(buf)    
            }
            // 发送心跳包
            var nowPingTS = new Date().getTime()
            if (nowPingTS - lastPingTS > 10 * 1000) {
                client_private.write("ping")
                lastPingTS = nowPingTS
            }            
        }        
    }
}

function onexit() {    
    var ret = client_private.close()
    Log("关闭连接!", ret)
}

Thêm nữa