Skill

mt5-trading

Comprehensive MetaTrader 5 Python algotrading knowledge base covering the official synchronous API, polling-based event systems, order execution with fill modes, historical data functions, reconnection resilience, and Windows production deployment. Includes aiomql and ZeroMQ bridge alternatives. TRIGGER WHEN: building, optimizing, or debugging MT5 trading systems with Python. DO NOT TRIGGER WHEN: the task is outside the specific scope of this component.

From mt5-trading
Install
1
Run in your terminal
$
npx claudepluginhub acaprino/figtree-plugins --plugin mt5-trading
Tool Access

This skill uses the workspace's default tool permissions.

Supporting Assets
View in Repository
references/api-architecture.md
references/data-feed-historical.md
references/event-system-polling.md
references/order-execution.md
references/production-resilience.md
Skill Content

MetaTrader 5 Python Algotrading

Knowledge base for building production-grade algorithmic trading systems with MetaTrader 5 Python API.

When to Use

  • Connecting to MT5 terminal via the official Python API
  • Building polling-based event systems (on_tick, on_new_candle, on_position)
  • Executing orders with correct fill modes (FOK, IOC, Return)
  • Downloading historical data (copy_rates, copy_ticks)
  • Handling MT5 disconnections and terminal restarts
  • Deploying MT5 bots on Windows with process monitoring
  • Choosing between official API, aiomql, and ZeroMQ bridge

Quick Start

For 80% of use cases, start with:

  1. Library: pip install MetaTrader5 (official) or pip install aiomql (async wrapper)
  2. Connection: mt5.initialize(path=..., login=..., server=..., password=...)
  3. Event system: polling loop with candle/tick/position change detection
  4. Orders: order_check() before order_send(), always detect fill mode dynamically
  5. Risk: server-side SL/TP on every position (non-negotiable)
  6. Resilience: health check every 30-60s, psutil process monitoring, exponential backoff

Then harden incrementally:

  • Silent errors -- wrap every API call with None check + last_error()
  • Fill mode rejections (10030) -- dynamic filling_mode detection per symbol
  • Terminal crashes -- psutil watchdog + subprocess restart
  • Weekend handling -- datetime.weekday() sleep mode

Reference Materials

  • api-architecture.md -- MT5 Python API architecture, 32 functions, named pipes IPC, MQL5 EA vs Python, library comparison
  • event-system-polling.md -- polling patterns, new candle detection, tick monitoring, position tracking, concurrency rules
  • order-execution.md -- order_send, fill modes (FOK/IOC/Return), hedging vs netting, retcodes, risk checks, magic numbers
  • data-feed-historical.md -- copy_rates, copy_ticks, depth, timezone caveats, caching, data quality, broker differences
  • production-resilience.md -- disconnection handling, reconnection, weekend management, Windows deployment, community resources

Key Decision Points

DecisionDefaultUpgrade When
LibraryOfficial MetaTrader5Need async -- aiomql; need true streaming -- ZeroMQ bridge
Event modelPolling (1-5s interval)Tick-sensitive -- poll 100-250ms; true events -- ZeroMQ EA bridge
Fill modeDetect dynamically per symbolNever hardcode -- changes between brokers/symbols
Account modeHedging (most forex brokers)Check account_info().margin_mode at startup
Data cachingParquet + ZstandardTick data -- partition by day/month
Concurrencyasyncio (single thread)Multi-account -- separate processes per terminal
BacktestingPython framework (Backtrader, Backtesting.py)Need MT5 tester -- MQL5 EA wrapper
SL/TPServer-side alwaysPython trailing only as supplement, never as sole protection
Stats
Parent Repo Stars0
Parent Repo Forks1
Last CommitMar 26, 2026