stock-ai-agent/scripts/test_bitget_integration.py
2026-02-22 22:16:08 +08:00

148 lines
4.4 KiB
Python

#!/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()