#!/usr/bin/env python3 """ K线形态策略快速测试 """ import sys from pathlib import Path # 将src目录添加到Python路径 current_dir = Path(__file__).parent src_dir = current_dir / "src" sys.path.insert(0, str(src_dir)) from src.data.data_fetcher import ADataFetcher from src.utils.notification import NotificationManager from src.strategy.kline_pattern_strategy import KLinePatternStrategy def quick_test(): """快速测试策略功能""" print("🚀 K线形态策略快速测试") print("=" * 50) # 配置 strategy_config = { 'min_entity_ratio': 0.55, 'timeframes': ['daily'], 'scan_stocks_count': 3, # 只测试3只股票 'analysis_days': 30 } notification_config = { 'dingtalk': { 'enabled': False, # 测试时关闭钉钉通知 'webhook_url': '' } } try: # 初始化组件 print("📊 初始化组件...") data_fetcher = ADataFetcher() notification_manager = NotificationManager(notification_config) strategy = KLinePatternStrategy(data_fetcher, notification_manager, strategy_config) # 测试1: 单股分析 print("\n🔍 测试1: 单股K线形态分析") test_stock = "000001.SZ" results = strategy.analyze_stock(test_stock) total_signals = sum(len(signals) for signals in results.values()) print(f"✅ {test_stock} 分析完成: {total_signals} 个信号") # 测试2: 市场扫描 print("\n🌍 测试2: 市场形态扫描") market_results = strategy.scan_market(max_stocks=3) total_stocks_with_signals = len(market_results) total_market_signals = sum( sum(len(signals) for signals in stock_results.values()) for stock_results in market_results.values() ) print(f"✅ 市场扫描完成: {total_stocks_with_signals} 只股票有信号,共 {total_market_signals} 个信号") # 测试3: 通知功能 print("\n📱 测试3: 通知系统") notification_success = notification_manager.send_strategy_signal( stock_code="TEST001", stock_name="测试股票", timeframe="daily", signal_type="快速测试信号", price=12.34, additional_info={ "测试类型": "快速验证", "状态": "正常" } ) print(f"✅ 通知系统测试完成: {'成功' if notification_success else '失败(正常,未配置钉钉)'}") print("\n🎉 所有测试通过!") print("\n📝 使用方法:") print(" python main.py # 启动完整系统") print(" python test_strategy.py # 详细功能测试") print("\n⚙️ 配置钉钉通知:") print(" 1. 在钉钉群中添加自定义机器人") print(" 2. 复制webhook地址到 config/config.yaml") print(" 3. 设置 notification.dingtalk.enabled: true") except Exception as e: print(f"❌ 测试失败: {e}") return False return True if __name__ == "__main__": success = quick_test() sys.exit(0 if success else 1)