Моделі Python
Об’єкти, які повертає клієнт на Python.
Level
class Level(NamedTuple)Один рівень стакана, пара [price, size] з контракту.
| Поле | Тип |
|---|---|
price | Decimal |
size | Decimal |
Limits
Стелі стріму й торгівлі, як їх друкує /v1/meta.
commands_per_second — темп торгових команд на всіх клієнтів разом,
workspace_commands_per_second — темп команд робочого простору,
settings_commands_per_second — темп записів налаштувань; кожне дорівнює 0
для термінала, старішого за етап, що додав ліміт: він його
не друкує, бо таких команд не приймає.
| Поле | Тип |
|---|---|
ws_connections_per_token | int |
subscriptions_per_connection | int |
api_only_instruments | int |
exchange_subscriptions_per_second | int |
commands_per_second | int |
workspace_commands_per_second | int |
settings_commands_per_second | int |
Meta
GET /v1/meta: версія API, збірка термінала, права токена, ліміти, топіки стріму.
topics порожній, якщо термінал зібрано без відводу ринкових
даних; стрім і ринкові операції тоді відповідають unsupported.
| Поле | Тип |
|---|---|
api_version | str |
app_version | str |
build_hash | str |
build_env | str |
features | str |
scopes | list[str] |
limits | Limits |
topics | list[str] |
Health
GET /v1/health: стан Local API і лічильники хабу ринкових даних.
| Поле | Тип |
|---|---|
status | str |
uptime_ms | int |
clients | int |
streams | int |
api_only_instruments | int |
dropped_events | int |
dropped_frames | int |
overflow_closes | int |
stream_available | bool |
LastEvent
Останній запис історії підключення: код стадії або помилки та його час.
| Поле | Тип |
|---|---|
code | str |
ts | int |
ConnectionStatus
Стан підключення: disabled, enabled, connecting, connected або failed.
last_event дорівнює None, поки підключення не має історії.
| Поле | Тип |
|---|---|
state | str |
last_event | LastEvent | None |
Connection
Одне з підключень термінала до бірж. Не несе секретів, навіть замаскованих.
| Поле | Тип |
|---|---|
id | int |
exchange | str |
market | str |
label | str |
enabled | bool |
read_only | bool |
has_credentials | bool |
proxy_bound | bool |
status | ConnectionStatus |
Instrument
Запис довідника. Кроки й мінімуми дорівнюють None, якщо біржа їх не повідомила.
| Поле | Тип |
|---|---|
instrument | str |
exchange | str |
market | str |
symbol | str |
base | str |
quote | str |
status | str |
tick_size | Decimal | None |
lot_size | Decimal | None |
min_size | Decimal | None |
contract_value | Decimal | None |
Page
class Page(Generic[T])Одна сторінка списку: data плюс next_cursor для наступної сторінки.
exchange і market називають пару, для якої перелічено сторінку.
next_cursor дорівнює None на останній сторінці.
| Поле | Тип |
|---|---|
data | list[T] |
next_cursor | str | None |
exchange | str |
market | str |
Interval
Код інтервалу, який знає термінал, і його номінальна тривалість.
| Поле | Тип |
|---|---|
id | str |
duration_ms | int |
Intervals
GET /v1/market/intervals: інтервали свічок і кластерів.
| Поле | Тип |
|---|---|
candles | list[Interval] |
clusters | list[Interval] |
Candle
Один бар. ts — час відкриття бара; volume — у базовій монеті.
| Поле | Тип |
|---|---|
ts | int |
open | Decimal |
high | Decimal |
low | Decimal |
close | Decimal |
volume | Decimal |
quote_volume | Decimal |
closed | bool |
Candles
GET /v1/market/candles: бари одного інструмента й підключення, через яке вони прийшли.
| Поле | Тип |
|---|---|
instrument | str |
connection_id | int |
interval | str |
data | list[Candle] |
Trade
Одна угода. ts — коли вона пройшла через термінал, exchange_ts — час біржі.
id у v1 завжди None.
| Поле | Тип |
|---|---|
id | str | None |
price | Decimal |
qty | Decimal |
side | str |
ts | int |
exchange_ts | int |
Trades
GET /v1/market/trades: останні угоди одного інструмента, від старих до нових.
| Поле | Тип |
|---|---|
instrument | str |
connection_id | int |
data | list[Trade] |
Ticker
24-годинний тікер. Поля, яких біржа не повідомляє, дорівнюють None.
best_bid і best_ask тут — ціни з потоку тікера, а не
рівні стакана; верх стакана — у Snapshot.
| Поле | Тип |
|---|---|
price | Decimal |
change_24h_pct | Decimal | None |
volume_24h | Decimal | None |
high_24h | Decimal | None |
low_24h | Decimal | None |
best_bid | Decimal | None |
best_ask | Decimal | None |
ts | int |
MarkPrice
Кадр стріму mark_price: ціна маркування та її час.
| Поле | Тип |
|---|---|
mark_price | Decimal |
ts | int |
Snapshot
GET /v1/market/snapshot: найсвіжіше, що хаб знає про один інструмент.
best_bid і best_ask — пари Level зі стакана хабу,
None, поки не надійшов знімок стакана. Інші поля —
None, поки не надійшли їхні дані.
| Поле | Тип |
|---|---|
instrument | str |
connection_id | int |
ts | int |
best_bid | Level | None |
best_ask | Level | None |
last_trade | Trade | None |
mark_price | Decimal | None |
ticker | Ticker | None |
BookTop
Верх стакана: біди від найкращої ціни вниз, аски від найкращої ціни вгору.
Це data кадру стріму book.top; OrderBook
додає інструмент і підключення для HTTP-операції.
| Поле | Тип |
|---|---|
ts | int |
depth | int |
bids | list[Level] |
asks | list[Level] |
OrderBook
class OrderBook(BookTop)GET /v1/market/orderbook: верх стакана одного інструмента.
| Поле | Тип |
|---|---|
instrument | str |
connection_id | int |
ClusterLevel
Обсяг, проторгований за однією ціною всередині бакета кластера.
| Поле | Тип |
|---|---|
price | Decimal |
volume | Decimal |
buy_volume | Decimal |
sell_volume | Decimal |
buy_trades | int |
sell_trades | int |
Cluster
Один бакет кластера: підсумки, діапазон цін і всі рівні від найнижчої ціни вгору.
last_trade_ts дорівнює 0 для бакета, засіяного з історії без
часу угоди. vwap, min_price і max_price дорівнюють None для
бакета без угод.
| Поле | Тип |
|---|---|
interval | str |
ts | int |
end_ts | int |
volume | Decimal |
buy_volume | Decimal |
sell_volume | Decimal |
trades | int |
vwap | Decimal | None |
min_price | Decimal | None |
max_price | Decimal | None |
completed | bool |
last_trade_ts | int |
levels | list[ClusterLevel] |
Clusters
GET /v1/market/clusters: останні бакети одного інструмента, від старих до нових.
interval — той, що вибрано для інструмента в терміналі.
| Поле | Тип |
|---|---|
instrument | str |
connection_id | int |
interval | str |
ts | int |
data | list[Cluster] |
Order
Відкрита заявка підключення: pending, open або partially_filled.
key — ключ заявки в терміналі (t-...), exchange_id — id
біржі; кожен із них None, поки невідомий. size, filled і
remaining — у базовій монеті; notional — сума в котируванні, яку
ввів трейдер, None для заявки зі знімка
біржі. Ключ JSON type тут — order_type.
| Поле | Тип |
|---|---|
key | str | None |
exchange_id | str | None |
instrument | str |
side | str |
order_type | str |
price | Decimal | None |
size | Decimal |
filled | Decimal |
remaining | Decimal |
notional | Decimal | None |
status | str |
created_ts | int |
TriggerOrder
Тригерна заявка: stop_loss, take_profit або stop (trigger_type).
rule — price_above_or_equal або price_below_or_equal;
status — open, finished, inactive або invalid.
size, notional, order_type, client_id і created_ts
дорівнюють None, якщо біржа їх не повідомила.
| Поле | Тип |
|---|---|
id | str |
instrument | str |
trigger_type | str |
trigger_price | Decimal |
rule | str |
size | Decimal | None |
notional | Decimal | None |
status | str |
order_type | str | None |
client_id | str | None |
created_ts | int | None |
AccountOrders
GET /v1/account/orders: відкриті заявки й тригерні заявки одного підключення.
| Поле | Тип |
|---|---|
connection_id | int |
data | list[Order] |
triggers | list[TriggerOrder] |
Position
Відкрита позиція. size — у базовій монеті (на MOEX — у лотах, по lot_size базових одиниць у кожному).
notional — у котируванні; unrealized_pnl і mark_price —
власні значення термінала (найкращий bid для лонга, найкращий ask для шорта), None
до першого тика стакана.
| Поле | Тип |
|---|---|
instrument | str |
side | str |
size | Decimal |
lot_size | Decimal | None |
entry_price | Decimal | None |
notional | Decimal | None |
unrealized_pnl | Decimal | None |
mark_price | Decimal | None |
AccountPositions
GET /v1/account/positions: відкриті позиції одного підключення.
| Поле | Тип |
|---|---|
connection_id | int |
data | list[Position] |
Balance
Останній баланс однієї валюти.
available і locked дорівнюють None, якщо біржа їх не
повідомляє; ts — час біржі, де він є, інакше час
отримання.
| Поле | Тип |
|---|---|
currency | str |
total | Decimal |
available | Decimal | None |
locked | Decimal | None |
ts | int |
AccountBalances
GET /v1/account/balances: за кожною валютою — останнє значення відтоді, як увімкнено API.
| Поле | Тип |
|---|---|
connection_id | int |
data | list[Balance] |
Fill
Одне виконання. position_side — long/short на біржах із режимом хеджування, інакше None.
| Поле | Тип |
|---|---|
trade_id | str | None |
order_id | str | None |
instrument | str |
side | str |
price | Decimal |
qty | Decimal |
fee | Decimal | None |
fee_currency | str | None |
position_side | str | None |
ts | int |
AccountFills
GET /v1/account/fills: останні виконання підключення, від старих до нових.
| Поле | Тип |
|---|---|
connection_id | int |
data | list[Fill] |
Accepted
Торгову команду прийнято терміналом, але ще не біржею.
operation_id називає операцію у файлі операцій термінала;
key — ключ заявки (t-...), під яким заявка з’явиться
в account.orders, None для скасування. Підтвердження,
виконання або відмова біржі надходять через стрім.
| Поле | Тип |
|---|---|
accepted | bool |
operation_id | str |
key | str | None |
connection_id | int |
instrument | str |
Leverage
GET /v1/account/leverage: плече і режим маржі одного ф’ючерсного інструмента.
Читається з кешу термінала, який наповнюють вибір інструмента у вікні
та set_leverage; інструмент,
якого термінал ще не торкався, — ApiError not_active. mode
— режим плеча термінала (manual, max, smart), а не
біржі; margin_mode — cross або isolated.
| Поле | Тип |
|---|---|
connection_id | int |
instrument | str |
leverage | int |
max_leverage | int |
mode | str |
margin_mode | str |
CellPosition
Комірка сітки вкладки: колонка зліва направо, рядок згори вниз, комірка в рядку.
| Поле | Тип |
|---|---|
column | int |
row | int |
cell | int |
Stack
Стек — стакан зі стрічкою угод і кластерами — усередині вкладки.
widget_id глобальний для цього запуску термінала. instrument і
connection_id дорівнюють None, поки стек empty; position
дорівнює None для стека, схованого в групі стеків.
| Поле | Тип |
|---|---|
widget_id | int |
instrument | str | None |
connection_id | int | None |
empty | bool |
frozen | bool |
position | CellPosition | None |
Chart
Графік усередині вкладки.
owner_widget_id — стек, за яким іде графік, None для самостійного.
| Поле | Тип |
|---|---|
widget_id | int |
instrument | str | None |
connection_id | int | None |
interval | str |
owner_widget_id | int | None |
position | CellPosition | None |
Tab
Вкладка вікна: id нумерується в кожному вікні з 1, рівно одна вкладка active.
| Поле | Тип |
|---|---|
id | int |
name | str |
active | bool |
stacks | list[Stack] |
charts | list[Chart] |
Window
Вікно термінала; main не можна закрити через API.
chart_window — відірване вікно графіків. Геометрія — у логічних
пікселях екрана; monitor — назва монітора в ОС або None.
| Поле | Тип |
|---|---|
id | int |
main | bool |
chart_window | bool |
focused | bool |
x | int |
y | int |
width | int |
height | int |
maximized | bool |
monitor | str | None |
tabs | list[Tab] |
Workspace
GET /v1/workspace і топік стріму workspace: усі вікна за зростанням id.
Ідентифікатори — внутрішні номери цього запуску термінала: не зберігайте їх між перезапусками, читайте заново.
| Поле | Тип |
|---|---|
windows | list[Window] |
TabItem
Одна колонка вкладки, відкритої або розширеної через API.
Стек instrument на connection_id (коли він None, його
вибирає загальне правило) і, з chart, графік над ним.
| Поле | Тип |
|---|---|
instrument | str |
connection_id | int | None |
chart | bool |
WorkspaceOutcome
Що зробило вікно за командою робочого простору.
Для відкриття: вікно, нова вкладка та її stacks і
charts у порядку колонок; для колонок, доданих до вкладки, — лише додані
віджети. Для закриття й активації: зачеплені id, решта —
None або порожні.
| Поле | Тип |
|---|---|
window_id | int | None |
tab_id | int | None |
stacks | list[int] |
charts | list[int] |
SettingRow
Один рядок таблиці налаштувань термінала, як він зберігається.
scope — global або order_book; scope_id — default,
адреса інструмента або None для гарячих клавіш; connection_id —
підключення-власник або None. value — розібраний JSON (числа як
записано). writable каже, чи приймає update_settings
цей ключ; у кадрі стріму settings воно None: такого прапорця кадр
не несе.
| Поле | Тип |
|---|---|
scope | str |
scope_id | str | None |
connection_id | int | None |
category | str |
key | str |
value | Any |
writable | bool | None |
Settings
GET /v1/settings: рядки так, як вони зберігаються, без драбини типових значень.
| Поле | Тип |
|---|---|
data | list[SettingRow] |
OrderbookSetting
Одне налаштування стека з рівнем, з якого його зведено.
resolved_from — instrument (рядок пари на підключенні),
connection (типове значення підключення), app_instrument (рядок пари
без підключення) або global.
| Поле | Тип |
|---|---|
value | Any |
resolved_from | str |
writable | bool |
OrderbookSettings
GET /v1/settings/orderbook: налаштування стека одного інструмента такими, як їх бачить його стек.
| Поле | Тип |
|---|---|
connection_id | int |
instrument | str |
data | dict[str, dict[str, OrderbookSetting]] |
SettingChange
Одна зміна для update_settings.
instrument адресує рядок пари (область order_book);
connection_id зі scope="order_book" і без інструмента адресує
типове значення підключення; без обох — глобальне типове значення. Глобальні
налаштування не приймають підключення.
| Поле | Тип |
|---|---|
category | str |
key | str |
value | Any |
scope | str | None |
instrument | str | None |
connection_id | int | None |
SettingsApplied
PATCH /v1/settings: скільки змін застосовано (усі, інакше виклик викинув помилку).
| Поле | Тип |
|---|---|
applied | int |
OrdersUpdate
Кадр account.orders: заявки й тригери одного інструмента після зміни.
| Поле | Тип |
|---|---|
instrument | str |
orders | list[Order] |
triggers | list[TriggerOrder] |
PositionUpdate
Кадр account.positions: позиція одного інструмента; закриття — position=None.
| Поле | Тип |
|---|---|
instrument | str |
position | Position | None |
Subscribed
Відповідь на subscribe: id підписки й підключення, вибране для неї.
connection_id дорівнює None для workspace і settings: у них немає підключення.
| Поле | Тип |
|---|---|
sub | str |
connection_id | int | None |
request_id | str | None |
Unsubscribed
Відповідь на unsubscribe.
| Поле | Тип |
|---|---|
sub | str |
request_id | str | None |
Event
Кадр даних підписки.
seq для trades зростає на одиницю; для топіків, де надсилається лише
останнє значення, пропуски в нумерації — це нормально. data типізується за топіком, див.
parse_event_data.
| Поле | Тип |
|---|---|
sub | str |
seq | int |
ts | int |
data | Any |
Gap
Події from_seq..to_seq підписки trades втрачено.
Надходить перед першим кадром після втрати; угоди можна перечитати
через Terminal.trades(..., since_ts=...).
| Поле | Тип |
|---|---|
sub | str |
from_seq | int |
to_seq | int |
reason | str |
SubscriptionError
Сервер зняв підписку: біржа відмовила або на пару не вдалося підписатися.
Новий subscribe запускає її знову.
| Поле | Тип |
|---|---|
sub | str |
code | str |
message | str |
Зібрано з коду spectre-terminal, коміт 2d1c324.