首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Binance查看加密货币的累计清算?

如何从Binance查看加密货币的累计清算?
EN

Stack Overflow用户
提问于 2021-05-12 19:27:24
回答 2查看 4K关注 0票数 6

在这些站点(https://coinalyze.net/ethereum-classic/liquidations/BTC/USDT)上,我可以在grpah LiquidationsLong LiquidationsShort LiquidationsAggregated Liquidations COIN-margined ContractsAggregated Liquidations STABLECOIN-margined Contracts中添加以下指示。

累计清算=硬币保证金合同的清算+稳定保证金合同的变现为美元。目前只包括BTC/美元和BTC/USDT合同。请参阅指示符选项,您可以选择/取消选择单个合同。

=>主要问题是如何获得用于加密货币清算的数据流,如果可能的话,可以从Tradingview或Binance之类的交易所获得。

我尝试将Aggregated liquidationsLiquidations添加到“期货”下的加密货币在https://www.tradingview.com上的图表中。我无法找到它的松脚本代码或内置指示器,所以我认为数据是私有的,对我来说是死胡同。

是否有可能从Binance或其他交易所获得用于加密货币清算的数据流?还是将Aggregated liquidations添加到TradingView上用于加密货币的图形中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-17 12:49:16

我从这里开始:

您必须安装以下软件包:pip install websocket-client websocket

代码语言:javascript
复制
#!/usr/bin/env python3

import websocket


class Liq:
    def __init__(self):
        self.socket = "wss://fstream.binance.com/ws/!forceOrder@arr"
        self.ws = websocket.WebSocketApp(self.socket, on_message=self.on_message, on_close=self.on_close)
        self.symbol: str = ""
        self.order_quantity = 0
        self.event_time: int = 0
        self.average_price: float = 0.0
        self.side = ""
        self.price: float = 0.0
        self.order_last_filled_quantity = 0.0
        self.order_filled_accumulated_quantity = 0
        self.order_trade_time = 0

    def print_result(self):
        amount = int(self.order_quantity * self.average_price)
        print(f"==> symbol={self.symbol}")
        print(f"==> side={self.side} | ", end="")
        if self.side == "BUY":
            print("shorts liquadated")
        else:
            print("longs liquadated")

        print(f"==> order_quantity={self.order_quantity}")
        print(f"==> event_time={self.event_time}")
        print(f"==> order_last_filled_quantity={self.order_last_filled_quantity}")
        print(f"==> order_filled_accumulated_quantity={self.order_filled_accumulated_quantity}")
        print(f"==> order_trade_time={self.order_trade_time}")
        print(f"==> price={self.price}")
        print(f"==> average_price={self.average_price}")
        print(f"==> liq_amount={amount}")
        print("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-")

    def on_message(self, ws, message):
        """Fetch liquidation Order Streams.

        __ https://binance-docs.github.io/apidocs/futures/en/#liquidation-order-streams
        """
        for item in message.split(","):
            item = item.replace("}", "").replace("{", "").replace('"', "").replace("o:s:", "s:")
            if "forceOrder" not in item:
                _item = item.split(":")
                if _item[0] == "E":
                    self.event_time = int(_item[1])
                elif _item[0] == "s":
                    self.symbol = _item[1]
                elif _item[0] == "S":
                    self.side = _item[1]
                elif _item[0] == "q":
                    self.order_quantity = float(_item[1])
                elif _item[0] == "p":
                    self.price = _item[1]
                elif _item[0] == "ap":
                    self.average_price = float(_item[1])
                elif _item[0] == "l":
                    self.order_last_filled_quantity = _item[1]
                elif _item[0] == "z":
                    self.order_filled_accumulated_quantity = _item[1]
                elif _item[0] == "T":
                    self.order_trade_time = _item[1]

        self.print_result()


    def on_close(self):
        print("closed")


liq = Liq()
liq.ws.run_forever()

输出示例,将打印所有已清算的对:

代码语言:javascript
复制
==> symbol=KEEPUSDT
==> side=SELL | longs liquadated
==> order_quantity=4705.0
==> event_time=1634474643639
==> order_last_filled_quantity=278
==> order_filled_accumulated_quantity=4705
==> order_trade_time=1634474643630
==> price=0.9877
==> average_price=1.0
==> liq_amount=4705
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
==> symbol=FTMUSDT
==> side=BUY | shorts liquadated
==> order_quantity=1458.0
==> event_time=1634474896201
==> order_last_filled_quantity=1240
==> order_filled_accumulated_quantity=1458
==> order_trade_time=1634474896197
==> price=2.257972
==> average_price=2.236581
==> liq_amount=3260

之后,您可以将这些结果存储在像mongadb这样的数据库中。

票数 4
EN

Stack Overflow用户

发布于 2021-07-10 06:11:00

简而言之,答案是否定的,这是不可能的,因为Tradingview没有提供那种级别的数据。像coinalyze这样的网站正在使用Tradingview插件,并为清算提供自己的数据流。

要在Trandingview平台上创建相应的平台本身,有一些解决办法,但它并不理想。它不是实时数据,您必须自己手动更新数据数组。你也必须自己来获取清算数据。

您必须注意到第一个数据输入的时间戳,并将清算数据解析为一组逗号分隔的值。

在那里,您可以使用array.from()将其“导入”到脚本中。

代码语言:javascript
复制
start_timestamp = timestamp(2021, 7, 9, 0, 0, 0)

var float[] a_longLiqs = array.from(17, 13458.4, 87453.56, 2345.23 , 23457.983, 353, .... etc)

var int index = na
var bool started = false
float longLiqs = na

if time == start_timestamp
    started := true
    index := 0
else if time > start_timestamp
    index += 1

if started and index < array.size(a_longLiqs)
    longLiqs := array.get(a_longLiqs, index)

plot(longLiqs)

此时,您已经有效地将数组转换为时间序列变量longLiqs,您可以与任何其他变量(如closevolume等)一起工作。但是,只有手动将其添加到数组中时才能获得新数据。

获取聚合数据本身是一个很大的过程。您必须使用exchange的API。

例如:https://www.bitmex.com/api/explorer/#/Liquidation

利克记录

在js和python中都有很多关于github的现有项目,我建议您从那里开始,而不是重新发明轮子。例如,加密提要py包可能是一个很好的起点,因为它似乎支持在多个交易所中提取清算数据。

https://pypi.org/project/cryptofeed/

https://github.com/bmoscon/cryptofeed/blob/master/docs/callbacks.md

一旦您拥有了数据,就必须自己聚合它,并像我前面提到的那样解析它,以便能够将它插入到松树数组中。

或者,还有付费数据提供程序,如果您对数据进行支付的话,可能会使它变得更容易一些。您可能仍然需要聚合和解析它,但是您只需要处理一个API,而不必从每个交换中管理它。

以下是我发现的一个似乎提供了总清算数据的数据:https://www.cryptometer.io/api-doc/

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67509891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档