Files
gogo2/test_trading_execution.py
2025-12-10 14:44:28 +02:00

77 lines
2.9 KiB
Python

#!/usr/bin/env python3
"""
Test script to verify trading execution is working
"""
import asyncio
import logging
import sys
import os
# Add project root to path
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from core.orchestrator import TradingOrchestrator
from core.data_provider import DataProvider
from core.trading_executor import TradingExecutor
# Set up logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
async def test_trading_execution():
"""Test that trading decisions are being executed"""
try:
logger.info("=== Testing Trading Execution ===")
# Initialize components
data_provider = DataProvider()
orchestrator = TradingOrchestrator(data_provider=data_provider)
trading_executor = TradingExecutor()
# Connect trading executor to orchestrator
orchestrator.set_trading_executor(trading_executor)
logger.info("✅ TradingExecutor connected to orchestrator")
# Check if trading is enabled
logger.info(f"Trading enabled: {trading_executor.trading_enabled}")
logger.info(f"Simulation mode: {trading_executor.simulation_mode}")
logger.info(f"Confidence threshold: {orchestrator.confidence_threshold}")
# Test making a single decision
symbol = 'ETH/USDT'
logger.info(f"\n=== Testing single decision for {symbol} ===")
decision = await orchestrator.make_trading_decision(symbol)
if decision:
logger.info(f"Decision: {decision.action} (confidence: {decision.confidence:.2f})")
logger.info(f"Price: ${decision.price:.2f}")
logger.info(f"Reasoning: {decision.reasoning}")
else:
logger.warning("No decision returned")
# Check current positions
logger.info(f"\n=== Current Positions ===")
if hasattr(trading_executor, 'positions') and trading_executor.positions:
for symbol, position in trading_executor.positions.items():
logger.info(f"{symbol}: {position.side} {position.quantity} @ ${position.entry_price:.2f}")
else:
logger.info("No open positions")
# Check trade history
logger.info(f"\n=== Trade History ===")
if hasattr(trading_executor, 'trade_records') and trading_executor.trade_records:
for trade in trading_executor.trade_records[-5:]: # Last 5 trades
logger.info(f"{trade.symbol}: {trade.side} ${trade.pnl:.2f} PnL")
else:
logger.info("No trade history")
logger.info("\n=== Test Complete ===")
except Exception as e:
logger.error(f"Test failed: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
asyncio.run(test_trading_execution())