API

Узнайте о нашем API

Общие положения

ПРИМЕЧАНИЕ: Все URL-адреса API должны использовать домен api.kraken.com.

Вы должны предоставить строку агента пользователя при создании заголовке запроса, иначе вы не сможете подключиться к API.

В Kraken включена 'Проверка целостности браузера'

Вы можете получить ошибку, если у вас нестандартный агент пользователя, или же в заголовках запросов агент пользователя отсутствует.

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

Публичные методы используют GET или POST.

Приватные методы должны использовать POST и выглядят так:

HTTP заголовок:

API-Key = API key
API-Sign = Message signature using HMAC-SHA512 of (URI path + SHA256(nonce + POST data)) and base64 decoded secret API key

POST данные:

nonce = всегда увеличивается 64-разрядное целое число
otp = двухфакторный пароль (если двухфактор включен, иначе не требуется)

Примечание: Нет способа вернуть nonce к меньшему значению, поэтому не забудьте воспользоваться методом генерации nonce, который не будет выдавать число, меньшее предыдущего значения. Предлагается устойчивый счетчик или текущее время с точностью в сотые секунды или выше. Слишком много запросов с меньшим значением за последнее действительное значение nonce (EAPI: Недействительное значение nonce), может привести к временным запретам.

Примечание. Иногда запросы могут выходить из строя, или NTP может привести к переводу времени, что повлечет неполадки с nonce. Если вы столкнулись с этой проблемой, измените nonce на странице настроек API в своем аккаунте. Значение nonce зависит от того, каким образом вы планируете наращивать его. В зависимости от вашей скорости предлагаются настройки, которые бы учитывали 3-15 секунд задержек в сети.

