pub mod compiler; pub mod data; pub mod engine; pub mod ui; use eframe::egui; use ui::backtest_panel::BacktestPanel; struct MqlRustApp { backtest_panel: BacktestPanel, } impl MqlRustApp { fn new(_cc: &eframe::CreationContext<'_>) -> Self { Self { backtest_panel: BacktestPanel::new(), } } } impl eframe::App for MqlRustApp { fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { egui::CentralPanel::default().show(ctx, |ui| { ui.heading("MQL-Rust Compiler & Backtester"); ui.separator(); // Draw configuration panel if let Some(config) = self.backtest_panel.draw(ui) { // Return config triggered a backtest run request self.backtest_panel.compiler_log.push_str(&format!( "\n> Starting backtest with Deposit: ${}, Leverage: 1:{}, Spread Modifier: {}", config.initial_deposit, config.leverage, config.spread_modifier )); // TODO: Wire parsing and backtesting execution threads } }); } } fn main() -> eframe::Result<()> { let options = eframe::NativeOptions { viewport: egui::ViewportBuilder::default() .with_inner_size([600.0, 700.0]) .with_title("MQL-Rust"), ..Default::default() }; eframe::run_native( "MQL-Rust Console", options, Box::new(|cc| Ok(Box::new(MqlRustApp::new(cc)))), ) }