模型,评分,修复网格策略市场状态监听
This commit is contained in:
+19
-3
@@ -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):
|
||||
"""停止市场数据订阅"""
|
||||
|
||||
Reference in New Issue
Block a user