Запросы API по валютным активам используют номенклатуру валют ISO4217-A3 в случае регистрации ISO, 3-буквенные часто используемые наименования в случае отсутствия регистрации ISO, или X-ISO4217-A3 код (см. http://www.ifex-project.org/).

Ответы кодируются в JSON в виде:

error = массив сообщений об ошибках в формате:
    <char-severity code><string-error category>:<string-error type>[:<string-extra info>]
    код сообщения E (error) означает ошибку, W (warning) - предупреждение
result = результат вызова API (может отсутствовать при возникновении ошибок)

Примечание: осторожно при работе с числами, представленными в виде строк, так как они могут переполнять стандартные типы данных.

Ограничение частоты запросов АРІ

Мы гарантируем защиту от злоупотреблений/DoS-атак, а также манипуляций ордербуком, спровоцированных внезапным размещением и отменой ордеров.

У каждого пользователя нашего API есть «счетчик запросов», который начинается с 0.

Запросы журналов/истории сделок увеличивают значение счетчика на 2.

Запросы размещения/отмены ордеров не влияют на счетчик.

Все остальные запросы API увеличивают значение счетчика на 1.

Счетчик пользователя уменьшается каждые несколько секунд, но если счетчик превышает лимит пользователя, доступ к API приостанавливается на 15 минут. Пользователи с базовыми аккаунтами имеют максимум 15, а их счетчик уменьшается на 1 каждые 3 секунды. Стандартные и Про аккаунты имеют до 20; счетчик стандартных аккаунтов уменьшается на 1 каждые 2 секунды, а для Про аккаунтов - на 1 каждую секунду.

Хотя размещение и отмена ордеров не влияет на счетчик, есть отдельные лимиты для предотвращения манипулирования ордербуком. Размещение только ордеров, которые вы собираетесь заполнить, и соблюдение частоты до 1 в секунду, как правило, достаточно, чтобы не достичь этих лимитов.

Публичные рыночные данные

Получить время сервера

URL: https://api.kraken.com/0/public/Time

Результат: время сервера

unixtime =  как метка времени Unix
rfc1123 = как формат времени RFC 1123

Примечание: Это позволяет оценить время задержки между сервером и клиентом.

Получить данные по валютам

URL: https://api.kraken.com/0/public/Assets

Ввод данных:

info = данные для получения (необязательно):
    info = все данные (по умолчанию)
aclass = класс актива (необязательно):
    валюта (по умолчанию)
asset = через запятую, перечень валют для получения данных (необязательно. по умолчанию = все для данного класса актива)

Результат: массив наименований валют и их данных

<asset_name> = наименование валюты
    altname = альтернативное наименование
    aclass = класс актива
    decimals = масштабирование десятичных знаков для ведения учета
    display_decimals = масштабирование десятичных знаков для вывода

Получить торгуемые валютные пары

URL: https://api.kraken.com/0/public/AssetPairs

Ввод данных:

info = данные для получения (необязательно):
    info = все данные (по умолчанию)
    leverage = данные о плече
    fees = комиссии
    margin = данные о марже
pair = через запятую, перечень валютных пар для получения данных (необязательно. по умолчанию = все)

Результат: массив наименований пар и их данных

<pair_name> = наименование пары
    altname = альтернативное наименование пары
    wsname = WebSocket аименование пары (если есть)
    aclass_base = класс актива базового компонента
    base = идентификатор актива базового компонента
    aclass_quote = класс актива компонента котировки
    quote = идентификатор актива компонента котировки
    lot = объем лота
    pair_decimals = масштабирование десятичных знаков для пары
    lot_decimals = масштабирование десятичных знаков для объема
    lot_multiplier = кратность объема лота для получения объема валюты
    leverage_buy = доступные значения плеча при покупке
    leverage_sell = доступные значения плеча при продаже
    fees = кортеж значений комиссии [объем, ставка]
    fees_maker = кортеж значений комиссии мейкер [объем, ставка] (если применяется мейкер/тейкер)
    fee_volume_currency = валюта оплаты комиссии
    margin_call = уровень маржин кола
    margin_stop = уровень маржи прекращения/ликвидации
    ordermin = минимальный объем ордера для пары

Примечание: Если к валютной пары применяются комиссии мейкер/тейкер, комиссию тейкер предоставлено в "fees", а мейкера - в "fees_maker". Для других пар комиссию предоставлено только в "fees".

Получить данные цены

URL: https://api.kraken.com/0/public/Ticker

Ввод данных:

pair = через запятую, перечень валютных пар для получения данных

Результат: массив наименований пар и их данных цены

<pair_name> = наименование пары
    a = аски(<цена>, <объем всех лотов>, <объем лота>),
    b = биды(<цена>, <объем всех лотов>, <объем лота>),
    c = последняя торгуемая цена(<цена>, <объем лота>),
    v = объем(<сегодня>, <последние 24 часа>),
    p = средневзвешенная по объему цена(<сегодня>, <последние 24 часа>),
    t = количество торгов(<сегодня>, <последние 24 часа>),
    l = минимум(<сегодня>, <последние 24 часа>),
    h = максимум(<сегодня>, <последние 24 часа>),
    o = цена открытия сегодня

Примечание: Цена сегодня действует с 00:00:00 UTC

Получить данные цены OHLC

URL: https://api.kraken.com/0/public/OHLC

Ввод данных:

pair = валютная пара для получения данных OHLC
interval = интервал времени в минутах (необязательно):
	1 (по умолчанию), 5, 15, 30, 60, 240, 1440, 10080, 21600
since = выдать соответствующие данные OHLC с момента идентификатора (необязательно. фильтр)

Результат: массив наименований пар и их данных OHLC

<pair_name> = наименование пары
    array of array entries(<время>, <открытие>, <максимум>, <минимум>, <закрытие>, <vwap>, <объем>, <количество>)
last = идентификатор, который будет использоваться с момента запроса новых подтвержденных данных OHLC

Примечание: последняя запись в массиве OHLC предназначена для текущего, еще не подтвержденного периода, и всегда будет присутствовать, независимо от значения "с".

Получить ордербук

URL: https://api.kraken.com/0/public/Depth

Ввод данных:

pair = валютная пара для получения глубины рынка
count = максимальное количество асков/бидов (необязательно)

Результат: массив наименований пар и глубины рынка

<pair_name> = наименование пары
    asks = аски для массива данных(<цена>, <объем>, <отметка времени>)
    bids = биды для массива данных(<цена>, <объем>, <отметка времени>)

Получить последние сделки

URL: https://api.kraken.com/0/public/Trades

Ввод данных:

pair = валютная пара для получения сделок
since = выдать данные о сделках с момента идентификатора (необязательно. фильтр)

Результат: массив наименований пар и данных последних сделок

<pair_name> = наименование пары
    массив данных(<цена>, <объем>, <время>, <покупка/продажа>, <маркет/лимит>, <разное>)
last = идентификатор, используемый с момента запроса новых данных сделок

Получить последние данные спрэда

URL: https://api.kraken.com/0/public/Spread

Ввод данных:

pair = валютная пара для получения данных спрэда
since = выдать данные спрэда с момента идентификатора (необязательно. фильтр)

Результат: массив наименований пар и последних данных спрэда

<pair_name> = наименование пары
    массив данных(<время>, <бид>, <аск>)
last = идентификатор, который будет использоваться с момента запроса новых данных спрэда

Примечание: "с" является включительным параметром, поэтому любые выданные данные с тем же временем, что и предыдущая выдача, должны перезаписать все данные предварительного запроса за то время

Приватные данные пользователя

Получить остаток в аккаунте

URL: https://api.kraken.com/0/private/Balance

Результат: массив наименований пар и суммы остатка

Получить торговый баланс

URL: https://api.kraken.com/0/private/TradeBalance

Ввод данных:

aclass = класс актива (необязательно):
    валюта (по умолчанию)
asset = базовый актив для определения баланса (по умолчанию = ZUSD)

Результат: массив данных о торговом балансе

eb = эквивалентный баланс (совокупный баланс всех валют)
tb = торговый баланс (совокупный баланс всех коллатеральных валют)
m = сумма маржи открытых позиций
n = нереализованная чистая прибыль / убыток открытых позиций
c = себестоимость открытых позиций
v = текущая плавающая оценка открытых позиций
e = капитал = торговый баланс + нереализованная чистая прибыль / убыток
mf = свободная маржа = капитал - начальная маржа (максимальная маржа, доступная для открытия новых позиций)
ml = уровень маржи = (капитал / начальная маржа) * 100

Примечание. Цены, используемые для плавающей оценки, являются средним лучших бида и аска

Получить открытые ордера

URL: https://api.kraken.com/0/private/OpenOrders

Ввод данных:

trades = включать ли сделки у выдачу (необязательно. по умолчанию = нет, false)
userref = ограничить результаты заданным идентификатором пользователя (необязательно)

Результат: массив данных ордеров с номерами txid в качестве идентификатора

refid = идентификатор ордера
userref = идентификатор пользователя
status = статус ордера:
    pending = ордер в ожидании
    open = открытый ордер
    closed = закрытый ордер
    canceled = отмененный ордер
    expired = просроченный ордер
opentm = UNIX временная метка размещения ордера
starttm = UNIX временная метка времени начала ордера (0, если не установлено)
expiretm = UNIX временная метка времени окончания ордера (0, если не установлено)
descr = данные деталей ордера
    pair = валютная пара
    type = тип операции (покупка / продажа)
    ordertype = тип ордера (см. Добавить стандартный ордер)
    price = основная цена
    price2 = вторичная цена
    leverage = порядок плеча
    order = описание ордера
    close = описание ордера условного закрытия (если установлено условное закрытие)
vol = объем ордера (базовая валюта, если метка viqc не установлена)
vol_exec = объем заполненный (базовая валюта, если метка viqc не установлена)
cost = себестоимость (валюта котировки, если метка viqc не установлена)
fee = комиссия (валюта котировки)
price = средняя цена (валюта котировки, если метка viqc не установлена)
stopprice = стоп-цена (валюта котировки, для трейлинг-стопов)
limitprice = полученная лимит цена (валюта котировки, если лимит ордер сработал)
misc = через запятую перечень данных прочего
    stopped = сработала стоп-цена
    touched = сработала цена
    liquidated = ликвидация
    partial = заполнено частично
oflags = через запятую перечень меток ордера
    viqc = объем в валюте котировки
    fcib = комиссия в базовой валюте (по умолчанию при продаже)
    fciq = комиссия в валюте котировки (по умолчанию при покупке)
    nompp = отсутствует защита рыночной цены
trades = массив идентификаторов сделок, связанных с ордером (если запрошены данные о сделках и данные доступны)

Примечание: Если не указано иное, расходы, сборы, цены и объемы находятся в шкале валютной пары, а не валюты. Например, если пара активов использует размер лота по шкале 8, то и объем будет использовать шкалу 8, даже если валюта такого объема имеет только шкалу 2. Аналогично, если шкала ценообразования пары активов составляет 5, шкала будет оставаться как 5, даже если основная валюта имеет шкалу 8 .

Получить закрытые ордера

URL: https://api.kraken.com/0/private/ClosedOrders

Ввод данных:

trades = включать ли сделки в выдачу (необязательно. по умолчанию = нет, false)
userref = ограничить результаты заданным идентификатором пользователя (необязательно)
start = UNIX начальная временная метка или tx идентификатор ордера (необязательно. эксклюзивно)
end = UNIX конечная временная метка или tx идентификатор ордера (необязательно. инклюзивно)
ofs = офсет результатов
closetime = какое время использовать (необязательно)
    открытия (open)
    закрытия (close)
    оба (both, по умолчанию)

Результат: массив данных ордеров

closed = массив данных ордеров. См. Получить открытые ордера.  Дополнительные поля:
    closetm = UNIX временная метка закрытия ордера
    reason = дополнительные данные о статусе (если есть)
count = количество ордеров данным, соответствующие критериям

Примечание. Время, заданное tx ордеров, является более точными, чем временные отметки Unix. Если задано время tx идентификатора, используется время открытия ордера

Запрос данных ордеров

URL: https://api.kraken.com/0/private/QueryOrders

Ввод данных:

trades = включать ли сделки в выдачу (необязательно. по умолчанию = нет, false)
userref = ограничить результаты заданным идентификатором пользователя (необязательно)
txid = через запятую перечень идентификаторов транзакций для запроса (максимум 50)

Результат: массив данных ордеров

<order_txid> = данные ордера. См. Получить открытые ордера/Получить закрытые ордера

Получить историю сделок

URL: https://api.kraken.com/0/private/TradesHistory

Ввод данных:

type = тип сделки (необязательно)
    all = все типы (по умолчанию)
    any position = любая позиция (открытая или закрытая)
    closed position = закрытые позиции
    closing position = любая сделка, которая закрывает всю или часть позиции
    no position = сделки, не связанные с позициями
trades = включать ли в выдачу сделки, связанные с позицией (необязательно. по умолчанию = нет, false)
start = UNIX начальная временная метка или tx идентификатор сделки (необязательно. эксклюзивно)
end = UNIX конечная временная метка или tx идентификатор сделки (необязательно. инклюзивно)
ofs = офсет результатов

Результат: массив данных сделок

trades = массив данных сделок с txid в качестве идентификатора
    ordertxid = ордер, ответственный за осуществление сделки
    pair = валютная пара
    time = UNIX временная метка соглашения
    type = тип операции (покупка / продажа)
    ordertype = тип ордера
    price = средняя цена, по которой выполнен ордер (валюта котировки)
    cost = себестоимость ордера (валюта котировки)
    fee = комиссия (валюта котировки)
    vol = объем (базовая валюта)
    margin = начальная маржа (валюта котировки)
    misc = через запятую перечень данных прочего
        closing = сделка закрывает всю или часть позиции
count = количество сделок с данными, которые отвечают критериям

Если сделка открыла позицию, следующие поля также содержатся в выдаче данных:

    posstatus = статус позиции (открытая/закрытая)
    cprice = средняя цена закрытой части позиции (валюта котировки)
    ccost = себестоимость закрытой части позиции (валюта котировки)
    cfee = все комиссии закрытой части позиции (валюта котировки)
    cvol = объем закрытой части позиции (валюта котировки)
    cmargin = общая маржа, освобождена в закрытой части позиции (валюта котировки)
    net = чистая прибыль/убыток закрытой части позиции (валюта котировки, масштаб валюты котировки)
    trades = перечень сделок закрытия позиции (при наличии)

Примечание:

  • Если не указано иное, расходы, комиссии, цены и объемы определяются по шкале пары активов, а не по шкале валюты.
  • Время, заданное tx сделок, являются более точными, чем временные отметки Unix.

Запрос данных сделок

URL: https://api.kraken.com/0/private/QueryTrades

Вот данных:

txid = через запятую перечень идентификаторов транзакций для запроса (до 20)
trades = включать ли в выдачу сделки, связанные с позициями (необязательно. по умолчанию = нет, false)

Результат: массив данных сделок

<trade_txid> = данные сделок. См. Получить историю сделок

Получить открытые позиции

URL: https://api.kraken.com/0/private/OpenPositions

Вот данных:

txid = через запятую перечень идентификаторов транзакций для выдачи
docalcs = включать расчеты прибыль/убыток (необязательно. по умолчанию = нет, false)
consolidation = основа консолидации данных позиции (необязательно.)
    market = консолидирует позиции на основе рыночной пары

Результат: массив данных открытой позиции

Примечание:

Using the consolidation optional field will result in consolidated view of the data being returned.

<position_txid> = данные открытой позиции
    ordertxid = ордер, ответственный за осуществление сделки
    pair = валютная пара
    time = UNIX временная метка сделки
    type = тип операции при открытии позиции (покупка/продажа)
    ordertype = тип ордера при открытии позиции
    cost = себестоимость открытия позиции (валюта котировки, если нет метки viqc)
    fee = комиссия открытия позиции (валюта котировки)
    vol = объем позиции (базовая валюта, если нет метки viqc)
    vol_closed = закрытый объем позиции (базовая валюта, если нет метки viqc)
    margin = начальная маржа (валюта котировки)
    value = текущая стоимость остаточной позиции (если запрошен docalcs. валюта котировки)
    net = нереализованная прибыль/убыток остаточной позиции (если запрошен docalcs. валюта котировки, шкала валюты котировки)
    misc = через запятую перечень данных прочего
    oflags = через запятую перечень меток ордера
        viqc = объем в валюте котировки

Примечание: Если не указано иное, расходы, комиссии, цены и объемы определяются по шкале пары активов, а не по шкале валюты.

Получить данные журнала

URL: https://api.kraken.com/0/private/Ledgers

Ввод данных:

aclass = класс актива (необязательно):
    валюта (по умолчанию)
asset = через запятую перечень активов для выдачи (необязательно. по умолчанию = все, all)
type = тип журнала для выдачи (необязательно):
    все (по умолчанию)
    deposit = пополнение
    withdrawal = вывод
    trade = сделка
    margin = маржа
start = UNIX начальная временная метка или идентификатор журнала (необязательно. эксклюзивно)
end = UNIX конечная временная метка или идентификатор журнала (необязательно. инклюзивно)
ofs = офсет результатов

Результат: массив данных журнала

<ledger_id> = данные журнала
    refid = идентификатор
    time = UNIX временная метка журнала
    type = тип записи в журнале
    aclass = класс актива
    asset = актив
    amount = сумма транзакции
    fee = комиссия транзакции
    balance = полученный баланс

Примечание: Время, заданное идентификатором журнала, является более точными, чем временные отметки Unix

Запрос журналов

URL: https://api.kraken.com/0/private/QueryLedgers

Ввод данных:

id = через запятую перечень идентификаторов журнала для запроса (до 20)

Результат: массив данных журнала

<ledger_id> = данные журнала. См. Получить данные журналов

Получить объем торгов

URL: https://api.kraken.com/0/private/TradeVolume

Ввод данных:

pair = через запятую перечень валютных пар для запроса (необязательно)
fee-info = включать ли в выдачу данные по комиссии (необязательно)

Результат: массив данных

currency = валюта объема
volume = объем
fees = массив пар активов и данных о ставках комиссий (если нужно)
    fee = текущая комиссия в процентах
    minfee = минимальная комиссия пары (если нефиксированная плата)
    maxfee = максимальная комиссия пары (если нефиксированная плата)
    nextfee = следующая ставка комиссии пары (если нефиксированная плата. ноль если самая низкая ставка)
    nextvolume = уровень объема для следующей ставки (если нефиксированная плата. ноль если самая низкая ставка)
    tiervolume = уровень объема текущей ставки (если нефиксированная плата. ноль если самая низкая ставка)
fees_maker = массив пар активов и данных о ставках комиссий мейкер (если нужно) для пар по плану мейкер/тейкер
    fee = текущая комиссия в процентах
    minfee = минимальная комиссия пары (если нефиксированная плата)
    maxfee = максимальная комиссия пары (если нефиксированная плата)
    nextfee = следующая ставка комиссии пары (если нефиксированная плата. ноль если самая низкая ставка)
    nextvolume = уровень объема для следующей ставки (если нефиксированная плата. ноль если самая низкая ставка)
    tiervolume = уровень объема текущей ставки (если нефиксированная плата. ноль если самая низкая ставка)

Примечание: Если пара активов работает по плану комиссий мейкер/тейкер, комиссию тейкер выдано в "fees", а мейкер в "fees_maker". Для других активов комиссии выдано в "fees".

Запрос отчета об экспорте

URL: https://api.kraken.com/0/private/AddExport

Ввод данных:

description = данные описания отчета
report = тип отчета (сделки/журналы)
format = (CSV/TSV) (необязательно. По умолчанию = CSV)
fields = через запятую перечень полей отчета (необязательно. по умолчанию = all, все)
    Примечание: Параметры поля зависят от типа отчета
    <сделки>
        ordertxid - идентификатор ордера
        time - время
        ordertype - тип ордера
        price - цена
        cost - себестоимость
        fee - комиссия
        vol - объем
        margin - маржа
        misc - прочее
        ledgers - журналы
    <журналы>
        refid - идентификатор
        time - время
        type - тип
        aclass - класс актива
        asset - актив
        amount - сумма
        fee - комиссия
        balance - баланс
asset = через запятую перечень активов для выдачи (необязательно. по умолчанию = all, все)
starttm = время начала отчета (необязательно. по умолчанию = год до этого):
    <n> = unix временная метка начала
endtm = время окончания отчета (необязательно. по умолчанию = сейчас):
    <n> = unix временная метка окончания

Результат:

id = идентификатор отчета

Ошибки: ошибки включают (но не ограничиваются):

EGeneral:Invalid arguments - неправильные аргументы
EQuery:Unknown currency pair - неизвестная пара активов

Получить статус экспорта

URL: https://api.kraken.com/0/private/ExportStatus

Ввод данных:

report = тип отчета (сделки/журналы)

Результат: массив отчетов и их данных

id = идентификатор отчета
descr = даны описания отчета
format = (CSV/TSV)
report = тип отчета (сделки/журналы)
status = статус ордера:
    Queued = отчет в очереди на создание
    Processing = отчет обрабатывается
    Processed = отчет создан
createdtm = время создания отчета
expiretm = срок действия отчета
starttm = время начала отчета
endtm = время завершения отчета
completedtm = время формировании отчета
aclass = класс актива
asset = через запятую перечень активов
fields = через запятую перечень полей
    <сделки>
        txid - идентификатор
        ordertxid - идентификатор ордера
        pair - пара
        time - время
        type - тип
        ordertype - тип ордера
        price - цена
        cost - себестоимость
        fee - комиссия
        vol - объем
        margin - маржа
        misc - прочее
        ledgers - журналы
    <журналы>
        txid  - идентификатор
        refid - реферальный идентификатор
        time - время
        type - тип
        aclass - класс актива
        asset - актив
        amount - сумма
        fee - комиссия
        balance - баланс

Ошибки: ошибки включают (но не ограничиваются):

EGeneral:Invalid arguments - Неправильные аргументы

Получить отчет экспорта

URL: https://api.kraken.com/0/private/RetrieveExport

Ввод данных:

id = идентификатор отчета

Результат: бинарный zip-архив, содержащий отчет

Примечание: Если тип контента не является приложением/json, текстом или html, двоичный отчет будет отменен. Если это один из таких типов, вы можете ожидать ошибки в ответе.

Примечание. В зависимости от выбранного типа отчета и избранных полей в отчете могут быть такие поля. Поля отмеченные * есть всегда.

<сделки>
    *txid - *идентификатор
    ordertxid - идентификатор ордера
    *pair - *пара
    time - время
    *type - *тип
    ordertype - тип ордера
    price - цена
    cost - себестоимость
    fee - комиссия
    vol - объем
    margin - маржа
    misc - прочее
    ledgers - журналы
<журналы>
    *txid - *идентификатор
    refid - реферальный идентификатор
    time - время
    type - тип
    aclass - класс актива
    asset - актив
    amount - сумма
    fee - комиссия
    balance - баланс

Удалить отчет экспорта

URL: https://api.kraken.com/0/private/RemoveExport

Ввод данных:

type = тип удаления (cancel/delete - отменить/удалить)
id = идентификатор отчета

Результат: результат вызова

cancel/delete = тип удаления

Примечание. Тип удаления "delete" может использоваться только для отчета, который уже был обработан. Использовать "cancel" для очереди и обработки статусов.

Ошибки: ошибки включают (но не ограничиваются следующими):

EGeneral:Invalid arguments - Неправильные аргументы
WExport:Already processed - Уже обработано

Примечание. В случае, если операция отмены или удаления уже состоялась на определенном идентификаторе отчета, вы получите WExport: Already processed - Уже обработано.




Приватные данные трейдинга

Добавить стандартный ордер

URL: https://api.kraken.com/0/private/AddOrder

Ввод данных:

pair = пара активов
type = тип операции (покупка/продажа)
ordertype = тип ордера:
    market - маркет
    limit - лимит (цена = лимит)
    stop-loss - стоп-лосс (цена = стоп-лосс)
    take-profit - тейк-профит (цена = тейк-профит)
    stop-loss-profit - стоп-лосс-профит (цена = стоп-лосс, цена2 = тейк-профит)
    stop-loss-profit-limit - стоп-лосс-профит-лимит (цена = стоп-лосс, цена2 = тейк-профит)
    stop-loss-limit - стоп-лосс-лимит (цена = стоп-лосс, цена2 = полученная лимит-цена)
    take-profit-limit - тейк-профит-лимит (цена = тейк-профит, цена2 = полученная лимит-цена)
    trailing-stop - трейлинг-стоп (цена = трейлинг-стоп оффсет)
    trailing-stop-limit - трейлинг-стоп-лимит (цена = трейлинг-стоп оффсет, цена2 = полученная лимит-оффсет цена)
    stop-loss-and-limit - стоп-лосс-и-лимит (цена = стоп-лосс, цена2 = лимит-цена)
    settle-position - оплата позиции
price = цена (необязательно. в зависимости от типа ордера)
price2 = вторичная цена (необязательно. зависит от типа ордера)
volume = объем ордера в лотах
leverage = желаемое значение плеча (необязательно. по умолчанию = нет)
oflags = через запятую перечень меток ордера (необязательно):
    viqc = объем в валюте котировок (недоступен для ордеров с плечом)
    fcib = предпочтение комиссии в базовой валюте
    fciq = предпочтение комиссии в валюте котировки
    nompp = отсутствие защиты рыночной цены
    post = только пост-ордер (доступен в случае тип ордера = лимит)
starttm = запланированное время начала (необязательно):
    0 = уже (по умолчанию)
    +<n> = время начала <n> через несколько секунд
    <n> = UNIX временная метка времени начала
expiretm = срок действия (необязательно):
    0 = нет срока действия (по умолчанию)
    +<n> = срок действия <n> через несколько секунд
    <n> = UNIX временная метка времени окончания срока действия
userref = идентификационный номер пользователя. 32-разрядный подписанный номер. (необязательно)
validate = только проверить ввод данных. не размещать ордер (необязательно)

опция добавления ордера закрытия, когда ордер заполнится:
    close[ordertype] = тип ордера
    close[price] = ціна
    close[price2] = вторичная цена

Результат:

descr = данные описания ордера
    order = описание ордера
    close = описание ордера условного закрытия (если условное закрытие установлено)
txid = массив идентификаторов транзакций для ордеров (если ордер был размещен успешно)

Ошибки: ошибки включают (но не ограничиваются следующими):

EGeneral:Invalid arguments - Неправильные аргументы
EService:Unavailable - Недоступно
ETrade:Invalid request - Неправильный запрос
EOrder:Cannot open position - Невозможно открыть позицию
EOrder:Cannot open opposing position - Невозможно открыть противоположную позицию
EOrder:Margin allowance exceeded - Превышена разрешенная маржа
EOrder:Margin level too low - Уровень маржи слишком низкий
EOrder:Insufficient margin - Недостаточная маржа (биржа не имеет достаточно средств, чтобы позволить торговлю с маржой)
EOrder:Insufficient funds - Недостаточно средств (недостаточно средств у пользователя)
EOrder:Order minimum not met - Объем ордера ниже минимума (объем слишком низкий)
EOrder:Orders limit exceeded - Лимит ордеров превышен
EOrder:Positions limit exceeded - Лимит позиций превышен
EOrder:Rate limit exceeded - Объем операций превышен
EOrder:Scheduled orders limit exceeded - Лимит запланированных ордеров превышен
EOrder:Unknown position - Неизвестная позиция

Примечание:

  • Ознакомьтесь с Торговые пары активов для спецификации в разрезе пар - цен, лотов и значений плеча.
  • Ценам может предшествовать +, - или # для обозначения цены как относительной суммы (за исключением трейлинг-стопов, которые всегда относительны). + Добавляет сумму до текущей предлагаемой цены. - вычитает сумму от текущей предлагаемой цены. # Добавляет или вычитает сумму от текущей предлагаемой цены, в зависимости от используемого типа операции и типа ордера. Относительные цены могут быть суфиксированы %, чтобы обозначить относительную сумму в процентах от предлагаемой цены.
  • Для ордеров с плечом, 0 можно использовать как значение объема для автоматического заполнения объема, необходимого для закрытия вашей позиции.
  • Если вы получите ошибку "EOrder: Trading agreement required", см. страницу управления ключами API для получения дополнительной информации.

Отменить открытый ордер

URL: https://api.kraken.com/0/private/CancelOrder

Ввод данных:

txid = идентификатор транзакции

Результат:

count = количество отмененных ордеров
pending = если установлено, ордер(а) ожидает отмены

Примечание: txid может быть идентификатором пользователя.

Частные переводы

ПРИМЕЧАНИЕ:Это предварительный API переводов, он может быть обновлен в будущем. Пожалуйста, перейдите на главную страницу АРІ для за дополнительной информацией об использовании АРІ.

Получить способы переводов (пополнения)

URL: https://api.kraken.com/0/private/DepositMethods

Ввод данных:

aclass = класс актива (необязательно):
    валюта (по умолчанию)
asset = валюта пополнения

Результат: ассоциативный массив способов пополнения:

method = название способа пополнения
limit = максимальная сумма, которую можно внести, или "false", если нет ограничений
fee = сумма комиссий, подлежащих уплате
address-setup-fee = есть ли комиссия за установку адреса (необязательно)

Получить адреса переводов (пополнения)

URL: https://api.kraken.com/0/private/DepositAddresses

Ввод данных:

aclass = класс актива (необязательно):
    валюта (по умолчанию)
asset = валюта пополнения
method = название способа пополнения
new = генерировать ли новый адрес (необязательно. по умолчанию = false")

Результат: ассоциативный массив адресов пополнения:

address = адрес пополнения
expiretm = срок действия временной отметкой Unix, или 0, если адрес бессрочный
new = был ли когда-либо использован адрес

Получить статус последних пополнений

URL: https://api.kraken.com/0/private/DepositStatus

Ввод данных:

aclass = класс актива (необязательно):
    валюта (по умолчанию)
asset = валюта пополнения
method = название способа пополнения

Результат: ассоциативный массив данных о статусе пополнения:

method = название способа пополнения
aclass = класс актива
asset = валюта код X-ISO4217-A3
refid = ссылочный идентификатор
txid = идентификатор способа транзакции
info = информация о способе транзакции
amount = сумма пополнения
fee = оплачено комиссий
time = метка времени Unix, когда был сделан запрос
status = статус пополнения
status-prop = дополнительные свойства статуса (если доступны)
    return = возвратная транзакция, инициированная Kraken
    onhold = депозит в ожидании рассмотрения
Информацию о статусе ищите в финансовых транзакциях IFEX.

Получить информацию о выводе

URL: https://api.kraken.com/0/private/WithdrawInfo

Ввод данных:

aclass = класс актива (необязательно):
    валюта (по умолчанию)
asset = валюта вывода
key = название ключа вывода с вашего аккаунта
amount = сумма вывода

Результат: ассоциативный массив данных о выводе:

method = название метода вывода, который будет использоваться
limit = максимальная сумма, которую можно внести
fee = сумма комиссий, подлежащих уплате

Вывод средств

URL: https://api.kraken.com/0/private/Withdraw

Ввод данных:

aclass = класс актива (необязательно):
    валюта (по умолчанию)
asset = валюта вывода
key = название ключа вывода с вашего аккаунта
amount = сумма вывода, включая комиссионные

Результат: ассоциативный массив транзакции вывода:

refid = ссылочный идентификатор

Получить статус последних выводов

URL: https://api.kraken.com/0/private/WithdrawStatus

Ввод данных:

aclass = класс актива (необязательно):
    валюта (по умолчанию)
asset = валюта вывода
method = название метода вывода (необязательно)

Результат: ассоциативный массив данных о статусе выводов:

method = название метода вывода
aclass = класс актива
asset = валюта код X-ISO4217-A3
refid = ссылочный идентификатор
txid = идентификатор способа транзакции
info = информация о способе транзакции
amount = сумма вывода
fee = оплачено комиссий
time = метка времени Unix, когда был сделан запрос
status = статус вывода
status-prop = дополнительные свойства статуса (если доступны)
    cancel-pending = запрос отмены
    canceled = отменено
    cancel-denied = запрос отмены отклонен
    return = транзакцию возврата инициировано Кракеном; невозможно отменить
    onhold = вывод в ожидании рассмотрения
Информацию о статусе ищите в финансовых транзакциях IFEX.

Запрос отмены вывода

URL: https://api.kraken.com/0/private/WithdrawCancel

Ввод данных:

aclass = класс актива (необязательно):
    валюта (по умолчанию)
asset = валюта вывода
refid = ссылочный идентификатор вывод

Результат: "true", если успешно

Примечание: Отмена не является гарантированной. Это действие создает запрос отмены. Отмена вывода зависит от того, насколько далеко зашел процесс такого вывода.

Перемещение между кошельками

URL: https://api.kraken.com/0/private/WalletTransfer

Ввод данных:

asset = валюта вывода
to = на какой кошелек перемещаются средства
    Фьючерсный кошелек (по умолчанию)
from = с какого кошелька перемещаются средства
    Спотовый кошелек (по умолчанию)
amount = сумма вывода, включая комиссионные

Результат: ассоциативный массив транзакции перемещений:

refid = ссылочный идентификатор

Аутентификация WebSockets

Для подключения к конечным точкам API WebSockets Private клиент должен запросить "токен" аутентификации через конечную точку API REST "GetWebSocketsToken". Токен нужно использовать в течение 15 минут после создания. Срок действия токена не истекает, когда поддерживается соединение с частным сообщением WebSockets API (openOrders или ownTrades).

URL: https://api.kraken.com/0/private/GetWebSocketsToken

Полученный токен необходимо указывать в поле "токен" для любых новых частных соединений с WebSocket:

{
    "event": "subscribe",
    "subscription": {
        "name": "ownTrades",
        "token": "secretwstoken123"
    }
}

Просим выбрать разрешение "Доступ к API WebSockets" при создании ключа API, чтобы иметь возможность генерировать токен аутентификации.

Example API clients

Далее приведены образцы библиотек клиентских кодов API, которые можно использовать при написании собственного клиентского API. Пожалуйста, имейте в виду, что ни Payward, ни третьи авторы не несут ответственность за убытки из-за ошибки или неправильное использование API. Payward совершил первичный осмотр безопасности сторонних кодов до того, как разместить их, но не может поручиться за любые изменения, добавлены с тех пор. Если у вас возникли проблемы, обратитесь в службу технической поддержки.

C

Авторство третьих сторон https://github.com/hANSIc99/Kraken_C_API.

C#

Авторство третьих сторон https://bitbucket.org/arrivets/krakenapi.

C++

Авторство третьих сторон https://github.com/voidloop/krakenapi.

GO

Авторство третьих сторон https://github.com/Beldur/kraken-go-api-client.

Node.JS

Авторство третьих сторон https://github.com/nothingisdead/npm-kraken-api.

PERL

Авторство третьих сторон http://search.cpan.org/~philippe/Finance-Bank-Kraken-0.1/.

Python 3

Авторство третьих сторон https://github.com/veox/python3-krakenex.

Python 2

Авторство третьих сторон https://github.com/veox/python2-krakenex.

Ruby

Авторство третьих сторон https://github.com/jonatack/kraken_ruby_client.

PHP

Команда Кракен предоставила базовую библиотеку PHP для взаимодействия с API REST Kraken. Источник и примеры использования также доступны в хранилище githubкракен-api-клиент и имеет MIT лицензию.

Библиотека

Используйте этот класс библиотеки, чтобы осуществлять запросы в Kraken REST API с клиентом PHP. Он автоматически определяет правильный URL-путь АРІ метода, генерирует значение для каждого запроса и добавляет подписаный заголовок, используя ваш API шифр и созданное значение nonce.

<?php
/**
 * Reference implementation for Kraken's REST API.
 *
 * See https://www.kraken.com/help/api for more info.
 *
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2013 Payward, Inc
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

class KrakenAPIException extends ErrorException {};

class KrakenAPI
{
    protected $key;     // API key
    protected $secret;  // API secret
    protected $url;     // API base URL
    protected $version; // API version
    protected $curl;    // curl handle

    /**
     * Constructor for KrakenAPI
     *
     * @param string $key API key
     * @param string $secret API secret
     * @param string $url base URL for Kraken API
     * @param string $version API version
     * @param bool $sslverify enable/disable SSL peer verification.  disable if using beta.api.kraken.com
     */
    function __construct($key, $secret, $url='https://api.kraken.com', $version='0', $sslverify=true)
    {
        $this->key = $key;
        $this->secret = $secret;
        $this->url = $url;
        $this->version = $version;
        $this->curl = curl_init();

        curl_setopt_array($this->curl, array(
            CURLOPT_SSL_VERIFYPEER => $sslverify,
            CURLOPT_SSL_VERIFYHOST => 2,
            CURLOPT_USERAGENT => 'Kraken PHP API Agent',
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true)
        );
    }

    function __destruct()
    {
        curl_close($this->curl);
    }

    /**
     * Query public methods
     *
     * @param string $method method name
     * @param array $request request parameters
     * @return array request result on success
     * @throws KrakenAPIException
     */
    function QueryPublic($method, array $request = array())
    {
        // build the POST data string
        $postdata = http_build_query($request, '', '&');

        // make request
        curl_setopt($this->curl, CURLOPT_URL, $this->url . '/' . $this->version . '/public/' . $method);
        curl_setopt($this->curl, CURLOPT_POSTFIELDS, $postdata);
        curl_setopt($this->curl, CURLOPT_HTTPHEADER, array());
        $result = curl_exec($this->curl);
        if($result===false)
            throw new KrakenAPIException('CURL error: ' . curl_error($this->curl));

        // decode results
        $result = json_decode($result, true);
        if(!is_array($result))
            throw new KrakenAPIException('JSON decode error');

        return $result;
    }

    /**
     * Query private methods
     *
     * @param string $path method path
     * @param array $request request parameters
     * @return array request result on success
     * @throws KrakenAPIException
     */
    function QueryPrivate($method, array $request = array())
    {
        if(!isset($request['nonce'])) {
            // generate a 64 bit nonce using a timestamp at microsecond resolution
            // string functions are used to avoid problems on 32 bit systems
            $nonce = explode(' ', microtime());
            $request['nonce'] = $nonce[1] . str_pad(substr($nonce[0], 2, 6), 6, '0');
        }

        // build the POST data string
        $postdata = http_build_query($request, '', '&');

        // set API key and sign the message
        $path = '/' . $this->version . '/private/' . $method;
        $sign = hash_hmac('sha512', $path . hash('sha256', $request['nonce'] . $postdata, true), base64_decode($this->secret), true);
        $headers = array(
            'API-Key: ' . $this->key,
            'API-Sign: ' . base64_encode($sign)
        );

        // make request
        curl_setopt($this->curl, CURLOPT_URL, $this->url . $path);
        curl_setopt($this->curl, CURLOPT_POSTFIELDS, $postdata);
        curl_setopt($this->curl, CURLOPT_HTTPHEADER, $headers);
        $result = curl_exec($this->curl);
        if($result===false)
            throw new KrakenAPIException('CURL error: ' . curl_error($this->curl));

        // decode results
        $result = json_decode($result, true);
        if(!is_array($result))
            throw new KrakenAPIException('JSON decode error');

        return $result;
    }
}

Пример использования

Ниже приведены шаги, касающиеся инициализации класса библиотеки Kraken API, а также ряд примеров методов запросов API. Наборы отформатированных результатов отображаются под каждым соответствующим фрагментом запроса API.

Инициализация

Добавьте файл библиотеки и укажите ключ и шифр API, когда инициализируете объект Kraken API.

<?php

require_once 'KrakenAPIClient.php';
$kraken = new KrakenAPI('YOUR API KEY', 'YOUR API SECRET');
Метод запросов

Запросить публичный список имеющихся валют и их свойств:

$res = $kraken->QueryPublic('Assets');
print_r($res);

Вывод валют осуществляется согласно номенклатуры ISO-4217-A3-X, пример вывода::

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [XXBT] => Array
                (
                    [aclass] => currency
                    [altname] => XBT
                    [decimals] => 10
                    [display_decimals] => 5
                )

            [XLTC] => Array
                (
                    [aclass] => currency
                    [altname] => LTC
                    [decimals] => 10
                    [display_decimals] => 5
                )

            [XXRP] => Array
                (
                    [aclass] => currency
                    [altname] => XRP
                    [decimals] => 8
                    [display_decimals] => 5
                )

            [ZEUR] => Array
                (
                    [aclass] => currency
                    [altname] => EUR
                    [decimals] => 4
                    [display_decimals] => 2
                )
            ...
)

