hamuna-quant-cli 0.1.16__tar.gz → 0.1.17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/PKG-INFO +1 -1
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/__init__.py +1 -1
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/live/qmt_market.py +15 -2
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli.egg-info/PKG-INFO +1 -1
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/pyproject.toml +1 -1
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/MANIFEST.in +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/README.md +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/README.md +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/__main__.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/_market_fallback.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/_metrics_15.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/_test_akquant_parity.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/akquant_data_adapter.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/akquant_runner.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/akquant_schema_adapter.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/base_strategy.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/cross_sectional_helpers.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/live/__init__.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/live/loader.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/live/qmt_broker.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/live/runner.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/live/server_market_client.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/prebuilt_downloader.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/prebuilt_resolver.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/qmt_translator.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/runtime/__init__.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/runtime/backtest.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/runtime/cache.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/runtime/discipline.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/runtime/http_client.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/runtime/s3client.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/runtime/server_client.py +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/scripts/server.json +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli.egg-info/SOURCES.txt +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli.egg-info/dependency_links.txt +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli.egg-info/entry_points.txt +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli.egg-info/requires.txt +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli.egg-info/top_level.txt +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/setup.cfg +0 -0
- {hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/tests/test_live_safety.py +0 -0
|
@@ -670,12 +670,24 @@ def _to_bar_obj(raw: dict[str, Any], ts_ns: int | None = None):
|
|
|
670
670
|
QMT 日线 bar 的 ``time`` 字段是当日 00:00, 永远早于盘中 session 启动
|
|
671
671
|
时间 → 全被当历史滤掉 → on_bar 永不触发 (Round 18.63 复现根因).
|
|
672
672
|
修: Bar.timestamp 用 wall-clock ns (或调用方传入的单调递增 ts_ns), 让
|
|
673
|
-
引擎当"实时新 bar"接收.
|
|
674
|
-
|
|
673
|
+
引擎当"实时新 bar"接收.
|
|
674
|
+
|
|
675
|
+
Round 18.63.7 补充: 原始 QMT bar 的真实时间戳 ``raw['time']`` (epoch ms)
|
|
676
|
+
和 ``raw['stime']`` (YYYYMMDDhhmmss) 通过 Bar.extra 字段传给策略层 ——
|
|
677
|
+
策略 on_bar 可读 ``bar.extra.get('qmt_time_ms')`` / ``bar.extra.get('qmt_stime')``
|
|
678
|
+
拿到 QMT 真实 bar 时间 (例如 stime='20260903150000' = 15:00 收盘).
|
|
679
|
+
否则拿到的 bar.timestamp 是 CLI wall-clock, 不是 QMT bar 真实时间.
|
|
675
680
|
"""
|
|
676
681
|
import time as _t
|
|
677
682
|
from akquant import Bar
|
|
678
683
|
ts = ts_ns if ts_ns is not None else _t.time_ns()
|
|
684
|
+
# 把 QMT 真实时间塞 extra, Bar 构造时一次性传 (事后不可写, Rust 侧冻结)
|
|
685
|
+
extra = {
|
|
686
|
+
"qmt_time_ms": raw.get("time"),
|
|
687
|
+
"qmt_stime": raw.get("stime"),
|
|
688
|
+
}
|
|
689
|
+
# 过滤 None 字段, 避免发到 Rust 侧 Null
|
|
690
|
+
extra = {k: v for k, v in extra.items() if v is not None}
|
|
679
691
|
return Bar(
|
|
680
692
|
timestamp=ts,
|
|
681
693
|
open=float(raw.get("open") or 0.0),
|
|
@@ -684,6 +696,7 @@ def _to_bar_obj(raw: dict[str, Any], ts_ns: int | None = None):
|
|
|
684
696
|
close=float(raw.get("close") or 0.0),
|
|
685
697
|
volume=float(raw.get("volume") or 0.0),
|
|
686
698
|
symbol=str(raw.get("symbol") or ""),
|
|
699
|
+
extra=extra,
|
|
687
700
|
)
|
|
688
701
|
|
|
689
702
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hamuna-quant-cli"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.17"
|
|
8
8
|
description = "Hamuna A 股回测 + 实盘统一 CLI (akquant 0.3.x). 替代 v1 自建 driver + QMT-style 策略规范."
|
|
9
9
|
readme = "hamuna_quant_cli/README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/_test_akquant_parity.py
RENAMED
|
File without changes
|
{hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/akquant_data_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/akquant_schema_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/cross_sectional_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/live/server_market_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli/runtime/server_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{hamuna_quant_cli-0.1.16 → hamuna_quant_cli-0.1.17}/hamuna_quant_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|