Jump to content

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


QweR1ty

Recommended Posts

Друзья, всем привет. Кто делал себе бота для биржи? Решил написать себе бота на 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, но этот код не особо понимаю.

 

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

Link to comment
Share on other sites

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

Edited by Lordaster
Link to comment
Share on other sites

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

Команда у тебя должна быть "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.

Link to comment
Share on other sites

Делал на питоне. Не силен в дельфи, но там передаешь всего два параметра (саму команду и 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
Link to comment
Share on other sites

 

 

Команда у тебя должна быть "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;

Link to comment
Share on other sites

 

 

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

Link to comment
Share on other sites

Возможно у вас проблема с 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', но результат тот же. 

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

Link to comment
Share on other sites

 

 

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 запросе, конечно, это строка.

Link to comment
Share on other sites

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

Link to comment
Share on other sites


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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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
Link to comment
Share on other sites

Попробовал присвоить значение nonce ='1'

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

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

Edited by antontmn
Link to comment
Share on other sites

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

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

Edited by QweR1ty
Link to comment
Share on other sites

 

 

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

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

Link to comment
Share on other sites

@senya2k


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


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

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

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

Link to comment
Share on other sites

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

 

 

Content-Type: application/x-www-form-urlencoded
Edited by antontmn
Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

 

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

День добрый

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

Link to comment
Share on other sites

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

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

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

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

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

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

      in Общий

    • Объем поисковых запросов в Google на тему Solana взлетел на 250%

      Пользователи Google последние два месяца все активнее ищут слово Solana. Интерес совпал с взрывным ростом актива и ростом цен на связанные с ним мемкоины. Для определения количества запросов была использована шкала от 0 до 100, объясняет команда The Block. В октябре объем поисковых запросов Solana составил 14, а в декабре уже 49.   «Ценовые показатели у Solana были намного выше, чем у других активов, а в последнее время мемкоины в сети также начали набирать обороты», — говорит анали

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

    • Биржа Coinbase объявила об увеличении числа запросов от правоохранителей

      Крупнейшая американская криптобиржа Coinbase сообщила, что с октября 2022 года по октябрь 2023-го получила 13 079 запросов от правоохранительных органов. Количество запросов от государственных ведомств в целом увеличилось за год на 6%. Согласно отчету о прозрачности Coinbase, власти Соединенных Штатов оказались самыми активными – от них поступило 5868 запросов, что составляет 57% общего количества обращений. Помимо США, с Coinbase связывались правоохранители Германии, Великобритании, Испан

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

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

      По данным ресурса Cryptogambling.tv, после недавнего взлета курса биткоина на 18%, по всему миру наблюдается рост популярности поисковых запросов «купить биткоин». Наибольший рост заинтересованности пришелся на Великобританию ― количество поисковых запросов «купить биткоин» за последние 7 дней в стране выросло на 826%.   «Огромный всплеск таких запросов в Великобритании в сочетании с ростом курса криптовалюты подчеркивает растущий интерес и потенциальное влияние традиционных финансо

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

×
×
  • Create New...