Edwin Salguero
Initial commit: Enhanced Algorithmic Trading System with Synthetic Data Generation, Comprehensive Logging, and Extensive Testing
859af74
| import yaml | |
| import logging | |
| import sys | |
| from typing import Dict, Any | |
| from .orchestrator import run, run_backtest, run_live_trading | |
| from .logger_config import setup_logging | |
| def main(): | |
| """Main entry point for the trading system""" | |
| try: | |
| # Load configuration | |
| config = load_config() | |
| # Setup logging | |
| setup_logging(config) | |
| logger = logging.getLogger(__name__) | |
| logger.info("Starting algorithmic trading system") | |
| # Run the trading workflow | |
| result = run(config) | |
| if result['success']: | |
| logger.info("Trading workflow completed successfully") | |
| if result['order_executed']: | |
| logger.info(f"Order executed: {result['execution_result']}") | |
| else: | |
| logger.error(f"Trading workflow failed: {result['errors']}") | |
| except Exception as e: | |
| print(f"Fatal error: {e}") | |
| sys.exit(1) | |
| def load_config(config_path: str = 'config.yaml') -> Dict[str, Any]: | |
| """Load configuration from YAML file""" | |
| try: | |
| with open(config_path, 'r') as f: | |
| config = yaml.safe_load(f) | |
| return config | |
| except FileNotFoundError: | |
| print(f"Configuration file not found: {config_path}") | |
| sys.exit(1) | |
| except yaml.YAMLError as e: | |
| print(f"Error parsing configuration file: {e}") | |
| sys.exit(1) | |
| def run_backtest_mode(config_path: str = 'config.yaml', | |
| start_date: str = '2024-01-01', | |
| end_date: str = '2024-12-31'): | |
| """Run the system in backtest mode""" | |
| try: | |
| config = load_config(config_path) | |
| setup_logging(config) | |
| logger = logging.getLogger(__name__) | |
| logger.info("Running in backtest mode") | |
| result = run_backtest(config, start_date, end_date) | |
| if result['success']: | |
| logger.info(f"Backtest completed: {result['total_return']:.2%} return") | |
| logger.info(f"Total trades: {result['total_trades']}") | |
| else: | |
| logger.error(f"Backtest failed: {result['error']}") | |
| except Exception as e: | |
| print(f"Backtest error: {e}") | |
| sys.exit(1) | |
| def run_live_mode(config_path: str = 'config.yaml', duration_minutes: int = 60): | |
| """Run the system in live trading mode""" | |
| try: | |
| config = load_config(config_path) | |
| setup_logging(config) | |
| logger = logging.getLogger(__name__) | |
| logger.info("Running in live trading mode") | |
| result = run_live_trading(config, duration_minutes) | |
| if result['success']: | |
| logger.info(f"Live trading completed: {result['total_trades']} trades") | |
| else: | |
| logger.error(f"Live trading failed: {result['error']}") | |
| except Exception as e: | |
| print(f"Live trading error: {e}") | |
| sys.exit(1) | |
| if __name__ == '__main__': | |
| import argparse | |
| parser = argparse.ArgumentParser(description='Algorithmic Trading System') | |
| parser.add_argument('--mode', choices=['standard', 'backtest', 'live'], | |
| default='standard', help='Run mode') | |
| parser.add_argument('--config', default='config.yaml', help='Configuration file path') | |
| parser.add_argument('--start-date', default='2024-01-01', help='Backtest start date') | |
| parser.add_argument('--end-date', default='2024-12-31', help='Backtest end date') | |
| parser.add_argument('--duration', type=int, default=60, help='Live trading duration (minutes)') | |
| args = parser.parse_args() | |
| if args.mode == 'backtest': | |
| run_backtest_mode(args.config, args.start_date, args.end_date) | |
| elif args.mode == 'live': | |
| run_live_mode(args.config, args.duration) | |
| else: | |
| main() | |