Робочий простір
Читайте вікна, вкладки, стеки й графіки термінала, відкривайте, змінюйте або закривайте їх.
Для читання розкладки потрібне право workspace:read. Для зміни —
workspace:write. Стек — це стакан зі своєю стрічкою угод і кластерами.
Прочитати розкладку
workspace = terminal.workspace()
for window in workspace.windows:
for tab in window.tabs:
print(window.id, tab.id, tab.name, [stack.instrument for stack in tab.stacks])Відповідь перелічує кожне вікно з його вкладками і кожну вкладку з її стеками та графіками. Усі поля описано в довіднику.
Id дійсні протягом одного запуску
Вікно і вкладка мають id, стек і графік — widget_id. Вкладки
нумеруються всередині кожного вікна, тож вкладку адресують вікном і
вкладкою разом.
Усі id дійсні лише для поточного запуску термінала. Після перезапуску прочитайте розкладку знову.
Відкрити стек
opened = terminal.open_stack("binance:futures:BTCUSDT", chart=True)
print(opened.window_id, opened.tab_id, opened.stacks, opened.charts)| Аргумент | Значення |
|---|---|
chart | true відкриває разом зі стеком графік інструмента. Типово false. |
target | new_tab, типово, або new_window. |
window_id | Вікно для нової вкладки. Типово — вікно у фокусі. |
activate | false відкриває вкладку у фоні. Нове вікно завжди отримує фокус. |
Відповідь називає вікно, вкладку та id віджетів того, що відкрито. Кожна команда на цій сторінці відповідає в такій формі.
Відкрити вкладку з кількома інструментами
from spectre_terminal import TabItem
opened = terminal.open_tab(
[TabItem("binance:futures:BTCUSDT", chart=True), "binance:futures:ETHUSDT"],
name="Majors",
)
print(opened.tab_id, opened.stacks, opened.charts)Кожен елемент стає колонкою, у порядку списку. Список містить від 1 до
50 елементів, а name — до 64 символів. Якщо один елемент відхилено, не
відкривається нічого.
target, window_id і activate працюють так само, як у розділі
Відкрити стек.
Додати стеки у вкладку
added = terminal.add_stacks(1, 2, ["binance:futures:SOLUSDT"])
print(added.stacks, added.charts)Перші два аргументи — вікно і вкладка. Нові колонки стають після останньої. Відповідь перелічує лише додані віджети.
Відкрити монету на кожній біржі
opened = terminal.open_multiview("BTC", target="new_window")
print(opened.window_id, opened.stacks, opened.charts)Це кнопка «Мультив’ю» термінала: монета відкривається на кожній біржі,
увімкненій у налаштуванні «Розкладка бірж». Передайте монету, BTC, або
пару, BTC/USDT. Без target термінал діє за власним налаштуванням
мультив’ю.
Змінити інструмент стека
terminal.set_stack_instrument(14, "binance:futures:ETHUSDT")Перший аргумент — widget_id стека. Його графіки теж перемикаються.
Закрити стек, вкладку або вікно
terminal.close_stack(14)
terminal.close_tab(1, 2)
terminal.close_window(2)Підтвердження немає. Головне вікно, позначене main у розкладці, і
єдину вкладку вікна закрити не можна: виклик відповідає
400 invalid_request.
Вивести вкладку або вікно на передній план
terminal.activate_tab(1, 2)
terminal.activate_window(2)Перший виклик вибирає вкладку, не змінюючи фокус вікна. Другий виводить вікно на передній план.
Стежити за змінами
import asyncio
from spectre_terminal import Event
async def main():
async with terminal.stream() as stream:
await stream.subscribe("workspace")
async for frame in stream:
if isinstance(frame, Event) and frame.topic == "workspace":
for window in frame.data.windows:
print(window.id, [tab.name for tab in window.tabs])
asyncio.run(main())Перший кадр — це поточна розкладка. Далі кадр з усією розкладкою надходить на кожну зміну. Докладніше: Стрімінг.
Коли команда не вдається
| Що відбувається | Що ви отримаєте | Що робити |
|---|---|---|
| Інструмента немає в довіднику або id належить графіку | 400 invalid_request | Виправити запит |
| Такого вікна, вкладки чи стека немає | 404 not_found | Прочитати розкладку знову |
| Жодна ввімкнена біржа не має цієї монети | 404 not_found | Перевірити монету |
| Понад 5 команд робочого простору за секунду на весь термінал | 429 rate_limited | Сповільнитися, див. Ліміти |
| Вікно не відповіло за 2 секунди | 503 unavailable | Перевірити розкладку, потім повторити виклик |
Що недоступно
API не переносить стеки між вкладками, не змінює ширину колонок і не керує іншими вікнами, як-от скринером.