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

Справочник по API

Общие понятия

Объем, цены, типы ордеров и срок действия

Объем

Объем указывается в центах (единицах 0,0000001 лота).

Лоты Объем (центы)
0,01 100 000
0,1 1 000 000
1,0 10 000 000

Цены

Значения цен указываются в пипетках. Для преобразования: отображаемая_цена = значение_пипетки / 10^pipDigits

Для EURUSD (5 знаков) значение пипетки 112345 = 1,12345.

Типы ордеров

Тип Описание Обязательные поля
MARKET Исполнить немедленно по текущей цене symbolId, tradeSide, volume
LIMIT Исполнить по лимитной цене или лучше + limitPrice
STOP Активировать, когда рынок достигнет стоп-цены + stopPrice
MARKET_RANGE Исполнить в пределах ценового диапазона + baseSlippagePrice
STOP_LIMIT Лимитный ордер, активируемый по стоп-цене + stopPrice, limitPrice

Срок действия

Политика Описание
GOOD_TILL_CANCEL Ордер остается активным до исполнения или отмены
GOOD_TILL_DATE Ордер истекает в указанный expirationTimestamp
IMMEDIATE_OR_CANCEL Исполнить доступное немедленно, остальное отменить

Информация о счете

GET /v1/balance Get account balance

Возвращает баланс счета, средства и свободную маржу.

Установка

Параметры отсутствуют.

Ответы

200 Успешный ответ

Response body
{
  "balance": 10000.00,
  "equity": 10250.75,
  "freeMargin": 9800.50,
  "balanceVersion": 42,
  "moneyDigits": 2,
  "depositAssetId": 1
}
Поле Тип Описание
balance double Баланс счета в валюте депозита
equity double Баланс + плавающая прибыль/убыток
freeMargin double Маржа, доступная для новых сделок
balanceVersion int64 Счетчик версии баланса
moneyDigits int32 Десятичные знаки для денежных значений
depositAssetId int64 ID актива валюты депозита
GET /v1/symbols Получить доступные инструменты

Возвращает все инструменты, доступные для торговли на счете.

Установка

Параметры отсутствуют.

Ответы

200 Массив объектов Symbol

Response body
[
  {
    "symbolId": 1,
    "symbolName": "EURUSD",
    "enabled": true,
    "baseAssetId": 2,
    "quoteAssetId": 1,
    "description": "Euro vs US Dollar"
  }
]

Symbol

Поле Тип Описание
symbolId int64 ID инструмента (используется в других вызовах API)
symbolName string Название инструмента (например, "EURUSD")
enabled boolean Доступен ли инструмент для торговли
baseAssetId int64 ID базового актива
quoteAssetId int64 ID актива котировки
description string Описание в удобочитаемом формате
GET /v1/assets Получить доступные активы

Возвращает доступные активы (валюты).

Установка

Параметры отсутствуют.

Ответы

200 Массив объектов Asset

Response body
[
  {
    "assetId": 1,
    "name": "USD",
    "displayName": "US Dollar"
  }
]

Asset

Поле Тип Описание
assetId int64 ID актива
name string Код актива (например, "USD")
displayName string Отображаемое название

Рыночные данные

GET /v1/prices Получить спотовые цены

Возвращает текущие цены покупки/продажи для указанных инструментов. Это снимок — API не поддерживает потоковую передачу данных.

Установка
Имя Расположение Тип Обязательное Описание
symbolId query int64[] ID инструментов через запятую
Ответы

200 Массив объектов SpotPrice

Response body
[
  {
    "symbolId": 1,
    "bid": 112340,
    "ask": 112355,
    "high": 112890,
    "low": 111950,
    "sessionClose": 112100,
    "timestamp": 1700000000000
  }
]

SpotPrice

