Full sync - all projects, memory, configs
This commit is contained in:
101
projects/crypto-signals/scripts/test_coinex_api.py
Normal file
101
projects/crypto-signals/scripts/test_coinex_api.py
Normal file
@ -0,0 +1,101 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script to verify CoinEx API connection and credentials.
|
||||
Run this before using the live trader to ensure everything works.
|
||||
"""
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Add parent to path for imports
|
||||
sys.path.insert(0, str(Path(__file__).parent))
|
||||
|
||||
from coinex_live_trader import CoinExAPI, load_coinex_credentials, setup_logging
|
||||
|
||||
def test_api():
|
||||
"""Test CoinEx API connection and basic functionality."""
|
||||
try:
|
||||
print("=== CoinEx API Test ===")
|
||||
|
||||
# Setup logging directories
|
||||
setup_logging()
|
||||
print("Log directories created")
|
||||
|
||||
# Load credentials
|
||||
print("Loading credentials...")
|
||||
access_id, secret_key = load_coinex_credentials()
|
||||
print(f"Access ID: {access_id[:8]}...")
|
||||
|
||||
# Initialize API
|
||||
api = CoinExAPI(access_id, secret_key)
|
||||
print("API client initialized")
|
||||
|
||||
# Test balance endpoint
|
||||
print("\nTesting futures balance endpoint...")
|
||||
balance = api.get_futures_balance()
|
||||
print(f"Raw balance response: {balance}")
|
||||
|
||||
# Handle different response formats
|
||||
if isinstance(balance, list):
|
||||
if balance:
|
||||
balance_data = balance[0] # Take first item if it's a list
|
||||
# CoinEx uses different field names
|
||||
total_balance = float(balance_data.get("available", 0)) + float(balance_data.get("frozen", 0))
|
||||
available_balance = float(balance_data.get("available", 0))
|
||||
else:
|
||||
print("⚠️ Empty balance list returned")
|
||||
total_balance = available_balance = 0
|
||||
elif isinstance(balance, dict):
|
||||
total_balance = float(balance.get("available", 0)) + float(balance.get("frozen", 0))
|
||||
available_balance = float(balance.get("available", 0))
|
||||
else:
|
||||
print(f"⚠️ Unexpected balance format: {type(balance)}")
|
||||
total_balance = available_balance = 0
|
||||
|
||||
print(f"✅ Balance retrieved successfully")
|
||||
print(f" Total Balance: ${total_balance:.2f}")
|
||||
print(f" Available Balance: ${available_balance:.2f}")
|
||||
|
||||
# Test market data endpoint
|
||||
print("\nTesting market data endpoint...")
|
||||
market_data = api.get_market_price("BTCUSDT")
|
||||
if market_data:
|
||||
print(f"✅ Market data retrieved successfully")
|
||||
if isinstance(market_data, list):
|
||||
print(f" Market data is a list with {len(market_data)} items")
|
||||
if market_data:
|
||||
print(f" First item keys: {list(market_data[0].keys()) if market_data[0] else 'Empty'}")
|
||||
else:
|
||||
print(f" Market data keys: {list(market_data.keys())}")
|
||||
|
||||
# Test positions endpoint
|
||||
print("\nTesting positions endpoint...")
|
||||
positions = api.get_positions()
|
||||
if isinstance(positions, list):
|
||||
print(f"✅ Positions retrieved successfully")
|
||||
print(f" Number of open positions: {len(positions)}")
|
||||
if positions:
|
||||
for pos in positions[:3]: # Show first 3
|
||||
market = pos.get("market", "Unknown")
|
||||
side = pos.get("side", "Unknown")
|
||||
amount = pos.get("amount", "0")
|
||||
print(f" {market} {side} {amount}")
|
||||
else:
|
||||
print(f"✅ Positions endpoint working (empty/different format)")
|
||||
|
||||
print("\n🎉 All tests passed! API is working correctly.")
|
||||
print("\nYou can now run the live trader with:")
|
||||
print(" python3 coinex_live_trader.py --dry-run (for testing)")
|
||||
print(" python3 coinex_live_trader.py (for live trading)")
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n❌ Test failed: {e}")
|
||||
# Just print error instead of using log_error which isn't available in this context
|
||||
print(f"API test failed: {e}")
|
||||
return False
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = test_api()
|
||||
sys.exit(0 if success else 1)
|
||||
Reference in New Issue
Block a user