d701d30c04
Co-authored-by: Cursor <cursoragent@cursor.com>
57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
"""服务器上探测币安期权盘口(只读)。用法: python scripts/probe_binance_options.py"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(ROOT / "backend"))
|
|
|
|
import httpx # noqa: E402
|
|
|
|
|
|
def main() -> None:
|
|
proxy = None
|
|
env = ROOT / ".env"
|
|
if env.exists():
|
|
for line in env.read_text(encoding="utf-8").splitlines():
|
|
if line.startswith("BINANCE_HTTP_PROXY=") or line.startswith("OKX_HTTP_PROXY="):
|
|
v = line.split("=", 1)[1].strip().strip('"').strip("'")
|
|
if v:
|
|
proxy = v
|
|
print("proxy=", proxy)
|
|
kw: dict = {"timeout": 30, "trust_env": False}
|
|
if proxy:
|
|
kw["proxy"] = proxy
|
|
with httpx.Client(**kw) as cli:
|
|
info = cli.get("https://eapi.binance.com/eapi/v1/exchangeInfo")
|
|
print("exchangeInfo", info.status_code)
|
|
opts = (info.json() or {}).get("optionSymbols") or []
|
|
near = [
|
|
x
|
|
for x in opts
|
|
if str(x.get("symbol", "")).startswith("ETH-260726-1850")
|
|
or str(x.get("symbol", "")).startswith("ETH-250726-1850")
|
|
]
|
|
print("near1850", [x.get("symbol") for x in near[:6]])
|
|
if not near:
|
|
near = [x for x in opts if str(x.get("symbol", "")).startswith("ETH-") ][:4]
|
|
print("fallback sample", [x.get("symbol") for x in near])
|
|
for row in near[:4]:
|
|
sym = row["symbol"]
|
|
for limit in (5, 10, 20):
|
|
d = cli.get(
|
|
"https://eapi.binance.com/eapi/v1/depth",
|
|
params={"symbol": sym, "limit": limit},
|
|
)
|
|
print(f"depth limit={limit}", sym, d.status_code, d.text[:180])
|
|
t = cli.get("https://eapi.binance.com/eapi/v1/ticker", params={"symbol": sym})
|
|
print("ticker", sym, t.status_code, t.text[:240])
|
|
print("---")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|