Поле Тип Описание
symbolId int64 ID инструмента
bid int64 Лучшая цена продажи (пипетки)
ask int64 Лучшая цена покупки (пипетки)
high int64 Максимум сессии (пипетки)
low int64 Минимум сессии (пипетки)
sessionClose int64 Закрытие предыдущей сессии (пипетки)
timestamp int64 Временная метка котировки (эпоха мс)
GET /v1/trendbars Получить исторические данные OHLCV

Возвращает исторические данные свечей (OHLCV) для инструмента.

Установка
Имя Расположение Тип Обязательное торговля Описание
symbolId query int64 ID инструмента
period query string Период бара
fromTimestamp query string Время начала (ISO-8601)
toTimestamp query string Время окончания (ISO-8601)
count query int32 100 Макс. количество баров для возврата
Доступные периоды

M_1 M_2 M_3 M_4 M_5 M_10 M_15 M_30 H_1 H_2 H_3 H_4 H_6 H_8 H_12 D_1 W_1 MN_1

Ответы

200 Массив объектов Trendbar

Response body
[
  {
    "timestamp": 1700000000000,
    "open": 112340.0,
    "high": 112890.0,
    "low": 111950.0,
    "close": 112500.0,
    "volume": 4521
  }
]

Trendbar

Поле Тип Описание
timestamp int64 Время открытия бара (эпоха мс)
open double Цена открытия (пипетки)
high double Максимальная цена (пипетки)
low double Минимальная цена (пипетки)
close double Цена закрытия (пипетки)
volume int64 Тиковый объем

Ордера

POST /v1/orders Разместить новый ордер

Размещает новый торговый ордер. Возвращает ExecutionResponse.

Установка

Параметры пути или запроса отсутствуют.

Тело запроса application/json
Поле Тип Обязательное Описание
symbolId int64 Инструмент для торговли
orderType string MARKET, LIMIT, STOP, MARKET_RANGE, STOP_LIMIT
tradeSide string BUY или SELL
volume int64 Объем в центах
limitPrice double Лимитная цена – требуется для LIMIT, STOP_LIMIT
stopPrice double Цена срабатывания стопа – требуется для STOP, STOP_LIMIT
stopLoss double Цена стоп-лосса
takeProfit double Цена тейк-профита
comment string Произвольный комментарий (макс. 256 символов)
label string Метка бота (макс. 100 символов)
timeInForce string GOOD_TILL_CANCEL, GOOD_TILL_DATE, IMMEDIATE_OR_CANCEL
baseSlippagePrice double Базовая цена для проскальзывания – требуется для MARKET_RANGE
slippageInPoints int32 Макс. проскальзывание в пунктах
expirationTimestamp int64 Временная метка истечения (эпоха мс) – для GOOD_TILL_DATE
Example request body
{
  "symbolId": 1,
  "orderType": "MARKET",
  "tradeSide": "BUY",
  "volume": 10000000,
  "stopLoss": 112000,
  "takeProfit": 113000
}
Ответы

200 ExecutionResponse – ордер принят или исполнен

400 INVALID_REQUEST или TRADING_BAD_VOLUME

422 NOT_ENOUGH_MONEY

409 MARKET_CLOSED

Example success response
{
  "orderId": 12345,
  "positionId": 67890,
  "executionType": "ORDER_FILLED",
  "order": { "..." : "..." },
  "position": { "..." : "..." },
  "deal": { "..." : "..." }
}
GET /v1/orders Получить отложенные ордера

Возвращает все отложенные (неисполненные) ордера.

Установка

Параметры отсутствуют.

Ответы

200 Массив объектов отложенных ордеров

PUT /v1/orders/{orderId} Изменить отложенный ордер

Изменяет существующий отложенный ордер. Возвращает ExecutionResponse.

Установка
Имя Расположение Тип Обязательное Описание
orderId path int64 Ордер для изменения
Тело запроса application/json

Любое подмножество следующих полей.

Поле Тип Описание
volume int64 Новый объем в центах
limitPrice double Новая лимитная цена
stopPrice double Новая стоп-цена
stopLoss double Новая цена стоп-лосса
takeProfit double Новая цена тейк-профита
expirationTimestamp int64 Новая временная метка истечения (эпоха мс)
Ответы

