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.4.0.tar.gz (93.6 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.4.0-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for mt5cli-0.4.0.tar.gz
Algorithm Hash digest
SHA256 64d9448af783cbf364ec6339387d7ada8544fb956651c1442f84ccab85ab4372
MD5 f5496cdccbb8d3d83b44fe54fe4112b4
BLAKE2b-256 afefdb71518c4d359a85a2b32fe106b4d412a2363d76d6efb61eddfd2d52ffc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for mt5cli-0.4.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.4.0-py3-none-any.whl.

File metadata

  • Download URL: mt5cli-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 16.5 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0e8b785205efeb0981c985a63ae8958f75a024097463d9cf8d774eed599f86ad
MD5 34d07756ba24267027dbddb80d4dab27
BLAKE2b-256 037c437f5b7519aec2cfa51183cadf7afceb471f9cfa44d0d97c2dfc3195f441

See more details on using hashes here.

Provenance

The following attestation bundles were made for mt5cli-0.4.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