Jump to content

отправка запросов к API Poloniex


QweR1ty

Recommended Posts

Posted

Друзья, всем привет. Кто делал себе бота для биржи? Решил написать себе бота на delphi. Уже больше суток мучаюсь с этим делом. Вот кусок кода:

 

nonce := FormatDateTime('yyyymmddhhnnsszzz',now);  

post := TStringStream.Create;  

post.WriteString('command=returnBalances&nonce='+ nonce);  

sign:=SHA512DigestToHex(CalcHMAC_SHA512(Secret,post.DataString));  

IdHttp1.Request.CustomHeaders.FoldLines := false;  

idhttp1.Request.CustomHeaders.Values['Key']:=API-Key;  

idhttp1.Request.CustomHeaders.Values['Sign']:=sign;  

Memo1.Text:= idhttp1.Post('https://www.poloniex.com/tradingApi', post);

 

Получаю ответ: {"error":"Invalid command."}

 

Вот сама документация по API - https://poloniex.com/support/api .В документации также есть ссылка на пример кода phyton и php, но этот код не особо понимаю.

 

 В чем может быть проблема? подскажите, пожалуйста :)

Posted (edited)

Команда у тебя должна быть "returnBalances" и все, без всяких "command=returnBalances&nonce="

Edited by Lordaster
Posted

А как же уникальное целое число? пишут, что оно тоже нужно. У вас уже был опыт написания подобных программ?

Команда у тебя должна быть "returnBalances" и все, без всяких "command=returnBalances&nonce="

Additionally, all queries must include a "nonce" POST parameter. The nonce parameter is an integer which must always be greater than the previous nonce used.

Posted

Делал на питоне. Не силен в дельфи, но там передаешь всего два параметра (саму команду и nonce).Вот смотри как это реализовано у меня

def returnAvailableAccountBalances():
    nonce = int(time.time() * 1000)
    parms = {"nonce": nonce,
             "command": 'returnAvailableAccountBalances'}
    parms = urllib.urlencode(parms)

    sign = hmac.new(api_secret, parms, hashlib.sha512).hexdigest()
    headers = {"Sign": sign,
               "Key": api_key,
               }

    public = urllib2.urlopen(urllib2.Request('https://poloniex.com/tradingApi', parms, headers))

    balance = json.loads(public.read())
    return balance
Posted

 

 

Команда у тебя должна быть "returnBalances" и все, без всяких "command=returnBalances&nonce="

Неправильный ответ.  Все нужно.   И вашем коде это есть.   И command и nonce.

 

 

На перле вариант

sub post_polon_api {
  my ($uri, $key, $secret, $params) = @_;

  $req = HTTP::Request->new( 'POST', $uri );
  $req->header( 'Content-Type' => 'application/x-www-form-urlencoded' );
  $req->header( 'Key' => $key );
  $req->header( 'Sign' => hmac_sha512_hex($params, $secret) );
  $req->content( $params );

  my $lwp = LWP::UserAgent->new;
  $lwp->agent("Mozilla/5.0 (Windows NT 6.3; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0");
  return $lwp->request( $req );
  undef $lwp;
};


$method = 'GET';
$command = 'returnAvailableAccountBalances';
$nonce = time;
$params = "nonce=$nonce&method=$method&command=$command";

my $result = post_polon_api($uri,$polon_key,$polon_secret,$params);
$content = $result->content;

Posted

 

 

nonce := FormatDateTime('yyyymmddhhnnsszzz',now);

Возможно у вас проблема с nonce. Потому что целое число - тип Integer может принимать значение до 2^31  = 2 147 483 647

В вашем случае это значение сильно больше.  Попробуйте использовать формат Unix Time в качестве nonce.

Нету делфи под рукой, что-нибудь типа такого напишите http://www.delphisources.ru/pages/faq/base/dt_to_unix_ts.html

Posted

Возможно у вас проблема с nonce. Потому что целое число - тип Integer может принимать значение до 2^31  = 2 147 483 647

В вашем случае это значение сильно больше.  Попробуйте использовать формат Unix Time в качестве nonce.

Нету делфи под рукой, что-нибудь типа такого напишите http://www.delphisources.ru/pages/faq/base/dt_to_unix_ts.html

nonce имеет тип string, т.е. строка символов.Если я не ошибаюсь, то при POST запросах всегда отправляется текстовые значения. Попробовал присвоить значение nonce ='1', но результат тот же. 

К сожалению, я питон и перл не понимаю, но вроде у вас все аналогично)

Posted

 

 

nonce имеет тип string, т.е. строка символов.Если я не ошибаюсь

 

Additionally, all queries must include a "nonce" POST parameter. The nonce parameter is an integer which must always be greater than the previous nonce used.

https://poloniex.com/support/api/

 

Неважно как Вы его храните в коде.  В POST запросе, конечно, это строка.

Posted

У вас есть рабочая прога? Сможете через сниффер показать заголовки и post data запроса? Может я забыл какой-то параметр 

Posted

POST / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0
Content-Type: application/x-www-form-urlencoded
Key: XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX
Sign: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Length: 50

nonce=1486010106&method=GET&command=returnBalances

Posted

попробуйте сначала отправить и получить ответ от публичного API, для которого не надо подписи

Posted (edited)
POST / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0
Content-Type: application/x-www-form-urlencoded
Key: XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX
Sign: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Length: 50