200 ExecutionResponse с ORDER_REPLACED

404 Ордер не найден

DELETE /v1/orders/{orderId} Отменить отложенный ордер

Отменяет отложенный ордер. Возвращает ExecutionResponse.

Установка
Имя Расположение Тип Обязательное Описание
orderId path int64 Ордер для отмены
Ответы

200 ExecutionResponse с ORDER_CANCELLED

404 Ордер не найден

GET /v1/orders/history Получить историю ордеров

Возвращает исторические ордера в пределах временного диапазона.

Установка
Имя Расположение Тип Обязательное Описание
fromTimestamp query string Время начала (ISO-8601)
toTimestamp query string Время окончания (ISO-8601)
Ответы

200 OrderListResponse

Поле Тип Описание
orders Order[] Массив исторических ордеров
hasMore boolean Доступны ли дополнительные страницы

Позиции

GET /v1/positions Получить открытые позиции

Возвращает все открытые позиции и отложенные ордера.

Установка

Параметры отсутствуют.

Ответы

200 Массив объектов Position

Response body
[
  {
    "positionId": 67890,
    "symbolId": 1,
    "tradeSide": "BUY",
    "volume": 10000000,
    "entryPrice": 112345.0,
    "stopLoss": 112000.0,
    "takeProfit": 113000.0,
    "unrealizedPnl": 155.25,
    "commission": -7.00,
    "swap": -1.20
  }
]

Позиция

Поле Тип Описание
positionId int64 ID позиции
symbolId int64 ID инструмента
tradeSide string BUY или SELL
volume int64 Объем в центах
entryPrice double Цена входа VWAP
stopLoss double Цена стоп-лосса
takeProfit double Цена тейк-профита
unrealizedPnl double Плавающая прибыль/убыток
commission double Взимаемая комиссия
swap double Сумма свопа
GET /v1/positions/{positionId} Получить детали позиции

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

Установка
Имя Расположение Тип Обязательное Описание
positionId path int64 ID позиции
Ответы

200 PositionDetailResponse

Поле Тип Описание
position Position Объект позиции
orders Order[] Связанные ордера
deals Deal[] Связанные сделки
PUT /v1/positions/{positionId} Изменить СЛ/ТП позиции

Обновляет стоп-лосс и/или тейк-профит для открытой позиции. Возвращает ExecutionResponse.

Установка
Имя Расположение Тип Обязательное Описание
positionId path int64 ID позиции
Тело запроса application/json
Поле Тип Описание
stopLoss double Новая цена стоп-лосса (null для удаления)
takeProfit double Новая цена тейк-профита (null для удаления)
trailingStopLoss boolean Включить скользящий стоп-лосс
Example request body
{
  "stopLoss": 111500,
  "takeProfit": 113500,
  "trailingStopLoss": false
}
Ответы
POST /v1/positions/{positionId}/close Закрыть позицию

Закрывает открытую позицию полностью или частично. Используйте значение меньше полного объема позиции для частичного закрытия. Возвращает ExecutionResponse.

Установка
Имя Расположение Тип Обязательное Описание
positionId path int64 ID позиции
Тело запроса application/json
Поле Тип Обязательное Описание
volume int64 Объем для закрытия в центах
Example – full close (1 lot)
{
  "volume": 10000000
}
Ответы

422 NOT_ENOUGH_MONEY – недостаточная маржа для частичного закрытия


Сделки

GET /v1/deals Получить историю сделок

Возвращает исполненные сделки в пределах временного диапазона.

Установка
Имя Расположение Тип Обязательное торговля Описание
fromTimestamp query string Время начала (ISO-8601)
toTimestamp query string Время окончания (ISO-8601)
maxRows query int32 50 Максимальное количество возвращаемых сделок
Ответы

200 Массив объектов Deal

