#!/usr/bin/env python3 """ 缠论分析系统快速启动脚本 用于快速演示系统功能 """ import sys import os import pandas as pd import numpy as np from datetime import datetime, timedelta # 添加项目根目录到路径 sys.path.append(os.path.dirname(os.path.abspath(__file__))) from data.data_fetcher import DataFetcher from data.data_processor import DataProcessor from core.chan_analyzer import ChanAnalyzer def quick_demo(): """快速演示""" print("=" * 60) print("缠论分析系统快速演示") print("=" * 60) try: print("正在初始化组件...") # 初始化数据获取器 data_fetcher = DataFetcher() data_processor = DataProcessor() print("正在获取BTC/USDT 1小时数据...") # 获取数据 klines = data_fetcher.fetch_klines('BTC/USDT', '1h', 200) if klines.empty: print("❌ 数据获取失败,可能是网络问题") return False print(f"✅ 成功获取 {len(klines)} 条K线数据") print(f"数据时间范围: {klines.index[0]} 至 {klines.index[-1]}") # 数据处理 print("\n正在进行数据清理和验证...") klines = data_processor.clean_klines(klines) # 缠论分析 print("正在进行缠论分析...") analyzer = ChanAnalyzer(klines) summary = analyzer.run_full_analysis(fractal_strength=1) # 显示结果 print("\n" + "=" * 60) print("缠论分析结果") print("=" * 60) # 基础统计 data_info = summary['data_info'] print(f"\n📊 数据统计:") print(f" 原始K线: {data_info['original_klines']} 条") print(f" 处理后: {data_info['processed_klines']} 条") # 分型统计 fractal_info = summary['fractal_info'] print(f"\n🔺 分型统计:") print(f" 总计: {fractal_info['total']} 个") print(f" 顶分型: {fractal_info['top']} 个") print(f" 底分型: {fractal_info['bottom']} 个") # 笔统计 stroke_info = summary['stroke_info'] print(f"\n📏 笔统计:") print(f" 总计: {stroke_info['total']} 个") print(f" 上升笔: {stroke_info['up']} 个") print(f" 下降笔: {stroke_info['down']} 个") # 线段统计 segment_info = summary['segment_info'] print(f"\n📈 线段统计:") print(f" 总计: {segment_info['total']} 个") print(f" 上升线段: {segment_info['up']} 个") print(f" 下降线段: {segment_info['down']} 个") # 中枢统计 cb_info = summary['central_bank_info'] print(f"\n🎯 中枢统计:") print(f" 总计: {cb_info['total']} 个") if cb_info['levels']: for level, count in cb_info['levels'].items(): print(f" {level}: {count} 个") # 买卖点统计 signal_info = summary['trading_signal_info'] print(f"\n💰 买卖点统计:") print(f" 总计: {signal_info['total']} 个") print(f" 买点: {signal_info['buy_points']} 个") print(f" 卖点: {signal_info['sell_points']} 个") # 最新信号 latest_signals = analyzer.get_latest_signals(48) # 最近48小时 if latest_signals: print(f"\n🚨 最近48小时信号 ({len(latest_signals)} 个):") for signal in latest_signals[-5:]: # 最多显示5个 signal_type = "🟢买点" if signal.signal_type == 'buy' else "🔴卖点" class_map = {"first": "一类", "second": "二类", "third": "三类"} class_type = class_map.get(signal.point_class, "未知") time_str = signal.timestamp.strftime('%m-%d %H:%M') print(f" {time_str} | {class_type}{signal_type} | 价格: ${signal.price:,.2f} | 强度: {signal.strength:.3f}") # 当前市场结构 market_structure = analyzer.get_current_market_structure() if market_structure: print(f"\n📊 当前市场结构:") current_price = market_structure.get('current_price', 0) print(f" 当前价格: ${current_price:,.2f}") trend_map = { 'upward': '🟢 上升趋势', 'downward': '🔴 下降趋势', 'sideways': '🟡 震荡趋势', 'unclear': '⚪ 趋势不明' } trend = trend_map.get(market_structure.get('trend'), '未知') print(f" 趋势方向: {trend}") phase_map = { 'consolidation': '📦 盘整阶段', 'trending': '📈 趋势阶段', 'unknown': '❓ 未知阶段' } phase = phase_map.get(market_structure.get('market_phase'), '未知') print(f" 市场阶段: {phase}") # 支撑阻力 sr = market_structure.get('support_resistance', {}) if sr.get('support_levels'): supports = [f"${s:,.2f}" for s in sr['support_levels'][:3]] print(f" 关键支撑: {', '.join(supports)}") if sr.get('resistance_levels'): resistances = [f"${r:,.2f}" for r in sr['resistance_levels'][:3]] print(f" 关键阻力: {', '.join(resistances)}") print("\n" + "=" * 60) print("分析完成!") print("=" * 60) # 启动Web界面提示 print(f"\n💡 想要查看可视化图表?运行以下命令启动Web界面:") print(f" python main.py --mode web") print(f" 然后在浏览器中访问 http://localhost:8050") return True except Exception as e: print(f"\n❌ 演示失败: {e}") print("可能的原因:") print("1. 网络连接问题,无法获取数据") print("2. 缺少必要的依赖包") print("3. 交易所API限制") print("\n解决方案:") print("1. 检查网络连接") print("2. 运行: pip install -r requirements.txt") print("3. 稍后重试") return False def check_dependencies(): """检查依赖包""" required_packages = [ 'ccxt', 'pandas', 'numpy', 'plotly', 'dash' ] missing_packages = [] for package in required_packages: try: __import__(package) except ImportError: missing_packages.append(package) if missing_packages: print("❌ 缺少以下依赖包:") for pkg in missing_packages: print(f" - {pkg}") print("\n请运行以下命令安装:") print("pip install -r requirements.txt") return False return True def main(): """主函数""" print("正在检查依赖包...") if not check_dependencies(): sys.exit(1) print("✅ 依赖包检查通过") if quick_demo(): print("\n🎉 演示成功完成!") sys.exit(0) else: print("\n❌ 演示失败") sys.exit(1) if __name__ == "__main__": main()