nonce=1486010106&method=GET&command=returnBalances

нашел отличия. У меня нет параметра 'method=GET'. Спасибо, щас попробую добавить этот параметр

Edited by QweR1ty
Posted (edited)
Попробовал присвоить значение nonce ='1'

в моем коде нонсе = кол-во секунд между текущей датой/временем и 1970.01.01 00:00:00 приведенное к строке (без пробелов)

в следующем запросе разумеется нонсе должно увеличится на некоторое значение

Edited by antontmn
Posted (edited)

e46btc, добавил параметр. Проблема та же

antontmn, публичные GET запросы работают нормально. Unix время я тоже сегодня пробовал использовать в параметре nonce. Проблему это не решило(

Edited by QweR1ty
Posted

 

 

В чем может быть проблема? подскажите, пожалуйста

сниферни какой запрос уходит

Posted

@senya2k


есть варианты запроса, когда nonce равно единице, равно Unix time и также пробовал добавить параметр method=GET, но проблема та же


Кто-нибудь писал подобную прогу на Delphi? может с кодировкой что-то? уже не знаю в чем может быть проблема

post-44413-0-74926300-1486019951_thumb.png

post-44413-0-06117300-1486019952_thumb.png

Posted (edited)

может это забыли?

 

 

Content-Type: application/x-www-form-urlencoded
Edited by antontmn
Posted

может это забыли?

Казалось бы пустяк, но все заработало. Спасибо огромное :)

Posted

Посмотрел код на перле, после этого более понято стало на дельфи. Интересные конструкции, буду знать.

Posted

sign:=SHA512DigestToHex(CalcHMAC_SHA512(Secret,post.DataString));

 

А  SHA512 Вы из какой компоненты/библиотеки получаете?

Posted

Уже сам нашел :)
Если вдруг кому понадобится, библиотека Fundamentals Library, потребуется подцепить к проекту последнюю версию Fundamentals Hash, в момент написания, была - 4.00.15
Fundamentals Code Library

Posted
День добрый

может у кого то есть бот который на поло может стоп лосс + тейк профит поставить? чтобы можно было выставить покупку, если закуп проходит - тогда ставим стоп лосс на некое значение, а дальше по ситуации - если значение достигает тейк профита, то ордер на стоп лосс снимается и сливается по рынку(разумеется если в стакане хватает нужного количества), ну и минимальные настройки на все параметры. Есть вообще такое чудо у кого нибудь? 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Similar Topics

    • Количество поисковых запросов «биткоин» в Google обновило максимум

      Число поисковых запросов «биткоин» в Google достигло за март отметки 34 пункта, что является максимальным показателем с начала года. Относительно февраля метрика выросла на 26%, обратили внимание аналитики издания The Block. Аналогичная тенденция наблюдается с поисковым запросом «эфир» — показатель увеличился с 16 до 19 пунктов. Рост числа поисковых запросов свидетельствует о возрождении интереса к криптовалютам и индустрии со стороны розничных инвесторов и трейдеров, полагают эксперты The

      in Новости криптовалют

    • Биржа Kraken сообщила о росте количества запросов госорганов

      Количество запросов от правоохранительных и регулирующих государственных органов, требующих данные о транзакциях, выросло в 2024 году на 38,6%, сообщила американская криптовалютная биржа Kraken. Kraken сообщила, что 28,6% общего количества запросов на предоставление информации приходится на американские федеральные агентства. Список возглавило Федеральное бюро расследований — от него поступило 614 обращений. На Комиссию по ценным бумагам и биржам США (SEC) пришлось 37,3% запросов.   П

      in Новости криптовалют

    • The Block: Количество поисковых запросов о покупке криптовалюты резко возросло

      Аналитики издания The Block сообщили, что на прошлой неделе поисковый запрос со словами «как купить криптовалюту» получил рейтинг 100. Поисковые запросы по ключевым словам «биткоин» и «эфир» стремительно растут в социальных сетях и поисковых системах. Так, с 6 по 12 января в соцсети X было зафиксировано 247 000 упоминаний биткоина, а уже в течение следующей недели этот показатель увеличился до 495 000. Количество поисковых запросов с упоминанием эфира выросло с 73 600 до 293 000 за этот же

      in Новости криптовалют

    • Kraken: Количество запросов от правоохранителей в 2023 году выросло на 70%

      Криптовалютная биржа Kraken сообщила, что в 2023 году количество запросов, полученных от американских и международных правоохранительных органов, значительно увеличилось. Руководство Kraken уточнило, что в 2023 году биржа обработала 4 923 запроса. Они поступили от разных ведомств, включая федеральные, государственные и местные органы власти. Преимущественно данные запрашивались правоохранительными органами и регуляторами. Самые распространенные запросы касались расследований, причем из обще

      in Новости криптовалют

    • Неверная отправка usdt в сети sol. Отправлено случайно на адрес без одного символа

      Отправлено случайно на адрес без одного символа usdt в сети sol. Транзакия в итоге ушла успешно. Хотя в скане пишет. InOnCurve False. Как то можно их вернуть или вытащить? Кто сталкивался с такой проблемой? Транзакия: https://solscan.io/tx/2bjnPPoz7uUgtep3wfAbSP3GKHXW1gMpmrPSq7mzcbbmXfXTDh31qN87uPnCXSyjRgiPZ2Tu5j6sN2aWBKARPwe

      in Общий

×
×
  • Create New...