Использование httr для размещения заказов через API BitMex
Я пытаюсь использовать пакет httr R для размещения заказов на BitMex через их API.
Здесь я нашел некоторые рекомендации, и после указания и моего API-ключа, и секретного в соответственно объектах K и S, я попробовал следующее
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 объясняет использование их API, но мне кажется, что-то не хватает. Они перечисляют пару проблем, которые могут лежать в основе моей недействительной проблемы с подписью, но, похоже, они мне не помогают. Следуя их примеру, я получаю точно такие же хеши, так что, похоже, в порядке.
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 - который предоставляет оболочку для большинства конечных точек API BitMEX, которые могут вас заинтересовать. Все еще довольно "молодой" пакет, поэтому я буду приветствовать любые отзывы!