| # ML-3m-trader Usage Guide |
|
|
| Step-by-step instructions for running the full ML trading pipeline. |
|
|
| --- |
|
|
| ## Prerequisites |
|
|
| | Requirement | Details | |
| |-------------|---------| |
| | Python | 3.9 or later | |
| | MetaTrader 5 | Installed, running, and logged in to a broker account with XAUUSDc | |
| | Operating System | Windows (required by the MetaTrader5 Python API) | |
|
|
| --- |
|
|
| ## 1. Environment Setup |
|
|
| Create a virtual environment and install dependencies: |
|
|
| ``` |
| python -m venv .venv |
| .venv\Scripts\activate |
| pip install -r requirements.txt |
| ``` |
|
|
| --- |
|
|
| ## 2. Available Commands |
|
|
| | Command | Description | |
| |---------|-------------| |
| | `python main.py fetch` | Connect to MT5 and download 1 year of 3-minute OHLCV data for XAUUSDc | |
| | `python main.py train` | Compute features, generate labels, and train the LightGBM model | |
| | `python main.py backtest` | Run a walk-forward backtest on the held-out test set | |
| | `python main.py evaluate` | Re-print the saved backtest performance report | |
| | `python main.py predict` | Show latest class probabilities from the trained model | |
| | `python main.py run` | Full pipeline in one command: fetch, train, backtest, evaluate | |
|
|
| --- |
|
|
| ## 3. Step-by-Step Workflow |
|
|
| ### 3.1 Fetch Data |
|
|
| 1. Open MetaTrader 5 and log in to your broker account. |
| 2. Ensure the symbol **XAUUSDc** is visible in Market Watch. |
| 3. Run: |
|
|
| ``` |
| python main.py fetch |
| ``` |
|
|
| **Output**: A CSV file is saved to `data/raw_xauusdc_m3.csv`. |
|
|
| | Output Column | Description | |
| |---------------|-------------| |
| | time | Bar open time (UTC) | |
| | open | Opening price | |
| | high | Highest price in the bar | |
| | low | Lowest price in the bar | |
| | close | Closing price | |
| | volume | Tick volume | |
| | spread | Broker spread (in points) | |
|
|
| --- |
|
|
| ### 3.2 Train the Model |
|
|
| ``` |
| python main.py train |
| ``` |
|
|
| This command performs three stages: |
|
|
| | Stage | Action | |
| |-------|--------| |
| | Feature Engineering | Computes SMA, Double MA, VROC, Synthetic VIX, MSI, ADX, and cyclical time features | |
| | Label Generation | Simulates 1:1 RR trades at each bar to classify: BUY, SELL, HOLD, DO_NOTHING | |
| | Model Training | Trains a LightGBM multi-class classifier with chronological 80/20 split and early stopping | |
| |
| **Output**: |
| - Featured dataset saved to `data/featured_data.csv` |
| - Trained model saved to `models/lgbm_model.pkl` |
| - Feature importance printed to console |
|
|
| --- |
|
|
| ### 3.3 Run Backtest |
|
|
| ``` |
| python main.py backtest |
| ``` |
|
|
| Executes a walk-forward backtest on the 20% held-out test set with: |
| - Position sizing: 2% of balance risked per trade (configurable in `config.py`) |
| - Random slippage: 0 to 2 XAUUSDc units per entry |
| - Spread filter: trades skipped if stop-loss distance is less than spread multiplied by 10 |
| - 1:1 risk-reward enforcement |
|
|
| **Output**: |
| - Performance report printed to console and saved to `results/report.txt` |
| - Individual trade records saved to `results/trades.csv` |
|
|
| --- |
|
|
| ### 3.4 View Report |
|
|
| ``` |
| python main.py evaluate |
| ``` |
|
|
| Re-prints the saved report from `results/report.txt`. |
|
|
| --- |
|
|
| ### 3.5 View Predictions |
|
|
| ``` |
| python main.py predict |
| ``` |
|
|
| Prints class probabilities for the last 10 bars: |
|
|
| | Column | Meaning | |
| |--------|---------| |
| | DO_NOTHING | Probability the bar should be skipped | |
| | BUY | Probability of a winning long setup | |
| | SELL | Probability of a winning short setup | |
| | HOLD | Probability that no clear edge exists | |
| |
| --- |
| |
| ### 3.6 Full Pipeline |
| |
| ``` |
| python main.py run |
| ``` |
| |
| Runs fetch, train, and backtest sequentially. Requires MT5 to be open and logged in. |
| |
| --- |
| |
| ## 4. Configuration Reference |
| |
| All parameters are defined in `config.py`. Key settings: |
| |
| | Parameter | Default | Description | |
| |-----------|---------|-------------| |
| | SYMBOL | XAUUSDc | Trading instrument | |
| | TIMEFRAME_MINUTES | 3 | Bar period | |
| | LOOKBACK_DAYS | 365 | Historical data range | |
| | SMA_FAST_PERIOD | 14 | Fast SMA lookback | |
| | SMA_SLOW_PERIOD | 50 | Slow SMA lookback | |
| | VROC_PERIOD | 14 | Volume Rate of Change lookback | |
| | ADX_PERIOD | 14 | Average Directional Index lookback | |
| | MOMENTUM_SI_PERIOD | 10 | Momentum Strength Index lookback | |
| | VIX_PROXY_PERIOD | 20 | Synthetic VIX rolling window | |
| | ATR_PERIOD | 14 | ATR for stop-loss calculation | |
| | ATR_SL_MULTIPLIER | 1.5 | Stop-loss = ATR * multiplier | |
| | LABEL_LOOKAHEAD_BARS | 60 | Max bars to wait for TP/SL resolution | |
| | RR_RATIO | 1.0 | Risk-reward ratio | |
| | SPREAD_FILTER_MULTIPLIER | 10 | Min SL distance = spread * this value | |
| | SLIPPAGE_MIN | 0.0 | Minimum random slippage (units) | |
| | SLIPPAGE_MAX | 2.0 | Maximum random slippage (units) | |
| | DEFAULT_BET_PCT | 0.02 | Fraction of balance risked per trade | |
| | STARTING_BALANCE | 10000.0 | Initial account balance (USD) | |
| | TRAIN_SPLIT_RATIO | 0.80 | Chronological train/test split | |
|
|
| --- |
|
|
| ## 5. Output Files |
|
|
| | Path | Content | |
| |------|---------| |
| | `data/raw_xauusdc_m3.csv` | Raw OHLCV data from MetaTrader 5 | |
| | `data/featured_data.csv` | Data with all computed features and labels | |
| | `models/lgbm_model.pkl` | Serialized LightGBM model | |
| | `results/report.txt` | Backtest performance report | |
| | `results/trades.csv` | Individual trade records with entry/exit prices, PnL, timestamps | |
|
|
| --- |
|
|
| ## 6. Metrics Explained |
|
|
| | Metric | Definition | |
| |--------|------------| |
| | Win Rate | Percentage of trades that hit take-profit | |
| | Avg Win % | Mean profit per winning trade as percentage of account balance | |
| | Avg Loss % | Mean loss per losing trade as percentage of account balance | |
| | Sharpe Ratio | Annualized risk-adjusted return (mean return / std of returns) | |
| | Sortino Ratio | Like Sharpe but only considers downside volatility | |
| | Max Drawdown | Largest peak-to-trough decline in the equity curve | |
| | Profit Factor | Total gross profit divided by total gross loss | |
| | Calmar Ratio | Annualized return divided by maximum drawdown | |
| | Expectancy | Average PnL per trade in USD | |
|
|
| --- |
|
|
| ## 7. Troubleshooting |
|
|
| | Issue | Solution | |
| |-------|----------| |
| | MT5 initialize failed | Ensure MetaTrader 5 is open and logged in | |
| | No data returned | Add XAUUSDc to Market Watch in MT5 | |
| | Model file not found | Run `python main.py train` before backtest | |
| | Import errors | Activate the virtual environment and run `pip install -r requirements.txt` | |
|
|