Response body
[
  {
    "dealId": 11111,
    "orderId": 12345,
    "positionId": 67890,
    "symbolId": 1,
    "tradeSide": "BUY",
    "volume": 10000000,
    "filledVolume": 10000000,
    "executionPrice": 112345.0,
    "executionTimestamp": 1700000000000,
    "dealStatus": "FILLED",
    "commission": -7.00
  }
]

Сделка

Поле Тип Описание
dealId int64 ID сделки
orderId int64 Ордер, инициировавший эту сделку
positionId int64 ID позиции
symbolId int64 ID инструмента
tradeSide string BUY или SELL
volume int64 Запрошенный объем в центах
filledVolume int64 Исполненный объем в центах
executionPrice double Цена исполнения
executionTimestamp int64 Время исполнения (эпоха мс)
dealStatus string Статус – см. значения ниже
commission double Взимаемая комиссия

Значения dealStatus

Значение Значение
FILLED Ордер полностью исполнен
PARTIALLY_FILLED Ордер частично исполнен
REJECTED Отклонен торговым сервером
INTERNALLY_REJECTED Отклонен внутренне до достижения сервера
ERROR Произошла ошибка во время исполнения
MISSED Ордер пропущен (напр., гэп на рынке)

Схемы { #execution-response-schema }

ExecutionResponse

Все операции размещения, изменения и отмены ордеров возвращают этот объект.

Поле Тип Описание
orderId int64 ID затронутого ордера
positionId int64 ID затронутой позиции
executionType string Тип результата – см. значения ниже
order Order Детали ордера (если применимо)
position Position Детали позиции (если применимо)
deal Deal Детали сделки (если применимо)

Значения executionType

Значение Значение
ORDER_ACCEPTED Отложенный ордер принят
ORDER_FILLED Ордер полностью исполнен
ORDER_REPLACED Ордер изменен
ORDER_CANCELLED Ордер отменен
ORDER_EXPIRED Ордер истек
ORDER_REJECTED Ордер отклонен
ORDER_CANCEL_REJECTED Запрос на отмену отклонен
ORDER_PARTIAL_FILL Ордер частично исполнен
SWAP Применен своп позиции
DEPOSIT Пополнение счета
WITHDRAW Снятие средств со счета
BONUS_DEPOSIT_WITHDRAW Пополнение или снятие бонуса

Ограничения частоты запросов

Шлюз применяет ограничения частоты запросов на нескольких уровнях.

Уровень Описание
По IP Ограничивает общее количество запросов с одного IP-адреса
По пользователю Ограничивает общее количество запросов по всем счетам для одного токена
По счету Ограничивает запросы, направленные на один торговый счет

Превышен лимит частоты запросов

Когда лимит частоты запросов превышен, API возвращает 429 Too Many Requests с заголовком Retry-After.


Обработка ошибок

Когда запрос не выполняется, API возвращает ответ об ошибке в формате JSON.

Error response format
{
  "error": {
    "code": "NOT_ENOUGH_MONEY",
    "message": "Insufficient free margin for this order",
    "httpStatus": 422,
    "retryAfter": null
  }
}

Коды ошибок

Код HTTP Описание
INVALID_REQUEST 400 Недопустимые или отсутствующие параметры запроса
UNAUTHORIZED 401 Недопустимый, истекший или отсутствующий токен
TRADING_BAD_VOLUME 400 Объем недопустим (ниже минимума или превышает позицию)
NOT_ENOUGH_MONEY 422 Недостаточная свободная маржа
SYMBOL_NOT_FOUND 404 ID инструмента не существует
MARKET_CLOSED 409 Рынок для инструмента в настоящее время закрыт
MAINTENANCE 503 Торговый сервер находится в режиме обслуживания
TIMEOUT 504 Торговый сервер не ответил вовремя
GATEWAY_RATE_LIMIT 429 Превышен лимит частоты запросов – см. заголовок Retry-After

Обработка лимита частоты запросов

Когда вы получаете ответ 429, заголовок Retry-After и поле retryAfter указывают, сколько секунд вам нужно подождать перед отправкой следующего запроса.