4.8 KiB
Article-22388-Telegram-Voice-Trading-MT5-Accessibility
This repository is an article-derived reference project based on the original MQL5 article. It does not claim to reproduce the full original source code unless files are explicitly attached.
Overview
This project documents a semi-automated remote voice-command trading pipeline for MetaTrader 5. The architecture links a Telegram voice message to a local Python middleware, which transcribes and parses the message, exposes commands over HTTP, and lets an MQL5 Expert Advisor poll, execute, and return results.
The design targets low-bandwidth remote control and accessibility use cases, especially when the trader is away from the desktop terminal.
Original Article
- Article ID: 22388
- Author: Clemence Benjamin
- Publication date: 2026.05.26
- Category: Python / Experts
- URL: https://www.mql5.com/en/articles/22388
Repository Purpose
This repository serves as a reference reconstruction of the solution described in the article:
- a Python middleware that combines:
- Telegram bot polling
- voice-note download and conversion
- speech-to-text transcription
- natural-language command parsing
- local HTTP server endpoints
- an MQL5 Expert Advisor that:
- polls the middleware with
WebRequest - parses JSON commands
- executes trades through
CTrade - posts execution results back to the middleware
It is useful as a study reference for:
- Telegram-to-MT5 integration
- pull-based command delivery in MQL5
- low-bandwidth remote trade control
- accessibility-oriented trading workflows
Key Concepts
- Pull-based HTTP polling from MQL5
- Telegram voice-note handling
- Speech recognition via Python
- Audio conversion with
ffmpegandpydub - JSON-based command exchange
- Cross-language integration between Python and MQL5
- Remote order execution with
CTrade - Simple in-memory queueing and result synchronization
- Risk reduction through default micro-lot sizing
Algorithm / Architecture Summary
- A user sends a Telegram voice message.
- The Python bot downloads the
.oggfile. - The middleware converts audio to 16 kHz mono WAV.
- Speech is transcribed using Python speech recognition.
- Parsed text is converted into a JSON command such as:
BUYSELLCLOSE_ALLBALANCE
- The command is placed into an in-memory queue.
- The MQL5 EA polls
GET /get_commandevery 2 seconds. - If a command is available, the EA:
- parses JSON using
JAson.mqh - executes the requested action
- builds a JSON response
- The EA sends the result to
POST /post_response. - The Telegram bot returns the outcome to the user.
Important implementation note highlighted in the article:
StringToCharArrayin MQL5 appends a null terminator, which must be stripped before POSTing JSON to Python.
Mentioned or Attached Files
Explicitly attached files
telegram_trading_bot.py— Python 3 middleware scriptOvercomingAccessibilityIV.mq5— MQL5 Expert AdvisorJAson.mqh/Jason.mqh— third-party JSON parser referenced from MQL5 CodeBase
Mentioned in text
MQL5\Include\OvercomingAccessibilityIV\JAson.mqhMQL5\Experts\OvercomingAccessibilityIV.mq5
Statistics
- Polling interval: 2 seconds
- Typical round-trip latency: 1.5-4.2 seconds
- HTTP round-trip + trade execution: 50-200 ms
- Bandwidth per poll request: ~200 bytes
- Empty queue response size: ~20 bytes
- Full trade cycle bandwidth: less than 30 KB
- Voice download size: ~10-30 KB
- Python version: 3.10+
- HTTP server bind address:
127.0.0.1:8082
Tags
MQL5 MetaTrader5 Telegram Python WebRequest Voice-Control Accessibility JSON CTrade Speech-Recognition
Difficulty
Intermediate
Requires familiarity with:
- MQL5 Expert Advisor development
- Python environment setup
- HTTP/JSON communication
- Telegram bot configuration
- Windows dependency setup for
ffmpeg
Limitations
- This is an article-derived reference project; the README reflects the article content and attached file list.
- Full original repository structure is not available unless the attached files are actually present in this processed input.
- The solution depends on a continuously running Windows machine with MetaTrader 5 open.
- The architecture uses polling, so execution latency includes the polling interval.
- The speech recognition path described in the article uses external Google STT through Python libraries.
- The JSON parser include is third-party and must be obtained separately if not bundled.
- If no attached source files are present in this repository snapshot, then no attached source files were available in the processed input.
Reference
- MQL5 article: https://www.mql5.com/en/articles/22388
- MQL5 CodeBase reference for JSON parser: https://www.mql5.com/en/code/13663