#!/usr/bin/env python3 """ 测试 Bitget 集成功能 验证切换到 Bitget 后的各项功能是否正常 """ import sys import os from pathlib import Path # 添加项目路径 project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root / "backend")) from app.services.bitget_service import bitget_service def test_basic_functions(): """测试基本功能""" print("\n" + "=" * 80) print("测试 Bitget 基本功能") print("=" * 80) symbol = "BTCUSDT" # 1. 测试获取当前价格 print(f"\n1. 获取当前价格 ({symbol})...") price = bitget_service.get_current_price(symbol) if price: print(f" ✅ 当前价格: ${price:,.2f}") else: print(f" ❌ 获取失败") return False # 2. 测试获取 K线数据 print(f"\n2. 获取 K线数据 ({symbol} 5m)...") klines = bitget_service.get_klines(symbol, '5m', limit=10) if not klines.empty: print(f" ✅ 获取 {len(klines)} 根 K线") print(f" 最新: 开${klines.iloc[-1]['open']:,.2f} " f"高${klines.iloc[-1]['high']:,.2f} " f"低${klines.iloc[-1]['low']:,.2f} " f"收${klines.iloc[-1]['close']:,.2f}") else: print(f" ❌ 获取失败") return False # 3. 测试获取多周期数据 print(f"\n3. 获取多周期数据 ({symbol})...") multi_data = bitget_service.get_multi_timeframe_data(symbol) if multi_data: print(f" ✅ 获取成功") for interval, df in multi_data.items(): if not df.empty: print(f" {interval}: {len(df)}根, 最新价 ${df.iloc[-1]['close']:,.2f}") else: print(f" ❌ 获取失败") return False # 4. 测试获取资金费率 print(f"\n4. 获取资金费率 ({symbol})...") funding = bitget_service.get_funding_rate(symbol) if funding: print(f" ✅ 资金费率: {funding['funding_rate_percent']:.4f}%") print(f" 标记价格: ${funding['mark_price']:,.2f}") print(f" 指数价格: ${funding['index_price']:,.2f}") print(f" 市场情绪: {funding['sentiment']}") else: print(f" ❌ 获取失败") return False # 5. 测试获取合约市场数据 print(f"\n5. 获取合约市场数据 ({symbol})...") futures_data = bitget_service.get_futures_market_data(symbol) if futures_data: print(f" ✅ 获取成功") print(f" 溢价率: {futures_data['premium_rate']:.2f}%") print(f" 市场情绪: {futures_data['market_sentiment']}") else: print(f" ❌ 获取失败") return False # 6. 测试格式化数据供 LLM print(f"\n6. 格式化合约数据供 LLM...") formatted = bitget_service.format_futures_data_for_llm(symbol, futures_data) if formatted: print(f" ✅ 格式化成功") print(f" 预览:\n{formatted[:200]}...") else: print(f" ❌ 格式化失败") return False return True def test_multiple_symbols(): """测试多个交易对""" print("\n" + "=" * 80) print("测试多个交易对") print("=" * 80) symbols = ["BTCUSDT", "ETHUSDT", "SOLUSDT"] for symbol in symbols: print(f"\n{symbol}:") price = bitget_service.get_current_price(symbol) if price: print(f" ✅ ${price:,.2f}") else: print(f" ❌ 获取失败") def main(): """主函数""" print("\n" + "🚀" * 40) print("\nBitget 集成功能测试") print(f"测试时间: {pd.Timestamp.now()}") try: # 基本功能测试 if not test_basic_functions(): print("\n❌ 基本功能测试失败") return # 多交易对测试 test_multiple_symbols() print("\n" + "=" * 80) print(" ✅ 所有测试通过!") print("=" * 80) print("\nBitget 已成功集成,可以正常使用!") print("\n切换总结:") print(" ✅ crypto_agent.py -> 使用 Bitget") print(" ✅ llm_signal_analyzer.py -> 使用 Bitget") print(" ✅ paper_trading_service.py -> 使用 Bitget") print(" ✅ main.py -> 使用 Bitget") print(" ✅ api/paper_trading.py -> 使用 Bitget") except Exception as e: print(f"\n❌ 测试出错: {e}") import traceback traceback.print_exc() if __name__ == "__main__": import pandas as pd main()