from cryptoai.api.binance_api import BinanceAPI from cryptoai.utils.config_loader import ConfigLoader import logging from datetime import datetime, timedelta from cryptoai.models.data_processor import DataProcessor from cryptoai.utils.discord_bot import DiscordBot import time import pandas as pd class VolumeGrowupMonitor: """ 成交量增长监控 """ def __init__(self): self.config_loader = ConfigLoader() self.binance_config = self.config_loader.get_binance_config() self.discord_config = self.config_loader.get_discord_config() self.binance_api = BinanceAPI( api_key=self.binance_config['api_key'], api_secret=self.binance_config['api_secret'], test_mode=self.binance_config['test_mode'] ) self.discord_bot = DiscordBot( webhook_url=self.discord_config['volume_growup_webhook_url'] ) def run(self, time_interval: str = "5m"): binance_symbols = self.binance_api.get_all_symbols() # 计算开始时间 start_time = datetime.now() - timedelta(days=1) # 3天前 start_str = start_time.strftime("%Y-%m-%d") # 获取所有symbol的klines 数据 for symbol in binance_symbols: data = self.binance_api.get_historical_klines(symbol, time_interval, start_str) data_processor = DataProcessor() processed_data = data_processor.preprocess_market_data(symbol, data) # 监控交易量增长 self.monitor_volume_growup(processed_data, symbol, time_interval) time.sleep(1) # 监控交易量增长 def monitor_volume_growup(self, processed_data: pd.DataFrame, symbol: str, time_interval: str): # 计算过去 30 根 K 线的平均交易量 average_volume = processed_data['volume'].tail(30).mean() # 用上一根 k 线和过去 30 根 k 线的平均交易量计算增长率 volume_growth = processed_data['volume'].iloc[-2] / average_volume # 计算交易金额 current_amount = processed_data['close'].iloc[-2] * processed_data['volume'].iloc[-2] print(f"{symbol} 过去 30 根 K 线的平均交易量为 {average_volume:.2f},当前交易量为 {processed_data['volume'].iloc[-1]:.2f},增长率为 {volume_growth:.2%}") # 如果增加 10倍以上,则发送消息 if volume_growth >= 10 and current_amount > 1000000: # markdown 格式,带上emoji message = f"""## 🚨 交易量暴涨提醒 - {symbol} **周期**: `{time_interval}` **30根K线平均量**: `{average_volume:.2f}` **当前量**: `{processed_data['volume'].iloc[-2]:.2f}` **当前交易金额**: `{current_amount:.2f} USD` **增长倍数**: **{volume_growth:.2f} 倍** """ self.discord_bot.send_message(message) print(f"发送交易量上涨提醒消息到discord")