Slash Command

/mt5-audit

"Audit an existing MetaTrader 5 trading system for reliability, error handling, and production readiness" argument-hint: "[path-or-description]". TRIGGER WHEN: the user requires assistance with tasks related to this domain. 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
Command Content

MT5 Trading System Audit

Analyze an existing MT5 Python trading system and produce an actionable audit report.

Instructions

  1. Identify MT5 components in the codebase:

    • Connection setup (initialize, login, server)
    • Event/polling loop structure
    • Order execution logic
    • Data fetching approach
    • Error handling
    • Reconnection handling
    • Logging
  2. Audit each component against best practices:

Connection

  • initialize() called once at startup (not in loops)
  • shutdown() called once at exit
  • All required params: path, login, server, password, timeout
  • /portable flag used if installed in Program Files
  • Single process per MT5 terminal instance

Event System

  • Polling loop implemented (not missing events)
  • New candle detection via time field comparison
  • Position change detection via ticket set comparison
  • Appropriate poll interval for strategy timeframe
  • Not using time.sleep() excessively (CPU waste)

Order Execution

  • Fill mode detected dynamically per symbol (not hardcoded)
  • order_check() called before every order_send()
  • All retcodes handled (especially 10030 invalid fill, 10016 invalid stops)
  • Position ticket specified when closing in hedging mode
  • Magic number used (non-zero) for all bot orders
  • Server-side SL/TP set on every position
  • symbol_select() called before trading operations
  • Broker-specific values queried at runtime (stops_level, filling_mode, etc.)

Data

  • UTC timezone used for all datetime objects (pytz)
  • "Max bars in chart" set to Unlimited in terminal
  • Data cached locally for efficiency (Parquet recommended)
  • Incremental updates (not full re-download each run)

Error Handling

  • Every API call checked for None return
  • last_error() called on failures for diagnostics
  • IPC errors handled (-10001, -10002, -10003, -10005)
  • Retcode 10004 (requote) triggers price refresh + retry
  • Retcode 10024 (too many requests) triggers backoff
  • Silent error pattern avoided (no unchecked returns)

Thread Safety

  • All MT5 calls on single thread
  • asyncio used for concurrency (not threading)
  • No concurrent access to IPC pipe
  • Multi-account uses separate processes

Reconnection

  • terminal_info().connected checked periodically (health check)
  • Exponential backoff reconnection implemented
  • psutil used to monitor terminal64.exe process
  • subprocess.Popen for terminal restart capability
  • MT5 auto-updates disabled during trading hours
  • Weekend handling implemented (sleep mode)

Production Hardening

  • Structured logging with rotation
  • Circuit breaker (stop after N consecutive errors)
  • Kill switch (flatten all positions and halt)
  • Process auto-restart (Task Scheduler or watchdog)
  • Demo vs live behavior differences accounted for
  • State reconciliation on restart (positions, orders)
  1. Generate report with:
    • Current state assessment (what is implemented correctly)
    • Risk areas (missing or misconfigured components)
    • Priority improvements ordered by production impact
    • Code examples for each recommendation
Stats
Parent Repo Stars0
Parent Repo Forks1
Last CommitMar 26, 2026