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: 리스너 상태와 시장 데이터 허브의 카운터입니다.
| 필드 | 타입 |
|---|---|
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
호가창 상단: 매수 호가는 최우선 가격부터 아래로, 매도 호가는 최우선 가격부터 위로.
이것은 book.top 스트림 프레임의 data입니다. 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에서는 랏 단위이며, 1랏은 기준 단위 lot_size개).
notional은 호가 통화 단위입니다. unrealized_pnl과 mark_price는
터미널이 직접 계산한 값(롱이면 최우선 매수 호가, 숏이면 최우선 매도
호가)이며, 호가창의 첫 틱이 올 때까지 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는 터미널의 거래 작업 로그에 기록되는 작업의 id입니다.
key는 주문이 account.orders에 나타날 때의 주문 키(t-...)이며,
취소의 경우 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는 스택이 empty인 동안 None입니다. 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는 OS의 모니터 이름 또는 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로 열거나 확장한 탭의 열 하나입니다.
connection_id의 instrument 스택(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)을 가리킵니다.
scope="order_book"에 종목 없이 connection_id만 있으면 연결의
기본값을, 둘 다 없으면 전역 기본값을 가리킵니다. 전역 설정은 연결을
받지 않습니다.
| 필드 | 타입 |
|---|---|
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는 workspace와 settings에서 None입니다. 둘 다 연결이 없습니다.
| 필드 | 타입 |
|---|---|
sub | str |
connection_id | int | None |
request_id | str | None |
Unsubscribed
unsubscribe에 대한 응답입니다.
| 필드 | 타입 |
|---|---|
sub | str |
request_id | str | None |
Event
구독의 데이터 프레임입니다.
seq는 trades에서 1씩 증가합니다. 최신 상태만 전송하는 토픽에서는
번호가 건너뛰는 것이 정상입니다. data의 타입은 토픽에 따라 다르며,
parse_event_data를 참고하십시오.
| 필드 | 타입 |
|---|---|
sub | str |
seq | int |
ts | int |
data | Any |
Gap
trades 구독의 이벤트 from_seq..to_seq가 손실되었습니다.
손실 뒤 첫 프레임 앞에 도착합니다. 체결은
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에서 생성되었습니다.