@Fox Спасибо большое!
Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!
-
@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'
В чем ошибка и как исправить? -
Форумчане, снова нужна ваша помощь.
С созданием и редактированием ордера через Node JS более менее разобрался, это работает. Модуль request установил, crypto не ставил, вроде и без него шифрует нормально (или нет?).
Но помимо этого мне еще нужно выполнять и другие запросы к бирже, в частности - получить размер текущей открытой позиции (в долларах) (см. скрин), и вот тут непонятки.

Понятно, что размер позиции доступен только после авторизации, значит для отправки запроса через Node JS или GET запросом тоже требуется авторизация.
Вобщем я набросал скрипт. Внутри скрипт я разделил на части действием "прервать скрипт", чтоб не создавать несколько скриптов.
Самое первое действие это Node JS - это создание ордера, он работает, и я привел его для примера (там используется официальный код для авторизации, о котором говорится в руководстве).Мне сейчас нужно получить размер позиции (количество контрактов), кто не понимает что это - это количество долларов которое я купил после испольнения ордера, т.е. битки обменял на доллары (в ЛК отображаются как цифра).
Затем идут четыре зеленых действия - это попытка получить размер позиции и записать ее значение в переменную. Для этого я попытался сгенерировать переменную [[SIGNATURE]] в Node JS, а затем отправить GET запрос с заголовком обычным действием в BAS.
Не вышло. Выдает ошибку "Signature not valid". В руководстве к бирже есть упоминание об этой ошибке, см. по ссылке https://www.bitmex.com/app/apiKeysUsageИ наконец последние три блока (голубые) - попытка сделать GET запрос исключительно через Node JS и вывести ответ в переменную. Тоже не вышло.
Вот скрипт 0_1530018473036_B - TESTNET.xml
Сразу скажу, что скрипты авторизации в руководстве биржи сделаны для www.bitmex.com, поэтому "www" в адресе нужно заменить на "testnet" (без "www"). В моих примерах я уже сделал это.
Вобщем нужно получить размер позиции (количество контрактов).
Ссылка на руководство по авторизации: https://www.bitmex.com/app/apiKeysUsage
Ссылка на тех. документацию по использованию API: https://www.bitmex.com/api/explorer/#!/Position/Position_get (после перехода откроется раздел где описывается как получить позицию,
Position : Summary of Open and Closed Positions -> Get your positions).Возможно нужно лишь правильно сформировать заголовок GET запроса, хотя не уверен что проблема именно в этом.
Кто сможет сделать удачный GET запрос и вывести значение позиции (кол-во контрактов) (или ответа, содержащего позицию) в переменную тому в качестве бонуса даю 50 руб.
-
@bablouser said in Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!:
ахахах ))) хоть не белорусских ? ))
Ну 50 белорусских рублей это сейчас ~25$ так что есть за что бороться :)
