81 lines
3.0 KiB
Python
Executable File
81 lines
3.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
||
"""
|
||
测试合约市场数据获取
|
||
"""
|
||
import sys
|
||
import os
|
||
|
||
# 确保路径正确
|
||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||
project_root = os.path.dirname(script_dir)
|
||
backend_dir = os.path.join(project_root, 'backend')
|
||
sys.path.insert(0, backend_dir)
|
||
|
||
from app.services.binance_service import binance_service
|
||
|
||
|
||
def main():
|
||
print("=" * 60)
|
||
print("📊 测试 Binance 合约市场数据获取")
|
||
print("=" * 60)
|
||
|
||
symbols = ['BTCUSDT', 'ETHUSDT']
|
||
|
||
for symbol in symbols:
|
||
print(f"\n{'='*60}")
|
||
print(f"📈 {symbol} 合约市场数据")
|
||
print(f"{'='*60}")
|
||
|
||
# 1. 获取资金费率
|
||
print(f"\n🔍 获取资金费率...")
|
||
funding_rate = binance_service.get_funding_rate(symbol)
|
||
if funding_rate:
|
||
print(f"✅ 资金费率: {funding_rate['funding_rate_percent']:.4f}%")
|
||
print(f" 市场情绪: {funding_rate['sentiment']}")
|
||
print(f" 标记价格: ${funding_rate['mark_price']:,.2f}")
|
||
print(f" 指数价格: ${funding_rate['index_price']:,.2f}")
|
||
|
||
# 2. 获取持仓量
|
||
print(f"\n🔍 获取持仓量...")
|
||
open_interest = binance_service.get_open_interest(symbol)
|
||
if open_interest:
|
||
print(f"✅ 持仓量: {open_interest['open_interest']:,.0f} 张")
|
||
print(f" 持仓金额: ${open_interest['open_interest_value']:,.0f}")
|
||
|
||
# 3. 获取历史持仓量
|
||
print(f"\n🔍 获取历史持仓量(计算24h变化)...")
|
||
hist_oi = binance_service.get_open_interest_hist(symbol, period='1h', limit=24)
|
||
if hist_oi and len(hist_oi) >= 2:
|
||
oi_now = float(hist_oi[0].get('sumOpenInterest', 0))
|
||
oi_24h = float(hist_oi[-1].get('sumOpenInterest', 0))
|
||
oi_change = oi_now - oi_24h
|
||
oi_change_pct = (oi_change / oi_24h * 100) if oi_24h > 0 else 0
|
||
print(f"✅ 24h前: {oi_24h:,.0f} 张")
|
||
print(f" 当前: {oi_now:,.0f} 张")
|
||
print(f" 变化: {oi_change:+,.0f} 张 ({oi_change_pct:+.2f}%)")
|
||
|
||
# 4. 获取综合数据
|
||
print(f"\n🔍 获取综合合约数据...")
|
||
market_data = binance_service.get_futures_market_data(symbol)
|
||
if market_data:
|
||
print(f"✅ 综合数据获取成功")
|
||
print(f" 资金费率: {market_data['funding_rate']['funding_rate_percent']:.4f}%")
|
||
print(f" 持仓24h变化: {market_data['oi_change_percent_24h']:+.2f}%")
|
||
print(f" 溢价率: {market_data['premium_rate']:+.2f}%")
|
||
print(f" 市场情绪: {market_data['market_sentiment']}")
|
||
|
||
# 5. 格式化给 LLM 的数据
|
||
print(f"\n🤖 格式化给 LLM 的数据:")
|
||
print(f"{'─'*60}")
|
||
if market_data:
|
||
formatted = binance_service.format_futures_data_for_llm(symbol, market_data)
|
||
print(formatted)
|
||
|
||
print("\n" + "=" * 60)
|
||
print("✅ 测试完成")
|
||
print("=" * 60)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|