@костян спасибо всем кто оказывал помощь. Тема закрыта закрыта.
Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!
-
Привет, форумчане
Не простой вопрос и даже просьба к вам у меня сегодня.
Нужно разобраться как пройти авторизацию на бирже Битмекс по API.
Один чел мне сказал, что это делается путем отправки HTTP-заголовков.
В качестве исходных данных имеется:- apiKey = 11111111111 и apiSecret = 222222222222222 (это для примера). Они указаны в личном кабинете биржи и у каждого уникальные. С их помощью нужно авторизоваться.
- Документация биржи. На сайте расписано заумным языком как происходит авторизация на биржи по API и даны ссылки на примеры (на гитхабе) рабочего кода авторизации на разных языках: https://www.bitmex.com/app/apiKeysUsage#-
Далее в документации имеется информация по POST и GET запросам: https://www.bitmex.com/api/explorer/#/
Интересует в первую очередь запрос на создание ордера (мне главное принцип понять на примере, а там разберусь сам наверное). Для этого можно сразу перейти в пункт в разноцветном раскрывающемся списке «Order : Placement, Cancellation, Amending, and History». Далее POST запрос «Create a new order.». Будет куча описания и ниже поля. В качестве необходимых нужно заполнить следующие поля: symbol (значение будет XBTUSD), side (значение Buy, т.е. покупка), orderQty (значение 1, т.е. 1 доллар), price (пускай будет 5000). После заполнения ниже нажимаем кнопку «Try it out!» и нам формируют данные (Curl, Request URL и прочее). Куда их вставлять и девать мне не понятно!
Запросы на создание ордера должны проходить одновременно с авторизацией, как я понимаю.
И вот на основе этих данных и документации нужно сформировать HTTP (или POST) запрос на создание ордера (в Басе переходим в меню HTTP-клиент, -> POST-запрос). То бишь как то прописать это в бас. И прописать я полагаю нужно вот сюда (см. скриншот). Т.е. прописать URL запроса, заголовок и возможно Post Data. Что конкретно писать в моем случае я не понимаю.

Для тестирования можно использовать демо версию биржи: https://testnet.bitmex.com/app/trade/XBTUSD
Прошу не менять пароль, т.к. это демо аккаунт и реальных денег там нет.
Было бы неплохо если б кто нибудь обучающими видео BAS для API поделился. Был бы рад. -
Чувак, это слишком сложно. Здесь в основном дают советы по правильной настройке функционала БАС, по корректной логике выполнения скрипта, отладке ошибок. Но ты превзашел всех: ты хочешь, чтобы мы изучили документацию API сайта и дали готовое решение? Иногда нужно учиться самому. И прежде, чем приступать к запросам на HTTP, изучи, как это впринципе работает, тогда не будет возникать вопросов на этот счет.
Ну может, кто-то из старожилов форума и найдет время на это. -
@olegtut said in Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!:
Чувак, это слишком сложно. Здесь в основном дают советы по правильной настройке функционала БАС, по корректной логике выполнения скрипта, отладке ошибок. Но ты превзашел всех: ты хочешь, чтобы мы изучили документацию API сайта и дали готовое решение? Иногда нужно учиться самому. И прежде, чем приступать к запросам на HTTP, изучи, как это впринципе работает, тогда не будет возникать вопросов на этот счет.
С простым API мне понятно как работать, уже писал скрипты: API-ключ указывается в URL ссылке и дополнительные параметры. Затем просто выполняем переход по ссылке и получаем ответ в формате JSON. На некоторых биржах так и сделано, но только не на Битмекс.
Рад бы изучить. Жаль уроки у автора только для премиум пользователей, я таким не являюсь. Мож поделитесь?@root said in Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!:
Вы о чем вообще? оно просто не будет работать не используя нод потому что требуется каждый раз SHA256 высчитывать.
Мне по сути придется свой сервер поднимать на основе их скриптов, т.е. мой комп будет работать как сервер? Их скрипты по моему как раз это и делают. Надо только разобраться куда чего вставлять.
-
@botovod said in Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!:
Жаль уроки у автора только для премиум пользователей
А где Вы нашли уроки только для премиум? я премиум но нигде не встречал уроков именно для этой категории.
Все что видел есть на ютубе и там оно доступно для всех -
@root said in Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!:
@allive Вы о чем вообще? оно просто не будет работать не используя нод потому что требуется каждый раз SHA256 высчитывать.
можно и без нод. https://passwordsgenerator.net/sha256-hash-generator/ запрос туда и все.
-
@botovod said in Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!:
Мне по сути придется свой сервер поднимать на основе их скриптов, т.е. мой комп будет работать как сервер? Их скрипты по моему как раз это и делают. Надо только разобраться куда чего вставлять.
не нужно этого. простое клиентское приложение, в документации все подробно расписано
-
Спасибо за подсказки ребята. У меня немного прояснилось как это должно выглядеть.
Решил попробовать через Node JS, в БАСе это меню "встроенные языки" -> "Node.js". Туда я добавил программный код, который предлагает БИТМЕКС на гитхабе: взято тут https://github.com/BitMEX/api-connectors/tree/master/official-http/node-requestvar request = require('request'); var crypto = require('crypto'); var apiKey = "API_KEY"; var apiSecret = "API_SECRET"; var verb = 'POST', path = '/api/v1/order', expires = new Date().getTime() + (60 * 1000), // 1 min in the future data = {symbol:"XBTUSD",orderQty:1,price:590,ordType:"Limit"}; // Pre-compute the postBody so we can be sure that we're using *exactly* the same body in the request // and in the signature. If you don't do this, you might get differently-sorted keys and blow the signature. var postBody = JSON.stringify(data); var signature = crypto.createHmac('sha256', apiSecret).update(verb + path + expires + postBody).digest('hex'); var headers = { 'content-type' : 'application/json', 'Accept': 'application/json', 'X-Requested-With': 'XMLHttpRequest', // This example uses the 'expires' scheme. You can also use the 'nonce' scheme. See // https://www.bitmex.com/app/apiKeysUsage for more details. 'api-expires': expires, 'api-key': apiKey, 'api-signature': signature }; const requestOptions = { headers: headers, url:'https://testnet.bitmex.com'+path, method: verb, body: postBody }; request(requestOptions, function(error, response, body) { if (error) { console.log(error); } console.log(body); });API_KEY и API_SECRET разумеется заменил на свои рабочие значения.
Но БАС выдает ошибку: Cannot find module 'request'
В чем ошибка и как исправить?