Запросить публичо информацию по паре XBT/USD:

$res = $kraken->QueryPublic('Ticker', array('pair' => 'XXBTZUSD'));
print_r($res);

Пример вывода:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [XXBTZUSD] => Array
                (
                    [a] => Array
                        (
                            [0] => 106.09583
                            [1] => 111
                        )

                    [b] => Array
                        (
                            [0] => 105.53966
                            [1] => 4
                        )

                    [c] => Array
                        (
                            [0] => 105.98984
                            [1] => 0.13910102
                        )

                    ...
        )
)

Запросить публично последние торги для пары XBT/EUR с 2013-08-07 18:20:42+00:00:

ПРИМЕЧАНИЕ: параметр 'с' может измениться в будущем: его точность может быть изменена, и он больше не может быть представителем временной отметки. Лучшая практика - это базировать его на "последнем" значении, возвращенном в наборе результатов.

$res = $kraken->QueryPublic('Trades', array('pair' => 'XXBTZEUR', 'since' => '137589964200000000'));
print_r($res);

Пример вывода:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [XXBTZEUR] => Array
                (
                    [0] => Array
                        (
                            [0] => 78.60500
                            [1] => 2.03990000
                            [2] => 1375897934.1176
                            [3] => s
                            [4] => m
                            [5] =>
                        )

                    [1] => Array
                        (
                            [0] => 79.41809
                            [1] => 2.02203000
                            [2] => 1375898123.0771
                            [3] => b
                            [4] => m
                            [5] =>
                        )

                    [2] => Array
                        (
                            [0] => 79.86999
                            [1] => 7.00000000
                            [2] => 1375898123.2587
                            [3] => b
                            [4] => m
                            [5] =>
                        )
                    ...
            )
            [last] => 137589925237491170
        )
)

