e19bb452f9
Co-authored-by: Cursor <cursoragent@cursor.com>
49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
"""交易所行情适配器协议:策略/撮合只依赖此接口,不直接碰 OKX/币安。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any, Protocol, Sequence, runtime_checkable
|
|
|
|
from .types import BookLevel, MarketSnapshot, OptionPair, Quote
|
|
|
|
|
|
@runtime_checkable
|
|
class ExchangeMarket(Protocol):
|
|
name: str
|
|
|
|
async def start(self) -> None: ...
|
|
|
|
async def stop(self) -> None: ...
|
|
|
|
def list_option_contracts(self, family: str) -> list[dict[str, Any]]:
|
|
"""中性期权合约列表:inst_id/expiry_ymd/strike/side/ct_mult。"""
|
|
...
|
|
|
|
def fetch_index(self, index_id: str) -> float | None: ...
|
|
|
|
def fetch_mark(self, inst_id: str) -> float | None: ...
|
|
|
|
def fetch_book(
|
|
self, inst_id: str, depth: int = 5
|
|
) -> tuple[list[BookLevel], list[BookLevel], int | None]: ...
|
|
|
|
def get_ct_mult(self, option_inst_id: str, family: str, default: float) -> float: ...
|
|
|
|
def set_pair(self, pair: OptionPair | None) -> None: ...
|
|
|
|
def warm_and_subscribe(self, inst_ids: Sequence[str]) -> None:
|
|
"""REST 预热盘口 + 设置 WS 订阅列表。"""
|
|
...
|
|
|
|
async def resubscribe(self, inst_ids: Sequence[str]) -> None: ...
|
|
|
|
def quote(self, inst_id: str) -> Quote | None: ...
|
|
|
|
def snapshot(self, perp_inst_id: str) -> MarketSnapshot: ...
|
|
|
|
def snapshot_dict(self, perp_inst_id: str) -> dict[str, Any]: ...
|
|
|
|
def set_index_px(self, px: float | None) -> None: ...
|
|
|
|
def set_mark_px(self, inst_id: str, mark_px: float | None) -> None: ...
|