diff --git a/core/biz/__pycache__/market_monitor.cpython-312.pyc b/core/biz/__pycache__/market_monitor.cpython-312.pyc index 93d3cf5..00e9a93 100644 Binary files a/core/biz/__pycache__/market_monitor.cpython-312.pyc and b/core/biz/__pycache__/market_monitor.cpython-312.pyc differ diff --git a/core/biz/market_monitor.py b/core/biz/market_monitor.py index cbc5942..5ad69e3 100644 --- a/core/biz/market_monitor.py +++ b/core/biz/market_monitor.py @@ -55,10 +55,13 @@ def create_metrics_report( f"symbol: {symbol} {bar} window_size: {window_size} date_time: {date_time} 下跌,不发送相关数据" ) return + volume_ratio = round(float(row["volume_ratio"]), 4) + change = "涨" if pct_chg > 0 else "跌" + brief = f"{symbol} {bar} 量率: {volume_ratio} {change}: {pct_chg}%" if huge_volume == 1: - contents.append(f"## 交易巨量报告") + contents.append(f"## {brief} 交易巨量报告") else: - contents.append(f"## 交易量报告") + contents.append(f"## {brief} 交易量报告") if now_datetime_str is not None: contents.append(f"## {symbol} {bar} 滑动窗口: {window_size} 最新数据时间: {now_datetime_str}") else: @@ -72,7 +75,6 @@ def create_metrics_report( volume = round(float(row["volume"]), 4) volCcy = round(float(row["volCcy"]), 4) volCCyQuote = round(float(row["volCCyQuote"]), 4) - volume_ratio = round(float(row["volume_ratio"]), 4) spike_intensity = round(float(row["spike_intensity"]), 4) close_80_high = int(row["close_80_high"]) close_20_low = int(row["close_20_low"]) diff --git a/market_monitor_main.py b/market_monitor_main.py index 4ba0f20..36fc570 100644 --- a/market_monitor_main.py +++ b/market_monitor_main.py @@ -66,6 +66,7 @@ class MarketMonitorMain: symbol: str, bar: str, only_output_huge_volume: bool = False, + only_output_over_mean_volume: bool = False, only_output_rise: bool = False, ): """ @@ -135,6 +136,16 @@ class MarketMonitorMain: if only_output_huge_volume: if realtime_row["huge_volume"] == 1: logging.info(f"监控到巨量: {symbol} {bar} 窗口大小: {self.window_size}") + if only_output_over_mean_volume: + # 获得huge_volume==1时的volume_ratio的均量 + mean_huge_volume_ratio = real_time_data[real_time_data["huge_volume"] == 1]["volume_ratio"].mean() + if realtime_row["volume_ratio"] >= mean_huge_volume_ratio: + logging.info(f"监控到巨量且超过均量: {symbol} {bar} 窗口大小: {self.window_size}") + else: + logging.info( + f"监控到巨量但未超过均量: {symbol} {bar} 窗口大小: {self.window_size},退出本次监控" + ) + return else: logging.info( f"监控到非巨量: {symbol} {bar} 窗口大小: {self.window_size},退出本次监控" @@ -233,6 +244,7 @@ class MarketMonitorMain: def batch_monitor_realtime_market( self, only_output_huge_volume: bool = True, + only_output_over_mean_volume: bool = True, only_output_rise: bool = True, ): for symbol in self.market_data_main.symbols: @@ -245,6 +257,7 @@ class MarketMonitorMain: symbol, bar, only_output_huge_volume, + only_output_over_mean_volume, only_output_rise, ) except Exception as e: diff --git a/monitor_schedule.py b/monitor_schedule.py index 8c6a90d..f37bcaa 100644 --- a/monitor_schedule.py +++ b/monitor_schedule.py @@ -11,6 +11,7 @@ def monitor_schedule(): while True: # 每分钟监控一次 market_monitor_main.batch_monitor_realtime_market( only_output_huge_volume=True, + only_output_over_mean_volume=True, only_output_rise=False, ) logging.info("本次循环监控结束,等待30秒")