我正在尝试使用httr R软件包通过其API在BitMex上下订单。
我在here上找到了一些指导,并分别在对象K和S中指定了我的API密钥和密钥,然后尝试了以下操作
verb <- 'POST'
expires <- floor(as.numeric(Sys.time() + 10000))
path <- '/api/v1/order'
data <- '{"symbol":"XBTUSD","price":4500,"orderQty":10}'
body <- paste0(verb, path, expires, data)
signature <- hmac(S, body, algo = 'sha256')
body_l <- list(verb = verb, expires = expires, path = path, data = data)
然后两者:
msg <- POST('https://www.bitmex.com/api/v1/order', encode = 'json', body = body_l, add_headers('api-key' = K, 'api-signature' = signature, 'api-expires' = expires))
和:
msg <- POST('https://www.bitmex.com/api/v1/order', body = body, add_headers('api-key' = K, 'api-signature' = signature, 'api-expires' = expires))
选中时给我同样的错误消息:
rawToChar(msg$content)
[1] "{\"error\":{\"message\":\"Signature not valid.\",\"name\":\"HTTPError\"}}"
我尝试根据BitMex explains to use their API的方式进行设置,但似乎缺少一些东西。他们列出了一些可能是我的无效签名问题的根本原因,但似乎并没有帮助我。遵循他们的示例时,我得到的哈希值完全相同,因此似乎是有序的。
答案 0 :(得分:0)
在这里晚些聚会,但希望能有所帮助!
您的POST呼叫只需要进行一些小的更改:
添加content_type_json()
在.headers = c('the headers')
中包括add_headers()
。请参见下面的示例:
library(httr)
library(digest)
S <- "your api secret"
K <- "your api key"
verb <- 'POST'
expires <- floor(as.numeric(Sys.time() + 10))
path <- '/api/v1/order'
data <- '{"symbol":"XBTUSD","price":4500,"orderQty":10}'
body <- paste0(verb, path, expires, data)
signature <- hmac(S, body, algo = 'sha256')
msg <- POST('https://www.bitmex.com/api/v1/order',
encode = 'json',
body = data,
content_type_json(),
add_headers(.headers = c('api-key' = K,
'api-signature' = signature,
'api-expires' = expires)))
content(msg, "text")
我在CRAN上有一个软件包-bitmexr-提供了您可能感兴趣的大多数BitMEX API端点的包装。这还是一个“年轻”的软件包,因此,欢迎您提供反馈!