#!/usr/bin/env python3 """ Apply Trading System Fixes This script applies fixes to the trading system to address: 1. Duplicate entry prices 2. P&L calculation issues 3. Position tracking problems 4. Trade display issues Usage: python apply_trading_fixes.py """ import os import sys import logging from pathlib import Path # Add project root to path project_root = Path(__file__).parent sys.path.insert(0, str(project_root)) # Setup logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.StreamHandler(), logging.FileHandler('logs/trading_fixes.log') ] ) logger = logging.getLogger(__name__) def apply_fixes(): """Apply all fixes to the trading system""" logger.info("=" * 70) logger.info("APPLYING TRADING SYSTEM FIXES") logger.info("=" * 70) # Import fixes try: from core.trading_executor_fix import TradingExecutorFix from web.dashboard_fix import DashboardFix logger.info("Fix modules imported successfully") except ImportError as e: logger.error(f"Error importing fix modules: {e}") return False # Apply fixes to trading executor try: # Import trading executor from core.trading_executor import TradingExecutor # Create a test instance to apply fixes test_executor = TradingExecutor() # Apply fixes TradingExecutorFix.apply_fixes(test_executor) logger.info("Trading executor fixes applied successfully to test instance") # Verify fixes if hasattr(test_executor, 'price_cache_timestamp'): logger.info("✅ Price caching fix verified") else: logger.warning("❌ Price caching fix not verified") if hasattr(test_executor, 'trade_cooldown_seconds'): logger.info("✅ Trade cooldown fix verified") else: logger.warning("❌ Trade cooldown fix not verified") if hasattr(test_executor, '_check_trade_cooldown'): logger.info("✅ Trade cooldown check method verified") else: logger.warning("❌ Trade cooldown check method not verified") except Exception as e: logger.error(f"Error applying trading executor fixes: {e}") import traceback logger.error(traceback.format_exc()) # Create patch for main.py try: main_patch = """ # Apply trading system fixes try: from core.trading_executor_fix import TradingExecutorFix from web.dashboard_fix import DashboardFix # Apply fixes to trading executor if trading_executor: TradingExecutorFix.apply_fixes(trading_executor) logger.info("✅ Trading executor fixes applied") # Apply fixes to dashboard if 'dashboard' in locals() and dashboard: DashboardFix.apply_fixes(dashboard) logger.info("✅ Dashboard fixes applied") logger.info("Trading system fixes applied successfully") except Exception as e: logger.warning(f"Error applying trading system fixes: {e}") """ # Write patch instructions with open('patch_instructions.txt', 'w') as f: f.write(""" TRADING SYSTEM FIX INSTRUCTIONS ============================== To apply the fixes to your trading system, follow these steps: 1. Add the following code to main.py just before the dashboard.run_server() call: ```python # Apply trading system fixes try: from core.trading_executor_fix import TradingExecutorFix from web.dashboard_fix import DashboardFix # Apply fixes to trading executor if trading_executor: TradingExecutorFix.apply_fixes(trading_executor) logger.info("✅ Trading executor fixes applied") # Apply fixes to dashboard if 'dashboard' in locals() and dashboard: DashboardFix.apply_fixes(dashboard) logger.info("✅ Dashboard fixes applied") logger.info("Trading system fixes applied successfully") except Exception as e: logger.warning(f"Error applying trading system fixes: {e}") ``` 2. Add the following code to web/clean_dashboard.py in the __init__ method, just before the run_server method: ```python # Apply dashboard fixes if available try: from web.dashboard_fix import DashboardFix DashboardFix.apply_fixes(self) logger.info("✅ Dashboard fixes applied during initialization") except ImportError: logger.warning("Dashboard fixes not available") ``` 3. Run the system with the fixes applied: ``` python main.py ``` 4. Monitor the logs for any issues with the fixes. These fixes address: - Duplicate entry prices - P&L calculation issues - Position tracking problems - Trade display issues - Rapid consecutive trades """) logger.info("Patch instructions written to patch_instructions.txt") except Exception as e: logger.error(f"Error creating patch: {e}") logger.info("=" * 70) logger.info("TRADING SYSTEM FIXES READY TO APPLY") logger.info("See patch_instructions.txt for instructions") logger.info("=" * 70) return True if __name__ == "__main__": # Create logs directory if it doesn't exist os.makedirs('logs', exist_ok=True) # Apply fixes success = apply_fixes() if success: print("\nTrading system fixes ready to apply!") print("See patch_instructions.txt for instructions") sys.exit(0) else: print("\nError preparing trading system fixes") sys.exit(1)