Перейти до вмісту

Робочий простір

Читайте вікна, вкладки, стеки й графіки термінала, відкривайте, змінюйте або закривайте їх.

Для читання розкладки потрібне право 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)
АргументЗначення
charttrue відкриває разом зі стеком графік інструмента. Типово false.
targetnew_tab, типово, або new_window.
window_idВікно для нової вкладки. Типово — вікно у фокусі.
activatefalse відкриває вкладку у фоні. Нове вікно завжди отримує фокус.

Відповідь називає вікно, вкладку та 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 не переносить стеки між вкладками, не змінює ширину колонок і не керує іншими вікнами, як-от скринером.

На цій сторінці