Skip to main content

Command-line tool for MetaTrader 5

Project description

mt5cli

CI/CD

Command-line tool for exporting MetaTrader 5 data to CSV, JSON, Parquet, and SQLite3.

Built on top of pdmt5, a pandas-based data handler for MetaTrader 5.

Features

  • Multi-format export: CSV, JSON, Parquet, and SQLite3 output formats
  • Auto-detection: Format detection from file extensions
  • Comprehensive data access: Rates, ticks, account info, symbols, orders, positions, and trading history
  • Flexible timeframes: Named timeframes (M1, H1, D1, etc.) and numeric values
  • Connection management: Optional credentials, server, and timeout configuration

Installation

pip install -U mt5cli MetaTrader5

Usage

# Export account information to CSV
mt5cli -o account.csv account-info

# Export EURUSD M1 rates to Parquet
mt5cli -o rates.parquet rates-from --symbol EURUSD --timeframe M1 \
  --date-from 2024-01-01 --count 1000

# Export ticks to JSON
mt5cli -o ticks.json ticks-from --symbol EURUSD \
  --date-from 2024-01-01 --count 500 --flags ALL

# Export symbols to SQLite3 with custom table name
mt5cli -o data.db --table symbols symbols --group "*USD*"

# Export with connection credentials
mt5cli --login 12345 --password mypass --server MyBroker-Demo \
  -o positions.csv positions

Run as a Python module:

python -m mt5cli -o account.csv account-info

Commands

Command Description
rates-from Export rates from a start date
rates-from-pos Export rates from a start position
rates-range Export rates for a date range
ticks-from Export ticks from a start date
ticks-range Export ticks for a date range
account-info Export account information
terminal-info Export terminal information
version Export MetaTrader 5 version information
last-error Export the last error information
symbols Export symbol list
symbol-info Export symbol details
symbol-info-tick Export the last tick for a symbol
market-book Export market depth (order book)
orders Export active orders
positions Export open positions
history-orders Export historical orders
history-deals Export historical deals
order-check Check funds sufficiency for a trade request
order-send Send a trade request to the trade server (--yes required)
collect-history Bundle rates, ticks, history-orders, and history-deals for one or more symbols into a single SQLite database

Use order-check to validate a request payload before running order-send --yes.

collect-history

Collect several historical datasets per symbol into one SQLite database in a single MT5 session. Pick datasets with repeatable --dataset (default: all four), choose conflict behavior with --if-exists append|replace|fail (default: fail), and optionally derive cash_events / positions_reconstructed views from history_deals via --with-views.

mt5cli -o history.db collect-history \
  --symbol EURUSD --symbol GBPUSD \
  --date-from 2024-01-01 --date-to 2024-02-01 \
  --dataset rates --dataset history-deals \
  --timeframe M1 --flags ALL --if-exists append --with-views

History orders and deals are fetched per symbol and concatenated, so the symbol filter is applied consistently across all datasets. The cash_events view is derived from symbol-filtered history_deals, so account-level cash events with empty or non-matching symbols may be excluded. The rates table records the requested timeframe so appended runs at different timeframes remain distinguishable. The positions_reconstructed view aggregates trade deals by position_id, excludes positions without closing deals, and uses volume-weighted open/close prices; reversal deals (DEAL_ENTRY_INOUT) are reported via volume_reversal / reversal_count columns and do not contribute to the weighted prices.

Requirements

  • Python 3.11+
  • Windows OS (MetaTrader 5 requirement)
  • MetaTrader 5 platform installed

Development

git clone https://github.com/dceoy/mt5cli.git
cd mt5cli
uv sync

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mt5cli-0.3.0.tar.gz (88.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mt5cli-0.3.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file mt5cli-0.3.0.tar.gz.

File metadata

  • Download URL: mt5cli-0.3.0.tar.gz
  • Upload date:
  • Size: 88.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for mt5cli-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8c5a40550e5482a040cc2448c4dbdaf619e1cbf6a61cfe7135ac9cef36cc1664
MD5 3b4f8e39b08976a26e37f166031421c7
BLAKE2b-256 9b9bc209588a45999d3bcfa921dd35d02cf345716a0e087c345f960d91e3d410

See more details on using hashes here.

Provenance

The following attestation bundles were made for mt5cli-0.3.0.tar.gz:

Publisher: release.yml on dceoy/mt5cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mt5cli-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: mt5cli-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for mt5cli-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 82c0b976d462c1a376e698d50c5ab96a25a811aaf38da2b408af860d9e014b1e
MD5 08e16d8427f4110731e73e82e1e843fd
BLAKE2b-256 68295dd7af1e3289920b160cdf6565495084ab947ef62d93807463bb22704cff

See more details on using hashes here.

Provenance

The following attestation bundles were made for mt5cli-0.3.0-py3-none-any.whl:

Publisher: release.yml on dceoy/mt5cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page