Запросить приватно балансы активов:

$res = $kraken->QueryPrivate('Balance');
print_r($res);

Пример вывода:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [ZUSD] => 3415.8014
            [ZEUR] => 155.5649
            [XXBT] => 149.9688412800
            [XXRP] => 499889.51600000
        )

)

Запросить приватно открытые ордера и связанные сделки:

$res = $kraken->QueryPrivate('OpenOrders', array('trades' => true));
print_r($res);

Пример вывода:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [open] => Array
                (
                    [O7ICPO-F4CLJ-MVBLHC] => Array
                        (
                            [refid] =>
                            [userref] =>
                            [status] => open
                            [opentm] => 1373750306.9819
                            [starttm] => 0
                            [expiretm] => 0
                            [descr] => Array
                                (
                                    [order] => sell 3.00000000 XBTUSD @ limit 500.00000
                                )

                            [vol] => 3.00000000
                            [vol_exec] => 0.00000000
                            [cost] => 0.00000
                            [fee] => 0.00000
                            [price] => 0.00000
                            [misc] =>
                            [oflags] =>
                        )
                    ...
                )
        )
)

Добавить стандартный ордер: продажа 1.123 XBT/USD @ лимит $120

$res = $kraken->QueryPrivate('AddOrder', array(
    'pair' => 'XXBTZUSD',
    'type' => 'sell',
    'ordertype' => 'limit',
    'price' => '120',
    'volume' => '1.123'
));
print_r($res);

