본문으로 건너뛰기

워크스페이스

터미널의 창, 탭, 스택, 차트를 읽고, 열고, 변경하고, 닫습니다.

레이아웃을 읽으려면 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입니다.
target기본값인 new_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는 스택을 탭 사이에서 옮기거나, 열 너비를 바꾸거나, 스크리너 같은 다른 창을 제어하지 않습니다.

이 페이지의 내용