Перейти к содержанию

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


QweR1ty

Рекомендуемые сообщения

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

 

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

Ссылка на комментарий
Поделиться на другие сайты

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

Изменено пользователем Lordaster
Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

Делал на питоне. Не силен в дельфи, но там передаешь всего два параметра (саму команду и 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
Ссылка на комментарий
Поделиться на другие сайты

 

 

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

Ссылка на комментарий
Поделиться на другие сайты

 

 

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

 

 

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты


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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

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'. Спасибо, щас попробую добавить этот параметр

Изменено пользователем QweR1ty
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Изменено пользователем antontmn
Ссылка на комментарий
Поделиться на другие сайты

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

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

Изменено пользователем QweR1ty
Ссылка на комментарий
Поделиться на другие сайты

 

 

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

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

Ссылка на комментарий
Поделиться на другие сайты

@senya2k


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


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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

 

 

Content-Type: application/x-www-form-urlencoded
Изменено пользователем antontmn
Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

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

 

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

День добрый

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

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Similar Topics

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

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

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

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

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

      в Общий

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

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

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

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

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

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

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

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

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

×
×
  • Создать...