我正在使用 C# WAMP 客户端连接到 Poloniex 交易所,根据交易所提供的文档获取实时市场 data.AS 为了创建实时订单簿,我们必须首先通过他们提供的 REST API 获取订单簿的快照并从中提取序列号,然后连接到 WAMP 服务器以获取流数据并更新订单簿快照。
我在更新通过 rest api 收到的快照订单簿时遇到问题,因为我通过 REST API 收到的序列号比通过 WAMP 收到的序列号早了近 400k 条记录。
有没有其他方法可以从POloniex交易所获得实时流数据,或者我错过了什么?
我有同样的问题。似乎他们有一些错误。我注意到的是,在正常更新消息和"心跳"消息(没有有效负载的消息(中发送了不同的序列。文档指出,检测信号消息应重复上一个正常消息序列号。但它不同。但是,它对应于 REST API 返回的数字。因此,似乎对心跳消息"有效",而对普通消息"有效"。看起来很像一个错误。
这里还有一些相关的问题。
UPD:还检查了"newTrade"事件,其中包含REST API返回的交易历史。WAMP 中的交易 ID 明显低于快照中的实际 ID。似乎通过推送 API 发布的事件已经过时了几个小时,这就是所有这些行为的解释。所以推送 API 现在无法使用。
最后,似乎目前要走的方法是使用他们的纯WebSocket API,该API由Web界面使用。它位于 wss://api2.poloniex.com。唯一的问题是缺乏文档。一种方法是对 Web 界面的流量进行逆向工程。一些糟糕的信息可以在这样的代码片段或此处的讨论中找到。
原始 websocket 似乎没有处于活动状态。活跃的确实是:wss://api2.poloniex.com。我正在用 swift 编写我的应用程序,但也许您会发现这很有帮助。对于订单簿条目,我发送以下消息:"{"命令":"订阅","通道":"(硬币对("}"。
正确使用引号非常重要(如上所述(。"(coinPair("是字符串插值,因此您可以包含要获取订单簿的任何硬币对。当然,您必须消除 ((。这些仅适用于快速。
如果您想获得所有股票代码价格的实时提要,您必须发送以下消息:"{\"命令":\"订阅",\"频道\":1002}"。再次注意使用正确的引号。
希望这有帮助。