模型,评分,修复网格策略市场状态监听

This commit is contained in:
2026-06-22 10:48:40 +08:00
parent 2e3202968d
commit f938c453e1
42 changed files with 3803 additions and 108 deletions
+19 -3
View File
@@ -552,16 +552,32 @@ class RealQmtV:
eBus.event_bus.publish(eBus.EventMarketActiveSwitch, True)
eBus.event_bus.publish(eBus.MarketDataUpdate, datas)
def _is_trading_time(self) -> bool:
"""判断当前是否在交易时间内(工作日 09:30-11:30 / 13:00-15:00,北京时间 UTC+8"""
import zoneinfo
beijing_tz = zoneinfo.ZoneInfo("Asia/Shanghai")
now = datetime.datetime.now(beijing_tz)
if now.weekday() >= 5: # 周六、周日
return False
t = now.time()
morning_start = datetime.time(9, 30)
morning_end = datetime.time(11, 30)
afternoon_start = datetime.time(13, 0)
afternoon_end = datetime.time(15, 0)
return (morning_start <= t <= morning_end) or (afternoon_start <= t <= afternoon_end)
def _market_data_watchdog(self):
"""行情活跃监控 — 超过 120 秒无行情则标记市场不活跃"""
"""行情活跃监控 — 超过 120 秒无行情 且 非交易时间 则标记市场不活跃"""
while True:
time.sleep(15)
if self.isMarketActive:
elapsed = time.time() - self.lastMarketDataUpdateTimestamp
if elapsed > 120:
# 非交易时间直接标记休市;交易时间内才用超时判断
if not self._is_trading_time() or elapsed > 120:
self.isMarketActive = False
eBus.event_bus.publish(eBus.EventMarketActiveSwitch, False)
PrintLog(LogLevel.WARNING, f'- [行情] 超过 {elapsed:.0f} 秒无更新,市场标记为不活跃')
if not self._is_trading_time():
PrintLog(LogLevel.INFO, '- [行情] 非交易时间,市场标记为不活跃')
def stopMarketDataSubscription(self):
"""停止市场数据订阅"""