feat: 阶段4温区溯源按市场感知——market_config加get_regime_temp(code)(A股行为不变读smoothed顶层,港股读markets.hk),stale_push_wlin/price_monitor信号溯源改用

This commit is contained in:
hmo
2026-08-14 17:56:10 +08:00
parent 0e06a7e0ea
commit 21b16751c5
3 changed files with 47 additions and 12 deletions
+40
View File
@@ -14,6 +14,7 @@ strategy_lab 中的 6 处重复实现。
"""
from datetime import datetime
from pathlib import Path
from mo_models import is_hk_stock
@@ -104,6 +105,45 @@ def is_trading_now(market, dt=None):
return False
def get_regime_temp(code):
"""按标的市场读取温区+温度(信号溯源用,2026-08-14 阶段4)。
A股:smoothed 顶层(get_current_regimeK=5 平滑温区)+ get_market_temp('a')
—— 与既有单市场行为完全一致。
港股:smoothed markets.hkK=5 平滑温区)+ get_market_temp('hk')。
返回 (regime, temp_band),异常时 ("", "")。延迟 import 避免循环依赖。
"""
mkt = market_for_code(code)
regime, temp = "", ""
try:
if mkt == 'hk':
import json as _json
sp = Path(__file__).resolve().parent.parent.parent / "data" / "market_regime_smoothed.json"
if sp.exists():
d = _json.loads(sp.read_text(encoding="utf-8"))
mk = (d.get("markets") or {}).get("hk") or {}
regime = mk.get("current_regime", "")
temp = (mk.get("temp") or {}).get("band", "")
if not regime: # 回退:market_regime 表港股最新温区
import sqlite3 as _sq
from market_regime import DB_PATH as _DB
conn = _sq.connect(str(_DB), timeout=5)
row = conn.execute(
"SELECT regime FROM market_regime WHERE market='hk' ORDER BY date DESC LIMIT 1"
).fetchone()
conn.close()
regime = row[0] if row else ""
else:
from regime_gate import get_current_regime
regime = get_current_regime().get("regime", "")
from temp_band import get_market_temp
temp = get_market_temp(market='a').get("band", "")
except Exception:
pass
return regime, temp
# ── 模块自检 ────────────────────────────────────────────────────────────
if __name__ == '__main__':
+4 -6
View File
@@ -51,15 +51,13 @@ def _is_strategy_active(d_entry):
return True
def _record_signal(code, name, reason, strategy=""):
"""信号溯源:记录到 signal_ledger"""
"""信号溯源:记录到 signal_ledger(温区/温度按标的市场,2026-08-14 阶段4"""
try:
from signal_ledger import record_signal
from regime_gate import get_current_regime
from temp_band import get_market_temp
rg = get_current_regime()
tp = get_market_temp()
from market_config import get_regime_temp
_regime, _temp = get_regime_temp(code)
record_signal(code=code, name=name, strategy=strategy, version=strategy,
regime=rg.get("regime", ""), temp_band=tp.get("band", ""),
regime=_regime, temp_band=_temp,
reason=reason, source_module="price_monitor")
except Exception:
pass
+3 -6
View File
@@ -943,12 +943,9 @@ def main():
regime_now = ""
temp_now = ""
try:
from regime_gate import get_current_regime
_rg = get_current_regime()
regime_now = _rg.get("regime", "")
from temp_band import get_market_temp
_tp = get_market_temp()
temp_now = _tp.get("band", "")
# 2026-08-14 阶段4:温区溯源按标的市场(A股=原行为, 港股=港股温区)
from market_config import get_regime_temp
regime_now, temp_now = get_regime_temp(code)
except Exception:
pass
# 溯源记录 + 共振检测