Skip to content

服务层

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 端口。端口被占用时可改为 80018010 等。
  • 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.pyrun_live.py 会把 CLI 参数传给 bootstrap:

Terminal window
uv run python run_paper.py --host 127.0.0.1 --port 8000
uv 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 /health
GET /sessions
POST /sessions
GET /sessions/{session_id}
POST /sessions/{session_id}/start
POST /sessions/{session_id}/stop
GET /sessions/{session_id}/runtime
GET /sessions/{session_id}/positions
GET /sessions/{session_id}/performance
GET /sessions/{session_id}/orders
POST /sessions/{session_id}/rebalance

不同接口会返回结构化 JSON,Dashboard 也是通过这些接口读取 session 状态。

手动启动 API + Dashboard

手动模式下可以先启动 API,再打开 Dashboard:

import threading
from jh_quant.dashboard import display_trading
from 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,确认账户、行情、持仓和策略参数后再启动。