Пример вывода:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [descr] => Array
                (
                    [order] => sell 1.12300000 XBTUSD @ limit 120.00000
                )

            [txid] => Array
                (
                    [0] => OAVY7T-MV5VK-KHDF5X
                )

        )

)

Добавить стандартный ордер: покупка XBT на €300 по рынку 2013-08-12 09:27:22+0000

$res = $kraken->QueryPrivate('AddOrder', array(
    'pair' => 'XXBTZEUR',
    'type' => 'buy',
    'ordertype' => 'market',
    'oflags' => 'viqc',
    'volume' => '300',
    'starttm' => '1376299642'
));
print_r($res);

Пример вывода:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [descr] => Array
                (
                    [order] => buy 300.00000000 XBTEUR @ market
                )

            [txid] => Array
                (
                    [0] => ONQN65-L2GNR-HWJLF5
                )

        )

)

Добавить стандартный ордер: покупка 2.12345678 XBTUSD @ лимит $101.9901 с плечом 2:1, с последующим стоп-лоссом, тейк-профит ордер продажи: стоп-лосс на -5%, тейк-профит на +10 долл. рост цены (цены стоп-лосс определяются автоматически, используя # расчет):

$res = $kraken->QueryPrivate('AddOrder', array(
    'pair' => 'XXBTZUSD',
    'type' => 'buy',
    'ordertype' => 'limit',
    'price' => '101.9901',
    'volume' => '2.12345678',
    'leverage' => '2:1',
    'close' => array(
        'ordertype' => 'stop-loss-profit',
        'price' => '#5%',  // stop loss price (relative percentage delta)
        'price2' => '#10'  // take profit price (relative delta)
    )
));
print_r($res);

Пример вывода:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [descr] => Array
                (
                    [order] => buy 2.12345678 XBTUSD @ limit 101.99010 with 2:1 leverage
                    [close] => close position @ stop loss -5.0000%, take profit +10.00000
                )

            [txid] => Array
                (
                    [0] => OFMYYE-POAPQ-63IMWL
                )

        )

)