使用数字货币交易所聚合行情接口构建多品种策略

FMZ量化交易平台策略围观板块里面经常见到一些多品种策略,同时检测几十个甚至一个交易所全市场的行情。是如何做到的呢?并且需要如何设计呢?本篇文章带你一起来探讨如何使用交易所聚合行情接口构建多品种策略。列举币安和火币这两个交易所,查看交易所API文档,发现都有聚合行情接口:

行情接口

币安合约:

https://fapi.binance.com/fapi/v1/ticker/bookTicker

接口返回数据

火币现货币币:

https://api.huobi.pro/market/tickers

接口返回数据

但是,实际不是这样的,火币接口实际返回的结构是:

在处理接口返回的数据时需要注意。

构建策略程序框架

如何在策略中封装这两个接口,又如何处理数据呢?一起慢慢来看。先来写一个构造函数,用于构造控制对象。

使用FMZ的API函数HttpQuery函数发出请求,访问交易所接口。使用HttpQuery时需要使用异常处理try...catch处理接口返回失败等异常情况。看到这里有的同学可能会问:“交易所接口返回的数据结构各不相同,要怎么处理呢?用同样的处理方式肯定不行吧。”确实如此,不仅交易所接口返回的数据结构不同,就连返回的数据字段命名也不同。同样的一个意思可能是不同的命名。例如以上我们列举的接口。同样表达的意思是买一价格,在币安称为:bidPrice,在火币称为bid。

我们这里使用回调函数解决,把这些特殊处理的部分独立出来。所以上面这个对象初始化后,具体使用时就成了这样:(以下代码省略了构造函数createManager)

以币安期货监控这些合约:["BTCUSDT", "ETHUSDT", "EOSUSDT", "LTCUSDT", "ETCUSDT", "XRPUSDT"]

火币现货监控这些币币交易对:["btcusdt", "ethusdt", "eosusdt", "etcusdt", "ltcusdt", "xrpusdt"]为例子。

运行测试:

第一个交易所对象添加币安期货,第二个交易所对象添加火币现货

可以看到,这里把如何取接口返回的数据等操作使用回调函数进行不同交易所的特异化处理。

制定了行情获取,接下来可以制定账户资产获取,因为多品种策略,账户资产数据同样也要是多个的。好在交易所账户资产接口一般都是返回全资产数据。在构造函数createManager中添加获取资产的方法

同样由于交易所接口返回的格式,字段命名各不相同,这里也需要使用回调函数特异化处理。以火币现货,币安期货为例子,可以这样写回调函数:

 

运行具有获取行情、资产功能的策略框架

行情:

资产:

可以看到获取到行情数据后,可以处理数据计算各个品种的差价,监控多个交易对的期现差价。进而可以设计一个多品种的期现对冲策略。根据这样的设计方式,还可以扩展其它的交易所,有兴趣的同学可以动手试下~

本文来源:陀螺财经 文章作者:发明者量化
收藏
举报
发明者量化
累计发布内容31篇 累计总热度10万+

陀螺财经现已开放专栏入驻,详情请见入驻指南: https://www.tuoluocaijing.cn/article/detail-27547.html

发明者量化专栏: https://www.tuoluocaijing.cn/columns/author323211/

本文网址: https://www.tuoluocaijing.cn/article/detail-10059013.html

免责声明:
1、本文版权归原作者所有,仅代表作者本人观点,不代表陀螺财经观点或立场。
2、如发现文章、图片等侵权行为,侵权责任将由作者本人承担。

相关文章