설정
터미널과 호가창의 설정을 읽고, 변경하고, 변경을 따라갑니다.
설정을 읽으려면 settings:read 권한이 필요합니다. 변경하려면
settings:write가 필요합니다.
설정 읽기
settings = terminal.settings(category="multiview")
for row in settings.data:
print(row.category, row.key, row.value, row.writable)설정은 category, key, value를 가진 행입니다. writable은 API가 그
설정을 변경할 수 있는지 알려 줍니다. 인자가 없으면 터미널 전체의 설정을
받습니다.
| 인자 | 의미 |
|---|---|
category, key | 이 카테고리나 키의 행만. |
scope | 기본값인 global, 또는 order_book. |
instrument | 이 종목의 호가창에 저장된 행. |
connection_id | 이 연결에 저장된 행. |
호가창의 설정 읽기
book = terminal.orderbook_settings(12, "binance:futures:BTCUSDT")
for category, keys in book.data.items():
for key, setting in keys.items():
print(category, key, setting.value, setting.resolved_from)위의 호출은 저장된 것을 보여 줍니다. 이 호출은 호가창이 최종적으로 갖게
되는 값을 보여 줍니다. 각 설정을 값이 있는 첫 번째 위치에서 가져오며,
resolved_from이 그 위치를 알려 줍니다.
resolved_from | 값이 저장된 위치 |
|---|---|
instrument | 이 연결의 이 종목에 |
connection | 연결의 기본값으로 |
app_instrument | 연결 없이 이 종목에 |
global | 터미널의 기본값으로 |
설정 변경
from spectre_terminal import SettingChange
applied = terminal.update_settings([
SettingChange("multiview", "stack_width_px", 300),
SettingChange("general", "auto_scroll", True, instrument="binance:futures:BTCUSDT", connection_id=12),
])
print(applied.applied)한 번의 호출은 변경을 최대 100개까지 받습니다. 변경이 저장되는 위치는 함께 전달하는 값에 따라 달라집니다.
| 전달하는 값 | 변경이 저장되는 위치 |
|---|---|
instrument | 이 종목의 호가창에 |
scope="order_book"과 connection_id | 연결의 호가창 기본값으로 |
scope="order_book"만 | 터미널의 호가창 기본값으로 |
| 그 밖에 아무것도 없음 | 터미널 전체의 설정으로 |
터미널은 먼저 모든 변경을 자신의 설정 목록과 대조해 검사합니다. 하나라도 거부되면 아무것도 저장되지 않습니다.
그다음 변경이 순서대로 적용됩니다. 하나가 실패하면 호출은 오류와 함께 멈추고, 그 앞의 변경은 적용된 채로 남습니다.
레버리지는 설정으로 변경하지 않습니다. 레버리지 변경을 사용합니다.
테마 또는 단축키 변경
from spectre_terminal import SettingChange
terminal.update_settings([
SettingChange("appearance", "theme", {"stack": "dark"}),
SettingChange("hotkeys_orderbook", "close_position", {"code": "KeyX", "modifiers": []}),
])테마는 stack, graphic, interface 중 어느 것이든 받습니다. 뒤의 둘은
light 또는 dark만 받습니다.
단축키는 code와 modifiers, 또는 null을 받습니다. 다른 동작이 쓰고 있는
조합은 거부됩니다.
변경 따라가기
import asyncio
from spectre_terminal import Event
async def main():
async with terminal.stream() as stream:
await stream.subscribe("settings")
async for frame in stream:
if isinstance(frame, Event) and frame.topic == "settings":
print(frame.data.scope, frame.data.category, frame.data.key, frame.data.value)
asyncio.run(main())프레임은 누가 저장했든 저장된 행마다 옵니다. 구독은 시작 상태를 보내지
않으므로, 먼저 settings()로 값을 읽습니다. 자세한 내용은
스트리밍에 있습니다.
호출이 실패할 때
| 상황 | 받는 응답 | 대처 방법 |
|---|---|---|
| 알 수 없는 키, 값의 타입이나 형식이 틀림, 범위를 벗어난 숫자 | 400 invalid_request | 아무것도 저장되지 않았습니다. 메시지가 지목한 변경을 수정합니다 |
| 설정이 레버리지이거나 터미널의 서비스 행임 | 501 unsupported | 재시도해도 달라지지 않습니다 |
| 터미널 전체 기준으로 초당 설정 쓰기가 5회를 넘음 | 429 rate_limited | 속도를 줄입니다. 제한을 참고하십시오 |
| 터미널이 설정을 읽거나 저장하지 못함 | 503 unavailable | 다시 호출합니다 |