服务层
SessionService 管理一个交易 session,MultiSessionService 管理多个 session,并通过 trading.service.api 暴露 REST API。API 可用于查看运行状态、配置、持仓、绩效、交易记录,也可触发启动、停止、调仓、单笔交易等操作。
默认地址
run_trading_app() 的默认监听地址是:
http://127.0.0.1:8000参数含义:
host="127.0.0.1":只允许本机访问,适合本地调试和实盘内网环境。host="0.0.0.0":允许局域网或外部机器访问,需要自行处理网络安全。port=8000:API 端口。端口被占用时可改为8001、8010等。manager=MultiSessionService(...):推荐方式,可同时管理多个模拟盘或实盘 session。session=SessionService(...):单 session 兼容方式。
启动 API
from jh_quant.trading import MultiSessionService, run_trading_app
manager = MultiSessionService()
run_trading_app( manager=manager, host="127.0.0.1", port=8000,)如果需要让同一局域网的 Dashboard 或其他服务访问:
run_trading_app( manager=manager, host="0.0.0.0", port=8000,)CLI 中的端口
run_paper.py 和 run_live.py 会把 CLI 参数传给 bootstrap:
uv run python run_paper.py --host 127.0.0.1 --port 8000uv run python run_live.py --host 127.0.0.1 --port 8000常用参数:
--host:API 监听地址,默认127.0.0.1。--port:API 监听端口,默认8000。--no-api:只构造并运行 session,不启动 REST API。--no-dashboard:启动 API,但不自动打开 trading Dashboard。--dashboard-refresh-ms:Dashboard 刷新间隔,默认15000毫秒。
bootstrap 默认在 API 启动后调用 display_trading() 打开 Dashboard,因此一般不需要再单独启动 Dashboard。
常用接口
GET /healthGET /sessionsPOST /sessionsGET /sessions/{session_id}POST /sessions/{session_id}/startPOST /sessions/{session_id}/stopGET /sessions/{session_id}/runtimeGET /sessions/{session_id}/positionsGET /sessions/{session_id}/performanceGET /sessions/{session_id}/ordersPOST /sessions/{session_id}/rebalance不同接口会返回结构化 JSON,Dashboard 也是通过这些接口读取 session 状态。
手动启动 API + Dashboard
手动模式下可以先启动 API,再打开 Dashboard:
import threading
from jh_quant.dashboard import display_tradingfrom jh_quant.trading import MultiSessionService, run_trading_app
manager = MultiSessionService()
threading.Thread( target=run_trading_app, kwargs={"manager": manager, "host": "127.0.0.1", "port": 8000}, daemon=True,).start()
display_trading(host="127.0.0.1", port=8000, refresh_interval_ms=15000)注意:display_trading() 读取的是 API 地址,不直接读取 Python 对象。若修改 API 端口,Dashboard 的 port 也要同步修改。
安全建议
实盘环境建议:
- 默认使用
127.0.0.1,不要直接暴露到公网。 - 若必须使用
0.0.0.0,在反向代理、VPN、防火墙或内网安全策略中限制访问来源。 - 实盘 broker 参数不要写入公开仓库。
- 先用
auto_start=False创建实盘 session,确认账户、行情、持仓和策略参数后再启动。