问题标签 [bitmex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 无法通过 Python 退出 Bitmex 测试网的 websocket 连接
我正在尝试一些基本的东西来连接 Bitmex 测试网 websocket。我原本想在使用 market_depth() 函数接收到一些数据后,通过 exit() 函数关闭 WS 连接。但不知何故,exit() 函数不起作用,WS 只是不断地将数据推送给我。
但令人惊讶的是,当我在调试模式下运行时,exit() 函数实际上可以在我逐行运行脚本时关闭 WS。背后的原因是什么?感谢您的帮助。下面是我使用的代码。
ps 我是新来使用 REST 或 WS api,希望能以某种方式详细解释
c++ - 使用 Boost Beast 和 Ubuntu 18 从 AWS 实例到 Bitmex 的 HTTP 延迟
我在 eu-west-1c 中有一个 AWS ec2 实例,它与目标服务器 - www.bitmex.com是同一个数据中心。如果我$ping bitmex.com
从实例运行,平均往返时间约为 0.4 毫秒。对于$ping bitmex.com/api/v1
(专门测试 API 端点)也是如此。但是,当我从一些 c++ 代码运行 http 请求时,bitmex.com/api/v1/order/bulk
往返时间永远不会超过 ~10 毫秒,但这是一种罕见的情况,大多数请求所花费的时间在数百毫秒或更多。这使得这些调用和 ping 时间之间的差异会慢 1000 倍。
这些消息专门来自和来自订单引擎(由于 /order/bulk 端点),所以我知道一些延迟可能与另一端的服务器有一些处理要做的事实相关联。但是,我以前从未见过它这么慢 - 之前在对此进行分析时,我观察到对同一端点的请求与 ping 时间在同一区域的时间,如果有时不是更快的话。无论市场活动如何,因此也会出现这种延迟,因此 bitmex 端点有多忙。
这让我想知道问题是否出在我的代码、正在使用的 http 库、AWS 实例的设置或其他方面。我认为这里的一个关键点是,我使用 pycurl 作为 http 库在 python 版本中测试了相同的程序,它实际上在往返时间上略微优于 c++ 版本,我知道这与 python 与 c++ 无关现在是消息在网络上传输并再次返回的时候了(忽略内核和 http 库在幕后所做的事情),目的只是测试不同的语言和 http 库以查看问题是否存在。python 代码设法在 1 毫秒或接近 1 毫秒内返回一些消息,因此它的最佳情况下的性能比 C++ 代码的最佳情况下快 10 倍左右。
我在 C++ 中尝试的下一件事是先读取标题,然后读取正文,以防 Beast(我正在使用的 http 库)等待正文结束一段时间。分析表明,延迟完全是在发送请求和实际再次接收任何字节之间。我发现这一点是通过观察读取标题所花费的时间在 100 毫秒内,然后读取正文最多需要几微秒。因此,主体的数据必须已经在机器上,并且在调用 read 时准备就绪,但是等待消息的标头/初始字节。
因此,我想知道是什么原因造成的 - 是否有其他人对 bitmex API 的这个端点有同样的延迟?任何人都可以就如何调试或可能导致延迟的原因提供任何建议吗?
设置:
- AWS 实例正在运行 Ubuntu Server 18
- c++17 在 ubuntu 20(我的本地机器)上使用 g++9 编译,然后 scp 到 AWS 实例并在那里运行
- 仅使用异步调用的 http Boost Beast 库
- 所有电话都是https
我尝试和测试过的其他事情:
- Ubuntu 20 与 18 - 没有区别
- Boost asio 处理程序跟踪器 - 无法让它工作/不知道在哪里或如何查看它的输出
- cURL c++ http 库 - 没有区别
这是我的应用程序的精简版本,它应该使用第 1 行中包含的用于编译它的命令来编译和运行 - 为了让它在交易所成功打开订单,您需要添加一个 API 密钥和秘密声明为类的成员变量。此代码连接到 bitmex.com,保持连接有效并向 bitmex.com/api/v1/bulk 发送 5 个相同的订单,并将响应时间打印到控制台:
来自并置服务器的结果:
似乎如您所料,由于与服务器建立连接,第一个响应需要更长的时间。在那之后,响应时间要快得多,但仍然比 ping 时间长约 10 倍。然而,它确实是可变的,另一次运行它会给出:
慢得多。
javascript - 使用 setTimeout 重新订阅 websocket 频道
我在 vue.js 中编写了一个代码,它创建了一个 websocket 连接并订阅了一个通道以获取 BTC 的美元数据。
但是那个频道会发送一些价格的更新数据,但我需要一种方法来重新订阅频道以获取更新价格。
这是我尝试过的代码:
python - 如何通过 Python 上的 Bitmex Websocket Api 接收实时数据?
我知道我可以使用“while true”并调用“get_ticker”方法来获取产品的最新价格,但这来自 python 而不是市场本身。我想知道随着 BitMEX 网站的变化,是否有办法获得最新价格。谢谢
dart - BITMEX API - 通过给定符号取消订单 - 如何在 Dart 语言中执行?
我尝试使用仅给出订单符号的 formData 发送取消订单请求。但不幸的是,所有其他订单也从交易所中删除。我添加到请求中的 formData 似乎不起作用。
在 Dart 语言中,有没有人知道使用 formData 向服务器发送取消请求的正确方法是什么?
非常感谢你。
python - Bitmex REST API 删除请求签名无效
尝试通过 bitmex 上的 REST API 发送取消订单请求。响应是签名无效。我将签名生成器用于获取和发布请求并且工作正常。
仍然试图弄清楚我在这里做错了什么。
python - Python Bitmex 交易机器人 -. 向 api/v1/instrument/active 和 api/v1/user/margin 发出获取请求时出现连接错误
我正在学习如何构建 Python 交易机器人,我正处于编程的第一步,我需要一些帮助。我在尝试使用 API 连接器从基本 URL 和来自 bitmex.com 的 Websocket 获取信息时遇到了这个错误。
这是连接到主机的代码:
BitmexClient 类:
与错误相关的代码段:
这是错误:
api - 尽管通过连接池保持活动状态,BITMEX Websocket 连接仍会断开/断开
每隔一段时间,Bitmex 就会断开我们的 websocket 连接,这会迫使我们重新连接。但是,它们提供了一个每小时 40 个连接的连接池。在低波动时期,这似乎根本不是问题,但是一旦交易活动增加,我们就会立即通过这 40 个连接,最终使我们的连接失效。
我们确实有一个keep-alive,但它根本不能解决问题。
我们还没有看到关于如何处理这个问题的 API 文档的任何细节,或者我们在波动性上升时得到如此多关闭操作码的具体原因
有谁知道我们是否做错了什么?
编辑:心跳也到位
coinbase-api - 什么是coinbase pro api相当于https://www.bitmex.com/api/v1/instrument/active
我正在尝试将 bitmex api 代码块转换为 coinbase pro API。
是否有相当于https://www.bitmex.com/api/v1/instrument/active的 coinbase pro api
python - RestAPI 过滤器参数 JSON
我正在尝试从 bitmex API 获取最后的数据
基本 URI:https ://www.bitmex.com/api/v1
我真的不明白如何使用过滤器获取最后的数据(从今天开始):https ://www.bitmex.com/app/restAPI
这是我的代码:
响应是:
它错过了几个小时,我尝试使用 endTime、StartTime 和 Count 但没有成功。我想我需要传递另一个过滤器,比如 endtime = now 和 timestamp.time = now 但我不知道如何发送有效负载或如何发送对它进行 url 编码。