Приватные методы API позволяют выполнять те же команды, что допускается делать авторизованному трейдеру – создавать ордера, проверять баланс, выводить средства и т.п.
Полоникс запрещает вам делать больше 6 запросов к API в секунду (по факту, предупреждение мне прилетало после 8 запросов в секунду), и советует вам максимально оптимизировать код и снизить кол-во обращений. Если, все же, вам необходимо расширить этот лимит, вам стоит обратиться в службу технической поддержки https://poloniex.freshdesk.com/.
Все запросы к API отправляются через POST на адрес https://poloniex.com/tradingApi, и должны иметь заголовки:
Так же все запросы должны включать параметр nonce – это число, которое должно увеличиваться с каждым запросом к API. Все ответы возвращаются в формате JSON, в случае возникновения ошибки возвращается такая структура:
{"error":"Текст ошибки"}
Для того, что бы вызвать тот или иной метод API, передавайте в POST параметр command с названием метода.
Возвращает ваш баланс по каждой монете. Пример ответа
{ "BTC": "0.59098578", "LTC": "3.31117268" }
Для программного получения используйте код (как его использовать, смотрите первую часть статьи) :
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…, API_SECRET = '6b9d…' ) balances = my_polo.returnBalances() for balance in balances: print(balance, balances[balance])
Возвращает все информацию по счетам – не только деньги на балансе, но и деньги в ордерах, оценочная стоимость монет. По умолчанию возвращает информацию по кошельку exchange, если вам нужна так же информация по маржинальному кошельку и лендингу добавьте параметр account=all.
Пример кода (вывести все непустые балансы):
from poloniex_api import Poloniex my_polo = Pol API_KEY = 'GKJ…', API_SECRET = '6b9d…' ) balances = my_polo.returnCompleteBalances(account="all") for balance in balances: if float(balances[balance]['available']) or float(balances[balance]['onOrders']) or float(balances[balance]['btcValue']): print(balance, """ Доступно: {available}, В ордерах: {onOrders}, Оценочная стоимость (BTC): {btcValue} """.format( available = balances[balance]['available'], onOrders = balances[balance]['onOrders'], btcValue = balances[balance]['btcValue'], ) )
Возвращает все полученные вами адреса для пополнения счета. Например
{ "BTC": "19YqztHmspv2egyD6jQM3yn81x5t5krVdJ", "LTC": "LPgf9kjv9H1Vuh4XSaKhzBe8JHdou1WgUB", "ITC": "Press Generate.." }
Пример кода для получения:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d….' ) addresses = my_polo.returnDepositAddresses() print(addresses)
Позволяет получить новый адрес для депозита для указанной валюты – параметр currency. Например, получим адрес для BCH:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d….' ) new_address = my_polo.generateNewAddress(currency='BCH') print(new_address)
Возвращает адрес в поле response:
Возвращает историю выводов и пополнений баланса за указанный период – параметры start и end в формате UNIX.
Возвращает словарь примерно такого вида:
{ "deposits": [ { "currency": "BTC", "address": "...", "amount": "0.01006132", "confirmations": 10, "txid": "17f819a91369a9ff6c4a34216d434597cfc1b4a3d0489b46bd6f924137a47701", "timestamp": 1399305798, "status": "COMPLETE" }, { "currency": "BTC", "address": "...", "amount": "0.00404104", "confirmations": 10, "txid": "7acb90965b252e55a894b535ef0b0b65f45821f2899e4a379d3e43799604695c", "timestamp": 1399245916, "status": "COMPLETE" } ], "withdrawals": [ { "withdrawalNumber": 134933, "currency": "BTC", "address": "1N2i5n8DwTGzUq2Vmn9TUL8J1vdr1XBDFg", "amount": "5.00010000", "timestamp": 1399267904, "status": "COMPLETE: 36e483efa6aff9fd53a235177579d98451c4eb237c210e66cd2b9a2d4a988f8e", "ipAddress": "..." } ] }
deposits – пополнения, withdrawals – выводы. Внутри каждого из них массивы с операциями, отсортированные по убыванию.
Пример кода (операции за месяц)
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) import time end_time = int(time.time()) # время окончания - текущее start_time = int(end_time - 60 * 60 * 24 * 31) # время начала - месяц my_lending_history = my_polo.returnLendingHistory(start=start_time, end=end_time) print(my_lending_history)
Возвращает список открытых ВАМИ ордеров – т.е. то, еще не исполнено до конца. Принимает параметр currencyPair, где можно указать либо пару (например, BTC_XCP), либо слово all – для отображения ордеров по всем парам. При разных параметрах вывод различается:
Вывод для одной пары:
[ { "orderNumber": "120466", "type": "sell", "rate": "0.025", "amount": "100", "total": "2.5" }, { "orderNumber": "120467", "type": "sell", "rate": "0.04", "amount": "100", "total": "4" }, { "orderNumber": "..." } ]
Вывод для нескольких пар:
{ "BTC_1CR": [], "BTC_AC": [ { "orderNumber": "120466", "type": "sell", "rate": "0.025", "amount": "100", "total": "2.5" }, { "orderNumber": "120467", "type": "sell", "rate": "0.04", "amount": "100", "total": "4" } ], "BTC_XRP": "..." }
Соответственно, поля –
orderNumber – ID ордера,
type – либо buy, либо sell
amount – количество монет (квотируемая валюта),
total – кол-во базовой валюты
Пример кода (получить все открытые ордера по всем парам):
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d….' ) open_orders = my_polo.returnOpenOrders(currencyPair="all") print(open_orders)
Возвращает историю торгов по указанной паре (нужно указать параметр currencyPair). Так же можно указать all вместо названия пары что бы получить историю торгов по всем парам. Так же можно дополнительно указать параметры start и end в формате UNIX, что бы выбрать сделки за указанный период (период не должен превышать месяц). Если параметры start и end не указаны, возвращаются сделки за один день. Так же можно указать параметр limit, что бы ограничить или увеличить количество записей. Если параметр limit не указан, то возвращается максимум 500 сделок. Максимальное значение параметра limit – 10000.
Возвращемые данные:
Если указана пара:
[ { "globalTradeID": 25129732, "tradeID": "6325758", "date": "2016-04-05 08:08:40", "rate": "0.02565498", "amount": "0.10000000", "total": "0.00256549", "fee": "0.00200000", "orderNumber": "34225313575", "type": "sell", "category": "exchange" }, { "globalTradeID": 25129628, "tradeID": "6325741", "date": "2016-04-05 08:07:55", "rate": "0.02565499", "amount": "0.10000000", "total": "0.00256549", "fee": "0.00200000", "orderNumber": "34225195693", "type": "buy", "category": "exchange" }, { "...": "..." } ]
Если указано all:
{ "BTC_MAID": [ { "globalTradeID": 29251512, "tradeID": "1385888", "date": "2016-05-03 01:29:55", "rate": "0.00014243", "amount": "353.74692925", "total": "0.05038417", "fee": "0.00200000", "orderNumber": "12603322113", "type": "buy", "category": "settlement" }, { "globalTradeID": 29251511, "tradeID": "1385887", "date": "2016-05-03 01:29:55", "rate": "0.00014111", "amount": "311.24262497", "total": "0.04391944", "fee": "0.00200000", "orderNumber": "12603319116", "type": "sell", "category": "marginTrade" }, "..." ], "BTC_LTC": [] }
Поля:
globalTradeID, tradeID – ID сделки внутри Полоникса,
date – дата исполнения,
rate – курс,
amount – количество квотируемой валюты,
total – количество базовой,
fee – комиссия (0.002 = 0.2%)
orderNumber – в рамках какого ордера была создана и исполнена,
type – тип сделки (buy или sell),
category – “exchange|marginTrade|lending”
Пример кода (получить историю по всем торгам по всем парам за месяц, максимум 100 записей):
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d….' ) import time end_time = int(time.time()) # время окончания - текущее start_time = int(end_time - 60 * 60 * 24 *31) # время начала минус месяц trades_history = my_polo.returnTradeHistory(currencyPair="all", start=start_time, end=end_time, limit=100) print(trades_history)
Получить историю торгов по отдельно взятому ордеру (параметр orderNumber). Если не было торгов или ордер был выставлен кем-то другим, вернется ошибка.
Пример возвращаемых данных:
[ { "globalTradeID": 20825863, "tradeID": 147142, "currencyPair": "BTC_XVC", "type": "buy", "rate": "0.00018500", "amount": "455.34206390", "total": "0.08423828", "fee": "0.00200000", "date": "2016-03-14 01:04:36" }, { "globalTradeID": "..." } ]
Поля такие же, как в истории сделок (метод returnTradeHistory, см. выше).
Пример кода:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) order_trades = my_polo.returnOrderTrades(orderNumber=123123) print(order_trades)
Создание отложенного ордера на покупку. Необходимые параметры currencyPair, rate и amount. В случае успешного выставления вернет номер созданного ордера:
{ "orderNumber": 31226040, "resultingTrades": [ { "amount": "338.8732", "date": "2014-10-18 23:03:21", "rate": "0.00000173", "total": "0.00058625", "tradeID": "16164", "type": "buy" } ] }
Так же можно дополнительно указать параметры fillOrKill = 1, immediateOrCancel=1, postOnly = 1.
Ордер, созданный с параметром fillOrKill будет либо полностью исполнен, либо полностью отменен.
Ордер, созданный с параметром immediateOrCancel может быть исполнен полностью или частично, но те части, что не удастся исполнить немедленно, будут отменены.
Ордер, созданный с параметром postOnly будет выставлен только в том случае, если никакая его часть не будет исполнена немедленно – таким образом, вы никогда не будете платить комиссию тейкера.
Пример кода (купить 33 ETH по курсу 0.1):
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ...', API_SECRET = '6b9d...' ) new_order = my_polo.buy(currencyPair='BTC_ETH', rate=0.1, amount=33) print(new_order)
(не хватило денег :))
Создать ордер на продажу. Все поля и параметры идентичны методу buy.
Отменить ордер (отменятся все неисполненые части). Принимает параметр orderNumber. В случае успеха вернет
{ "success": 1 }
Пример кода:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) cancel = my_polo.cancelOrder(orderNumber=123123) print(cancel)
Отменяет ордер и создает вместо него ордер того же типа в единой атомарной транзакции (это значит, что либо обе операции будут выполнены успешно, либо ни одна не выполнится). Необходимые параметры orderNumber и rate. Так же можно указать параметр amount, если желаете изменить объем ордера. Опционально можно указать параметры postOnly и immediateOrCancel (см. метод buy выше), они будут работать везде, кроме маржинальных ордеров.
В случае успеха возвращается номер свежесозданного ордера (и торги, если уже есть):
{ "success": 1, "orderNumber": "239574176", "resultingTrades": { "BTC_BTS": [] } }
Пример кода (отменить ордер и создать новый по курсу 0.5):
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) cancel = my_polo.moveOrder(orderNumber=123123, rate=0.5) print(cancel)
Немедленно выставляется задание на вывод указанной валюты, без подтверждения по email. Для того, что бы использовать этот метод, необходимо подключить привилегию в настройках API ключа. Необходимые параметры: currency, amount и address. Для вывода XMR вы также можете указать paymentId.
Пример ответа:
{ "response": "Withdrew 2398 NXT." }
Пример кода (вывести 10 DASH на указанный адрес):
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) wd = my_polo.withdraw(currency='DASH', amount=10, address="12asd32131") print(wd)
Информация по комиссиям тейкера и мейкера вашего аккаунта – обновляется раз в 24 часа. Так же возвращает объем ваших торгов за 30 дней. Пример ответа:
{ "makerFee": "0.00140000", "takerFee": "0.00240000", "thirtyDayVolume": "612.00248891", "nextTier": "1200.00000000" }
makerFee, makerFee – комиссии,
thirtyDayVolume – объем торгов за 30 дней,
nextTier – какой нужен объем что бы попасть на следующий уровень.
Пример кода:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) fee_info = my_polo.returnFeeInfo() print(fee_info)
Возвращает ваш баланс по каждой монете в разбивке по счетам (торговый, маржинальный, лендинг). Так же вы можете указать параметр account что бы возвращался только нужный. Так же обратите внимание, что если у вас есть открытые позиции по маржинальным торгам, то информация по маржинальному счету будет недоступна.
Пример ответа:
{ "exchange": { "BTC": "1.19042859", "BTM": "386.52379392", "CHA": "0.50000000", "DASH": "120.00000000", "STR": "3205.32958001", "VNL": "9673.22570147" }, "margin": { "BTC": "3.90015637", "DASH": "250.00238240", "XMR": "497.12028113" }, "lending": { "DASH": "0.01174765", "LTC": "11.99936230" } }
Пример кода:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) av_balance_info = my_polo.returnAvailableAccountBalances() print(av_balance_info)
Возвращает баланс по монетам, доступных для маржинальной торговли. Обратите внимание, что суммы могут меняться в зависимости от рынка.
Пример ответа:
{ "BTC_DASH": { "BTC": "8.50274777", "DASH": "654.05752077" }, "BTC_LTC": { "BTC": "8.50274777", "LTC": "1214.67825290" }, "BTC_XMR": { "BTC": "8.50274777", "XMR": "3696.84685650" } }
Пример кода:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) tr_balance_info = my_polo.returnTradableBalances() print(tr_balance_info)
Перевод средств с одного счета на другой (например, с exchange на маржинальный). Необходимые параметры currency, amount, fromAccount, toAccount.
Пример ответа:
{ "success": 1, "message": "Transferred 2 BTC from exchange to margin account." }
Пример кода (перевести 3 BTC с торгового счета на маржинальный):
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) transfer = my_polo.transferBalance( currency="BTC", amount=3, fromAccount="exchange", toAccount="margin" ) print(transfer)
Возвращает общую сумму на маржинальном счете. Это та же информация, что вы видите в поле Margin Account в разделе Margin Trading, под списком торговых пар.
Пример ответа:
{ "totalValue": "0.00346561", "pl": "-0.00001220", "lendingFees": "0.00000000", "netValue": "0.00345341", "totalBorrowedValue": "0.00123220", "currentMargin": "2.80263755" }
Подробнее читайте тут: https://bablofil.ru/poloniex-margin-trading/
Пример кода:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) ma_summary = my_polo.returnMarginAccountSummary() print(ma_summary)
Выставляет маржинальный ордер на покупку по выбранной паре. Необходимые параметры currencyPair, rate и amount. Так же опционально можно указать параметр lendingRate, что бы ограничить максимальный курс займа. В случае успеха, возвращается номер ордера и торги по нему. Пример ответа:
{ "success": 1, "message": "Margin order placed.", "orderNumber": "154407998", "resultingTrades": { "BTC_DASH": [ { "amount": "1.00000000", "date": "2015-05-10 22:47:05", "rate": "0.01383692", "total": "0.01383692", "tradeID": "1213556", "type": "buy" } ] } }
Пример кода (купить 4 эфира по курсу 0.4 с привлечением заемных средств)
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) m_order = my_polo.marginBuy( currencyPair='BTC_ETH', rate=0.4, amount=4 ) print(m_order)
Выставить маржинальный ордер на продажу, параметры те же, что и для marginBuy
Возвращает информацию по всем открытым маржинальным позициям по указанной паре (параметр currencyPair). В качестве пары можно указать all, тогда вернется информация по всем парам.
Пример ответа:
{ "amount": "40.94717831", "total": "-0.09671314", "basePrice": "0.00236190", "liquidationPrice": -1, "pl": "-0.00058655", "lendingFees": "-0.00000038", "type": "long" }
Если у вас нет открытых позиций, возвращаемое поле type будет установлено в "none". "liquidationPrice" является оценочным полем, и не отражает итогового значения, когда событие возникнет. Если цена принудительного завершения не установлена, вернется -1.
Пример кода (получить позиции по BTC_ETH):
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) pos_info = my_polo.getMarginPosition( currencyPair='BTC_ETH' ) print(pos_info)
Закрывает открытую позицию по указанной паре (параметр currencyPair) по рыночной цене. Обратите внимание, что метод вернет успех и в том случае, если у вас нет открытых позиций.
Пример ответа:
{ "success": 1, "message": "Successfully closed margin position.", "resultingTrades": { "BTC_XMR": [ { "amount": "7.09215901", "date": "2015-05-10 22:38:49", "rate": "0.00235337", "total": "0.01669047", "tradeID": "1213346", "type": "sell" }, { "amount": "24.00289920", "date": "2015-05-10 22:38:49", "rate": "0.00235321", "total": "0.05648386", "tradeID": "1213347", "type": "sell" } ] } }
Пример кода:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) pos_info = my_polo.closeMarginPosition( currencyPair='BTC_ETH' ) print(pos_info)
Создает предложение по займу по выбранной паре. Необходимые параметры currency, amount, duration, autoRenew и lendingRate.
Пример ответа:
{ "success": 1, "message": "Loan order placed.", "orderID": 10590 }
Пример кода (Предлагаю кому-нибудь занять у меня 10 ETH на два дня, под 0.02%, не продлевать):
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) pos_info = my_polo.createLoanOffer( currency='ETH', amount=10, duration=2, autoRenew=0, lendingRate=0.02 ) print(pos_info)
Отменяет выставленное предложение (параметр orderNumber принимает ID предложения).
Пример ответа:
{
"success": 1,
"message": "Loan offer canceled."
}
Пример кода:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) cancel = my_polo.cancelLoanOffer( orderNumber=123123123 ) print(cancel)
Возвращает открытые (вами) предложения по всем парам. Пример ответа:
{ "BTC": [ { "id": 10595, "rate": "0.00020000", "amount": "3.00000000", "duration": 2, "autoRenew": 1, "date": "2015-05-10 23:33:50" } ], "LTC": [ { "id": 10598, "rate": "0.00002100", "amount": "10.00000000", "duration": 2, "autoRenew": 1, "date": "2015-05-10 23:34:35" } ] }
Пример кода:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) my_open_offers = my_polo.returnOpenLoanOffers() print(my_open_offers)
Возвращает информацию по вашим одалживаниям. Пример ответа:
{ "provided": [ { "id": 75073, "currency": "LTC", "rate": "0.00020000", "amount": "0.72234880", "range": 2, "autoRenew": 0, "date": "2015-05-10 23:45:05", "fees": "0.00006000" }, { "id": 74961, "currency": "LTC", "rate": "0.00002000", "amount": "4.43860711", "range": 2, "autoRenew": 0, "date": "2015-05-10 23:45:05", "fees": "0.00006000" } ], "used": [ { "id": 75238, "currency": "BTC", "rate": "0.00020000", "amount": "0.04843834", "range": 2, "date": "2015-05-10 23:51:12", "fees": "-0.00000001" } ] }
Пример кода:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) my_active_loans = my_polo.returnActiveLoans() print(my_active_loans)
Возвращает историю займов за указанный период времени (параметры start и end в UNIX time). Так же можно указать параметр limit для указания числа возвращаемых строк. Пример ответа:
[ { "id": 175589553, "currency": "BTC", "rate": "0.00057400", "amount": "0.04374404", "duration": "0.47610000", "interest": "0.00001196", "fee": "-0.00000179", "earned": "0.00001017", "open": "2016-09-28 06:47:26", "close": "2016-09-28 18:13:03" } ]
Пример кода (история за месяц):
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) import time end_time = int(time.time()) # время окончания - текущее start_time = int(end_time - 60 * 60 * 24 * 31) # время начала - месяц my_lending_history = my_polo.returnLendingHistory(start=start_time, end=end_time) print(my_lending_history)
Включить или выключить автоматическое продление займа, указанного в параметре orderNumber. В случае успеха, вернется новое значение autoRenew. Пример ответа:
{ "success": 1, "message": 0 }
Пример кода:
from poloniex_api import Poloniex my_polo = Poloniex( API_KEY = 'GKJ…', API_SECRET = '6b9d…. ) new_status = my_polo.toggleAutoRenew(orderNumber=123123) print(new_status)