mtdata
Turn MetaTrader 5 into a research lab you can script, query from AI agents, or browse in a local web UI.
mtdata is a Windows-first toolkit that sits on top of a running MT5 terminal. It gives you 80+ tools for market data, forecasting, regime detection, patterns, risk, and trading through the command line and an optional AI-assistant plug (MCP), plus a local website and HTTP API.
It is a toolkit for exploration and automation, not a trading strategy or financial advice.
Why mtdata?
| Strength | What that means for you |
|---|---|
| One stack, three surfaces | Full tool surface through mtdata-cli and MCP; focused HTTP workflows through a local Web API + React UI |
| Research depth | Classical, ML, and foundation forecasting; regimes; barriers; patterns; 100+ indicators; denoising |
| MT5-native | Candles, ticks, market scans, account/positions, and real order flow against your broker terminal |
| Agent-friendly | Designed for tool-calling workflows: structured outputs, async training, dry-run trading |
| Safety-aware | Demo-first guidance, optional trade guardrails, and dry-run previews on trading commands |
| Guided learning | Sample trade workflows, a glossary, and docs that go from “first candle fetch” to advanced playbooks |
If you already live in MT5 and want repeatable analysis — or you want an assistant to pull data and run forecasts without reinventing the glue — this repo is built for that.
Who is this for?
- Learners & discretionary traders — Follow guided workflows without a quant background. Start with candles, a simple forecast, and the sample trade guide.
- Systematic / quant-curious traders — Prototype ideas, backtest, optimize barriers, and automate via CLI or MCP.
- Builders & data folks — Pull MT5 data into pipelines, agents, or a local web stack with a consistent output contract.
Platform notes
| Requirement | Detail |
|---|---|
| Windows | Required to run MetaTrader 5 (and therefore mtdata against MT5) |
| macOS / Linux | Run mtdata on a Windows machine or VM; connect remotely via MCP or Web API |
| Python | 3.14 is the supported runtime for the packaged dependency set |
Safety first
trade_* tools can place, modify, and close real orders on the account logged into MT5.
- Prefer a demo account until you know the tools and your broker behavior.
- There is no separate paper-trading mode inside mtdata — use an MT5 demo account for simulated execution.
- When a command supports
--dry-run true, use it to preview before anything hits the broker. - For research only, stick to
data_*,forecast_*,regime_*,patterns_*, andreport_*.
Optional guardrails (allowed symbols, max volume, max risk % of equity) are documented in docs/ENV_VARS.md and docs/TRADING_SAFETY.md.
What you can do
| Area | Highlights | Example tools |
|---|---|---|
| Data | Candles, ticks, depth (optional), market scans | data_fetch_candles, data_fetch_ticks, symbols_top_markets |
| Forecasting | Theta → ARIMA/ML → Chronos-class foundation models; async train & model cache | forecast_generate, forecast_backtest_run, forecast_train |
| Volatility & barriers | Movement estimates; TP/SL hit probabilities via simulation | forecast_volatility_estimate, forecast_barrier_prob |
| Regimes | Trending / ranging / stress-style market states | regime_detect |
| Patterns & levels | Candlesticks, chart patterns, Elliott/fractals; pivots & confluence | patterns_detect, level tools |
| Indicators & denoise | 100+ technicals; smooth noise to see structure | --indicators, --denoise |
| Multi-asset & diagnostics | Correlation, cointegration, stationarity, outliers, seasonality | correlation_matrix, stationarity_test, outliers_detect |
| Strategy & risk | Simple rule backtests; VaR/CVaR, stress, position sizing | strategy_backtest, trade_var_cvar_calculate |
| Trade ideas | One preview-only research idea: forecast, barriers, size, dry-run | trade_idea_compose |
| Trading | Place/manage orders with guardrails when you opt in | trade_place, trade_close |
| News & fundamentals | Ranked news/calendar; equity screens and issuer dossiers | news, calendar, screener |
| Options | Chains + QuantLib barrier pricing | options_chain, options_barrier_price |
| Reports | Packaged research-style summaries | report_generate |
Notes
market_depth_fetchrequiresMTDATA_ENABLE_MARKET_DEPTH_FETCH=1and broker Level 2/DOM data.- Options chains default to Yahoo Finance; Tradier is available with env config. Pure QuantLib pricing does not need a chain provider.
For method-level detail, see docs/FORECAST.md and docs/forecast/METHODS.md.
Three ways to use it
┌─────────────────┐
│ MetaTrader 5 │
│ (Windows) │
└────────┬────────┘
│
┌──────▼──────┐
│ mtdata │
└──────┬──────┘
┌─────────────────┼─────────────────┐
▼ ▼ ▼
mtdata-cli MCP server Web API
(scripts, REPL) (AI assistants) (+ React UI)
| Surface | Entry point | Good for |
|---|---|---|
| CLI | mtdata-cli |
Scripts, exploration, copy-paste workflows |
| MCP | mtdata-stdio / mtdata-sse / mtdata-streamable-http |
Agent tool use (Claude, Cursor, custom clients) |
| Web UI + API | mtdata-webapi |
Chart workspace at /app, REST for apps and notebooks |
All three are first-class delivery surfaces. Pick CLI, MCP, or Web UI for the same research stack.
Quick start
Prerequisites: Windows + Python 3.14 + MetaTrader 5 installed and running (demo account recommended). That is enough for the first candle fetch.
Optional compiler note (you can skip this on day one): the full research stack may need Visual Studio Build Tools 2022 with Desktop development with C++ because some packages source-build on Python 3.14. Details live in Setup.
# Optional: isolate the environment
conda create -n mtdata python=3.14 -y
conda activate mtdata
# Lean core (data, indicators, core analysis)
pip install -e .
# Confirm MetaTrader 5 sees your terminal (read-only)
mtdata-cli symbols_list --limit 5
# Pull candles (one bar per hour, last 50 hours)
mtdata-cli data_fetch_candles EURUSD --timeframe H1 --limit 50
# A simple baseline forecast — an estimate, not a guarantee
mtdata-cli forecast_generate EURUSD --timeframe H1 --horizon 12 --method theta
Prefer a website? Jump to Web UI. Prefer an assistant? See MCP.md.
Web UI (chart workspace)
One path: build the SPA once, start the API, open the UI.
# Web extra if you installed lean core only
pip install -e ".[web]"
# Production frontend (once per checkout / after UI changes)
cd webui && npm ci && npm run build && cd ..
# Start API + UI
mtdata-webapi
# → open http://127.0.0.1:8000/app/
If webui/dist is missing, the API still starts and /app returns a clear enablement page (build steps above). Live UI development: cd webui && npm run dev (proxies /api to :8000). User tour: Web UI. HTTP reference: Web API · Setup.
Keep the first session read-only unless you are on a demo account and intentionally testing trading.
Install flavors (summary)
| Goal | Command |
|---|---|
| Lean core | pip install -e . |
| Full docs-aligned stack | pip install -r requirements.txt |
| Web only | pip install -e .[web] |
| Classical / foundation forecast extras | pip install -e .[forecast-classical] / pip install -e .[forecast-foundation] |
| TimesFM / Git-manual add-ons | See docs/SETUP.md |
Dependency caveats (NeuralForecast optional installs, Python 3.14 exclusions, optional native accelerators) live in Setup so this page stays focused on getting you productive.
Naming
The PyPI package is mtdata-mcp. The command-line entry is mtdata-cli (not mtdata). That avoids a clash with the unrelated mtdata machine-translation dataset package, which already owns the mtdata CLI. The importable Python package remains mtdata (import mtdata). IDE and assistant configs should still launch mtdata-stdio. A mtdata-mcp console-script alias points at the same stdio entry so Official MCP Registry clients that compose uvx mtdata-mcp start that server.
Documentation
Suggested path: Setup → Glossary → pick a surface (Web UI · CLI · AI assistant) → Sample trade or the same flow in the UI.
| Start here | Then explore |
|---|---|
| Setup | Troubleshooting, Env vars |
| Web UI · AI assistant (MCP) · CLI | Glossary, Market discovery, News |
| Sample trade · Sample trade (UI) | Trade ideas, Advanced playbook, Example loop |
| Forecasting | Methods, Backtesting, Uncertainty |
| Regimes · Barriers · Patterns | Indicators, Levels, Denoising |
| Trading safety · Risk analytics | Wait for events, Web API, Deployment |
| Docs index | Full map, tagged User / Operator / Contributor |
Configuration
Create a .env in the project root (never commit credentials):
MT5_LOGIN=12345678
MT5_PASSWORD=your_password
MT5_SERVER=your_broker_server
MT5_SERVER_TZ=Europe/Athens # optional broker session/calendar timezone
# Optional trade guardrails
MTDATA_TRADE_GUARDRAILS_ENABLED=1
MTDATA_TRADE_ALLOWED_SYMBOLS=EURUSD,BTCUSD,XAUUSD
MTDATA_TRADE_MAX_VOLUME_BY_SYMBOL=EURUSD:0.50,BTCUSD:0.03
MTDATA_TRADE_MAX_RISK_PCT_OF_EQUITY=1.5
Full reference: docs/ENV_VARS.md.
Project layout
mtdata/
├── src/mtdata/
│ ├── bootstrap/ # Runtime init, settings, tool loading
│ ├── core/ # CLI, MCP/server, trading, regime, report tools
│ ├── forecast/ # Engines, methods, model store, async tasks
│ ├── patterns/ # Chart / candlestick / structure detection
│ ├── services/ # MT5 gateway, Finviz, options, news
│ ├── shared/ # Schemas and shared constants
│ └── utils/ # Indicators, denoising, helpers
├── webui/ # React + Vite frontend
├── docs/ # User guides and references
└── tests/ # Pytest suite
License
MIT
Metadata
Release files for mtdata-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mtdata_mcp-0.1.0.tar.gz | 1.5 MB | Without provenance | Details for mtdata_mcp-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mtdata_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for mtdata_mcp-0.1.0-py3-none-any.whl |
Total release size: 3.2 MB
Release files / mtdata_mcp-0.1.0.tar.gz
| Download URL | mtdata_mcp-0.1.0.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b9e3c7ccebcc4180df52f798b2a06b80d14ec612c6f4b8ebb6785a8b32393497
|
|
BLAKE2b-256 checksum How to use checksums |
ed2b662b6354791b24330fa5e888ef2883c67b6d9998a5105af52828058ffe39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|
Release files / mtdata_mcp-0.1.0-py3-none-any.whl
| Download URL | mtdata_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 1.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2130852a1a2eda543bdcca1a8cd024e703b8b271b2c0d41b2eaad81251a9dc92
|
|
BLAKE2b-256 checksum How to use checksums |
c7057c076972f598e3a054a64fafc5fa8122625ec0ec3e8ec379b44da8a0e299
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|
Security for mtdata-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.