77 lines
2.9 KiB
Python
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()) |