unknown 6f8e01bcf1 feat: Live MT5 EAs page + parser improvements
Live MT5 EAs page (view_ftp_tracker.py):
- FTP-based multi-account tracker replacing view_mt5_tracker.py
- Account configuration with add/remove, FTP folder validation, Demo/Personal/Prop types
- Prop account fields: profit target %, max loss %, daily loss % with EA hard stop banner
- Account summary cards: recovery factor, loss streak, stagnation days, today P&L, prop progress bars
- Calendar view: month/week/year, Mon-Fri only, weekly total column, $ or % toggle
- Open positions table parsed from MT5 HTML Open Positions section
- Symbol correlation heatmap (collapsible)
- Trade analysis section with full stats, equity/drawdown/daily P&L, DOW/hour, monthly table
- Analysis modes: Overall, By Account, By Symbol, By Algo, By Day of Week
- Dynamic combined balance field auto-updates from selected accounts
- Auto-refresh polling with session state timestamp guard
- Report date extracted from MT5 HTML header (Date: field)
- Drawdown $ / % toggle with spline smoothing

mt5_parser.py:
- calc_stats(df, deposit=0.0) — deposit-aware balance drawdown matching MT5 Balance Drawdown Maximal
- max_drawdown_pct and peak_equity added to calc_stats return
- peak_at_dd uses .loc[] fix (IndexError on filtered DataFrames)
- parse_open_positions() — parses Open Positions section from MT5 account HTML
- extract_strategy() — filters sl/tp/so close-reason comments, maps nan to Manual

ftp_sync_cli.py:
- New CLI tool for FTP connection testing and cache population

MT5Tools_FTP_Setup_Guide.docx:
- FileZilla Server setup, MT5 publisher config, CLI verification, troubleshooting
2026-04-20 08:30:46 +10:00
2026-04-14 08:39:30 +10:00
2026-04-14 10:59:55 +10:00

MT5 Tools

A standalone Streamlit dashboard for MetaTrader 5 trade analysis, batch backtesting, portfolio construction and EA settings comparison.

Windows only — the Batch Backtest feature requires MetaTrader 5 and Windows. All other pages run on any OS.


Features

📊 Trade Analysis

Import and analyse trade history from multiple formats:

  • MT5 account history reports (.htm)
  • MT5 backtest reports (.htm)
  • Quant Analyzer CSV exports
  • IC Markets position history XLSX — multi-account support with account selector

Analysis modes: Overall · By Strategy · By Symbol · By Day of Week
Filters: date range, symbol, strategy/EA, day of week, trade type
Stats: net profit, win rate, profit factor, R:R, expectancy, max DD, consecutive wins/losses, duration
Charts: equity curve, P&L by day of week, P&L by hour of day


📈 Portfolio Builder

Load multiple backtest files and view them as a combined portfolio.

  • Tabs: Overview · Trades · Equity Chart · Strategies · What-If · Portfolios
  • Equity curve with peak drawdown panel and daily P&L bars
  • What-If: scale all stats by a target lot size
  • Create and name custom sub-portfolios from loaded strategies

🏆 Portfolio Master

Automated portfolio construction — searches combinations of loaded strategies and ranks them by a composite score.

Composite scoring (01000):

  • Ret/DD · Stability (R²) · Stagnation · Win Rate · Growth Quality · Diversity
  • Six weight sliders — normalised automatically

Search modes:

Mode Description
Exhaustive Every combination — count and estimated time shown before run
Greedy (fast) Incremental build from each strategy seed
Monte Carlo Random sampling with configurable sample count
Greedy + Monte Carlo Both combined, deduplicated

Cancel button stops the search mid-run and returns results found so far.

Correlation:

  • Pairwise correlation filter (max threshold slider)
  • Average portfolio correlation as output metric
  • Conditional correlation (drawdown days only) — how strategies co-move during losses
  • Per-result correlation heatmaps in detail expanders

🔀 Trade Compare

Compare two trade history files to measure slippage and profit variance — typically a backtest vs live account run of the same EA.

  • Match tolerance: 124 hours
  • Slippage summary: avg entry slip, exit slip, profit variance, time difference
  • Charts: equity overlay, profit variance bar chart per trade
  • CSV export

⚙️ EA Settings Comparator

Upload 210 MT5 .set files and compare parameters side-by-side.

  • Percentage variation highlighting
  • Show differences only toggle
  • Inline editing
  • Export single file or all as ZIP

📋 Batch Backtest (Windows only)

Streamlit UI wrapper around the CLI batch runner. Runs MT5 backtests sequentially for a folder of .set files.

  • Reads config from mt5_batch_config.json
  • Lot size modes: as-is · manual fixed lots · lots per balance
  • Report naming: {Strategy}_{Symbol}_{Period}_{Model}_{Instance}.htm
    • .set filename stem becomes the instance letter (e.g. A.set_A)
  • Instrument and timeframe: one for all files or auto-detect from filename
  • Editable preview table before running
  • Live progress bar — cancel mid-run
  • Optimisation files excluded automatically (any spelling/case of optimiz/optimis)
  • Windows check — shows a clear warning and exits if not running on Windows

Requirements

  • Windows 10 / 11
  • Python 3.11+
  • MetaTrader 5 (for Batch Backtest)

Installation

git clone https://github.com/alphapapi-ctrl/mt5-tools.git
cd mt5-tools
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
streamlit run app.py

Batch Backtest — first-run setup

Run the CLI script once to create mt5_batch_config.json:

python mt5_batch_backtest.py

Follow the prompts to configure your MT5 terminal path, tester folder, EA, dates, deposit and suffix. Config is saved locally and gitignored.


Supported File Formats

Format Source
MT5 account history HTM MetaTrader 5 → File → Save As Report
MT5 backtest HTM Strategy Tester report tab
Quant Analyzer CSV Trade List → Export CSV
IC Markets XLSX IC Markets portal → Reports → MT5 Position History → Export

Project Structure

mt5-tools/
├── app.py                    # Main app — navigation and routing
├── mt5_parser.py             # MT5 HTM + Quant Analyzer CSV parsers
├── icmarkets_parser.py       # IC Markets XLSX parser
├── mt5_batch_backtest.py     # CLI batch backtest runner
├── set_comparator.py         # EA .set file comparison logic
├── view_trade_analysis.py    # Trade Analysis page
├── view_trade_compare.py     # Trade Compare page
├── view_portfolio_builder.py # Portfolio Builder page
├── view_portfolio_master.py  # Portfolio Master page
├── view_set_comparator.py    # EA Settings Comparator page
├── view_batch_backtest.py    # Batch Backtest page (Streamlit UI)
├── view_settings.py          # Settings page
├── requirements.txt
└── mt5_batch_config.json     # Created on first run (gitignored)

Notes

  • mt5_batch_config.json is gitignored — create it by running mt5_batch_backtest.py once
  • set_comparator.py may need to be copied from your EA project folder if not included
  • MT5 .set files are UTF-16 LE encoded — handled automatically
  • Streamlit's pages/ folder name is reserved — view files sit at root level prefixed with view_
  • git config core.autocrlf true suppresses LF/CRLF warnings on Windows

License

MIT

S
Description
Metatrader 5 trade and EA tools
Readme 454 KiB
Languages
Python 100%