币安API实验室🚩

币安API文档

https://www.binance.comarrow-up-right

https://binance-docs.github.io/apidocs/spot/cn/arrow-up-right sammchardy/python-binance-chainarrow-up-right binance-exchange/binance-official-api-docsarrow-up-right

币安虽然成立时间不长,但由于技术出色,API稳定高效,请求频率限制也宽松,上币很多,交易活跃,已经是现货交易的首选平台。币安目前仅以BTC定价的币种就超过了150种,还在不断增加中,这使得获取很多币种行情和K线变的困难。本文将主要介绍如何在FMZ量化平台上操作多币种策略,甚至操作所有币种都没问题,主要面向有一定基础的用户。

1.获取行情

假如要同时操作150个币种,使用REST协议获取行情显然不合适,一遍轮询下来会浪费很多时间,websocket也无法同时订阅如此多的币种。币安意识到多品种策略获取行情的问题,提供了聚合行情接口,但直接使用这个REST接口(/api/v1/ticker/24hr)需要注意,它的权重是40,意思是一次访问相当于普通访问的40次,即使5、6秒访问这个接口一次,也有可能超出限制。

因此我们需要访问这个接口的websocket版,但要注意由于数据量巨大,数据只是固定1s推送一次有行情变化的数据,对于一些几分钟也没交易的冷门币种,可能很长时间也没推送,固定的推送时间对于高频策略也不合适,但对于一般的多币种策略是足够的。具体代码如下:

function main() {
    var client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr");
    while (true){
        var data = client.read();
        var msg = JSON.parse(data);
        updateTicker(msg);//updateTicker函数处理行情和交易,接下来介绍
    }
}

2.交易前的准备

币安对交易的限制很多,最小交易价值,最小交易量,价格精度,交易量精度。这些都需要提前做好准备。

定义的全局变量:

接下来主要是完善accountInfo的内容,所有与交易对相关的内容都储存到其中。

3.更新账户和K线信息

更新账户信息函数,不用实时更新。

更新K线,初次更新可以分次使用GetRecords函数,后期更新使用推送数据合成

4.交易相关函数

5.交易的逻辑

交易很简单,只要把买卖的币种推送到buyList和sellList中就可以了

6.更新机器人界面状态和ticker

这么多交易币种如何展示也是个问题,幸好FMZ量化平台提供了完善的表格功能,还可以按照数字大小排序,简单直观方便。每次websocket推送ticker时更新,由于是事件驱动,交易和各类更新的逻辑也放在这里。

7.执行汇总

8.总结

本文主要展示了一个基础的币安多币种交易框架,主要包含了如何储存交易信息、如何根据ticker合成K线、如何下单、如何展示策略图表以及基于ticker推送事件触发交易等。可以更改和定制的地方很多,整体由我个人策略摘录而来,可能隐含Bug,仅供有一定基础的用户参考。\

若尘的意见

我随便说一点

要想套利,肯定要实时获得价格

用普通的api,效率太低,有速率限制(一天200000次,一次只能查一个交易对)

所以必须用websocket

而且不能用价格推流,因为那个一秒更新一次

你需要接受所有成交和挂单信息,在本地维护一个订单簿

这是不小的工作量,努力吧

github上应该直接有套利机

python的肯定也有