币安合约websocket接口查询持仓账户范例

Author: 小小梦, Date: 2020-12-15 15:21:45
Tags: ToolBinance

币安合约websocket接口查询持仓账户范例

币安文档:https://binance-docs.github.io/apidocs/delivery/cn/#e3ee8329c9

测试时添加配置之后的币安期货交易所对象。

img


function main() {
    LogReset(1)
    var ws = null
    exchange.IO("base", "https://dapi.binance.com")
    var obj = exchange.IO("api", "POST", "/dapi/v1/listenKey")
    Log(obj, typeof(obj))
    var listenKey = obj.listenKey
    Log("listenKey:", listenKey)
    var ts = new Date().getTime()
    ws = Dial("wss://dstream.binance.com/ws/" + String(listenKey))
    while (1) {
        var arr = ["balance", "account", "position"]
        for (var i in arr) {
            var info = {
                "method": "REQUEST",
                "params": [
                    listenKey + "@" + arr[i]
                ],
                "id": ts
            }
            ws.write(JSON.stringify(info))
            var ret = ws.read()
            Log(ret)
            Sleep(1000)
        }
        Sleep(1000)
    }
}

Related

More

liwenlue 你好,请教下订单更新怎么获取呢,u本位一直没有收到订单信息

fyr 请问Dial函数内部是否已经处理了ping-pong回复?需要自己写吗? /upload/asset/21b18cce8439c5312c140.png

韬奋量化 这个例子的方法好像只适用于币本位合约吧?我试过把合约地址改成u本位,发现不能通过websocket主动查询"balance", "account", "position"等信息

小小梦 刚才测试了,这个例子里币本位地址改成U本位地址就可以了,订单信息是不需要订阅的,直接会推送。测试了一下,撤单重新挂单,就会推送一个订单变动消息。

liwenlue 问题就出在这个点上了,币本位包括行情数据都有类似@balance这类订阅方法,但是u本位订单数据是没有订阅的,这点我问了币安客服,是让我直接用wss://fstream.binance.com/ws/XaEAKTsQSRLZAGH9tuIu37plSRsdjmlAVBoNYPUITlTAko1WI22PgmBMpI1rS8Yh(自己的listenKey)这个方法获取全部数据再处理,但是我用这个方法貌似在发明者是获取不到的,不知道我操作有问题还是怎么,麻烦大佬有空试一下,万分感谢,或者有订阅u本位订单的示例代码给我就可以哈

小小梦 您好,需要订阅对应频道才会有推送的数据,具体可以看下交易所文档上如何订阅,例子里只订阅了这些:```var arr = ["balance", "account", "position"]```

小小梦 币安的是在底层的心跳包,不需要策略层面```xxx.write()```写入消息。

小小梦 根据交易所文档写。不一定币本位和U本位是一模一样的 /upload/asset/17a3ea8b5fed6c2d05fd.png /upload/asset/1699cb3f9cea6f9b2012.png