9 Commits

Author SHA1 Message Date
unknown e8ee01304a Updated portfolio buidler and master pages for bulk file selection or select and scan a folder for MT5 html back test reports 2026-05-12 13:51:56 +10:00
unknown 62848079b3 fix(uploaders): convert master/builder to single-file slot pattern
Multi-file uploaders trigger Windows browsers' folder-select mode
which bypasses the type filter. Switch to N single-file slots
(matching the working set comparator pattern) so the OS picker
stays in single-file mode where folder selection is impossible.
Default 5 slots, expandable up to 20 via dropdown.
2026-05-06 17:13:02 +10:00
unknown 995205ed16 fix(portfolio-master): visible skip warning + clearer caption
When a user selects a folder in the upload picker (browser behaviour
that bypasses type filter), all files come through and only valid
extensions get processed. Make the skipped count visible and update
the caption to set expectations.
2026-05-06 17:09:27 +10:00
unknown fbc63e8a0b fix(uploaders): restrict file types on portfolio master and builder pages
Mac Safari was offering folder uploads when type=None was set on
file_uploader. Set explicit type=[htm,html,csv] on both
portfolio master and builder pages so the OS picker restricts to
individual files of supported extensions.
2026-05-06 16:27:29 +10:00
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
unknown ab9e968def Portfolio builder/master improvements, batch backtest fixes, parser FIFO fix, theme updates 2026-04-17 09:42:08 +10:00
unknown a4a75eaaeb fix: batch backtest ini generation and report collection
- Replace Inputs= with [TesterInputs] section in ini files so MT5
  cannot override set file parameters with cached/default values
- Fix build_ini to use caller-supplied report_name instead of
  recomputing a generic name, ensuring each run gets a unique ini
- Replace shutil.copy2 + delete loop with shutil.move for htm reports
- Add companion PNG move (name, -holding, -mfemae, -hst) to reports folder
- Fix Streamlit folder warning appearing in wrong conditional branch

Applies to both mt5_batch_backtest.py and view_batch_backtest.py
2026-04-15 21:35:19 +10:00
unknown 3db0870844 feat: portfolio master algo overhaul + fixes
Search:
- Three modes: Exhaustive, Greedy (incremental), Monte Carlo, combined
- Combination count estimate + runtime warning before run
- Background thread with Cancel button (threading.Event, no session_state spam)

Scoring:
- Composite weighted score (Ret/DD, Stability, Stagnation, Win Rate,
  Growth Quality, Diversity) with normalised sliders
- Score, Stability, Growth Quality, Diversity now whole numbers
- Growth Quality = normalised slope x R2 rewards consistently rising curves
- Diversity bonus based on symbol variety + session overlap

Correlation:
- Average pairwise correlation output metric
- Conditional correlation (drawdown days only) computed and displayed
- Per-result correlation heatmaps in detail expanders

Results table:
- Summary explanation panel above table
- Max Pos Exposure removed (unreliable with current parser output)

Fixes:
- Duplicate plotly_chart element ID fix
- time import missing fix
2026-04-13 17:25:13 +10:00
unknown 06e23e1d7a fix: batch backtest lot size, DD% formula, max position exposure
- mt5_batch_backtest.py / view_batch_backtest.py: fix update_param to
  clear MT5 .set flag bit 2 (use-default) and update default field so
  manual lot size actually takes effect
- view_portfolio_master.py: Max DD% now uses deposit not running peak,
  Max Position Exposure rebuilt as proper timeline sweep
- view_portfolio_builder.py: Max DD% formula aligned to match master
- view_portfolio_master.py / view_portfolio_builder.py: results table
  now shows full stats columns including Stability score
2026-04-13 15:46:52 +10:00