mirror of
https://github.com/shy3130/tick-stock-panel.git
synced 2026-11-02 10:26:13 +00:00
四个示例以真实 Token 完整跑通: 01 行情 / 02 写入+读回 / 03 策略清单+回测 / 04 票据+事件流 (种告警实时收到 4 条 alert)。 - 02: 演示行不再把占位值写进 date/name, 按字段名给合理值 - 03: POST /api/backtest/run 依赖 vectorbt (可选 extra), 改走所有安装自带 纯 Polars 引擎的 /api/backtest/strategy/run, 近 90 天单标的控制耗时 - 04: hello 帧打印规整
29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
"""示例 3 — 策略与回测 (scope: read:analysis + run:backtest)。
|
|
|
|
列出策略清单 → 用纯 Polars 引擎跑一次策略回测 (所有安装自带, 无需 vectorbt)
|
|
→ 读关键指标。GET /api/backtest/status 可查历史任务;
|
|
POST /api/backtest/run 是 vectorbt 信号回测, 需 `uv sync --extra backtest`。
|
|
"""
|
|
from datetime import date, timedelta
|
|
|
|
from common import call
|
|
|
|
# 1. 策略清单 (read:analysis)
|
|
strategies = call("GET", "/api/strategies")["strategies"]
|
|
for s in strategies[:5]:
|
|
print(f"策略: {s['id']} {s['name']} [{','.join(s.get('tags', []))}]")
|
|
if not strategies:
|
|
raise SystemExit("(无策略)")
|
|
|
|
# 2. 策略回测 (run:backtest): 第一个策略, 近 90 天, 限定单标的控制耗时
|
|
sid = strategies[0]["id"]
|
|
result = call("POST", "/api/backtest/strategy/run", {
|
|
"strategy_id": sid,
|
|
"symbols": ["600519.SH"],
|
|
"start": (date.today() - timedelta(days=90)).isoformat(),
|
|
"end": date.today().isoformat(),
|
|
})
|
|
print(f"回测完成 ({sid}):", {k: v for k, v in result.items() if k in (
|
|
"total_return", "annual_return", "max_drawdown", "trades", "win_rate", "sharpe",
|
|
)})
|