ExMachina Telegram Bridge - MetaTrader 5 专家


EA 通过两种独立的机制检测交易事件:用于实时检测的 OnTradeTransaction 处理程序和作为后备的定期交易历史记录扫描。重复数据删除系统可确保您永远不会收到两次相同的通知,即使两种机制在同一事件上触发。
支持的通知:
— 开仓交易:交易品种、方向(买入/卖出)、交易量、价格、止损、止盈、幻数、交易单
— 交易结束:代码、交易量、收盘价、总盈亏、佣金、隔夜利息、净盈亏、更新余额
— SL/TP 修改:旧值和新值并排显示(例如 SL:1924.00 → 1926.50)
— 挂单:类型(Buy Limit、Sell Limit、Buy Stop、Sell Stop、Buy Stop Limit、Sell Stop Limit)、价格、交易量
— 仓位反转:新方向,平仓盈亏
— 存款和取款:金额和更新后的余额
— 定期账户摘要:余额、净值、可用保证金、浮动盈亏、会话盈亏、未平仓头寸、当日最高/最低净值、回撤百分比
— 带有会话统计信息的连接和断开消息
设置 — 逐步
您需要 Telegram 提供的两件事:机器人令牌和您的聊天 ID。
第 1 步:创建 Telegram 机器人
打开 Telegram,搜索 @BotFather,然后开始对话。发送命令/newbot。 BotFather 会要求您选择一个显示名称(任何您喜欢的名称)和一个用户名(必须以“bot”结尾)。创建后,BotFather 会向您发送一个 API 令牌 - 一个长字符串,类似于 7123456789:AAH1bCdEfGhIjKlMnOpQrStUvWxYz。复制此令牌。
第 2 步:获取您的聊天 ID
在 Telegram 中,搜索 @userinfobot(或 @getmyid_bot)并向其发送任何消息。它将回复您的数字聊天 ID(例如 123456789)。复制这个号码。
对于群组通知:将您的机器人添加到 Telegram 群组,然后在群组中使用 @getidsbot 获取群组聊天 ID(负数,例如 -1001234567890)。
第 3 步:与您的机器人开始对话
这一步很容易被忘记。在 Telegram 搜索中通过用户名找到您的机器人,将其打开,然后按“开始”。如果您跳过此步骤,Telegram 的 API 将拒绝所有消息。
第 4 步:在 MetaTrader 5 中允许 WebRequest
在 MT5 中,转到工具 → 选项 → EA 交易。选中“允许对列出的 URL 进行 WebRequest”。单击“添加”并准确输入:https://api.telegram.org — 然后单击“确定”。这是一次性配置。如果跳过此步骤,您将在“专家”选项卡中看到 WebRequest 错误 4014,并且不会发送任何消息。
第 5 步:安装 EA
将 ExMachina_TelegramBridge.mq5 复制到您的 MQL5/Experts/ 文件夹(通过 MT5 中的文件 → 打开数据文件夹访问)。打开 MetaEditor (F4),导航到该文件,然后按编译 (F7)。您应该看到 0 个错误、0 个警告。
第 6 步:附加到图表
将 EA 从导航器面板拖到任意图表上。在设置对话框中,粘贴您的机器人令牌和聊天 ID。单击“确定”。几秒钟之内,您应该会在 Telegram 中收到一条连接消息,显示您的帐号、服务器、余额、净值和未平仓头寸数量。
输入参数
电报配置:
— Bot 令牌:来自 @BotFather 的 API 令牌(必需)
— 聊天 ID:您的数字聊天 ID(必填,可以是群组 ID)
通知设置:
— 交易开盘通知:true/false(默认值:true)
— 交易关闭时通知:true/false(默认值:true)
— 止损/止盈通知修改:true/false(默认值:true)
— 通知待处理订单:true/false(默认值:true)
— 存款/取款通知:true/false(默认值:true)
账户摘要:
— 摘要报告间隔:关闭、每 1 小时、每 4 小时、每 8 小时、每 24 小时(默认值:每 4 小时)
— 在摘要中包含权益:true/false(默认值:true)
— 包括回撤信息:true/false(默认值:true)
显示与风格:
— 消息样式:最小(紧凑的一行)、详细(带有标签的完整信息)或丰富的表情符号(带有 Unicode 图标的详细信息)。默认:丰富的表情符号。
— 在图表上显示仪表板:true/false(默认值:true)
— 仪表板背景、文本颜色、强调色:可定制。默认使用 ExMachina 钢调色板。
— 符号过滤器:要监视的以逗号分隔的符号列表。所有符号留空。示例:“EURUSD,XAUUSD”
— 通知的最小手数:触发通知的最小数量。 0 = 无过滤器。有助于忽略微批次。
— 幻数过滤器:仅通知具有该特定幻数的交易。 -1 = 所有交易(包括手动)。
最小——紧凑的单行格式:
黄金美元 |购买 | 0.50手@1928.45
详细 — 使用标记字段进行结构化:
──────────────────────────────────────────────────────────────────────────────────────
平仓:卖出(平仓买入)
交易量:0.50 手
────────────────────
总盈亏:+$340.00
佣金:-$2.50
净损益:+337.50 美元
余额:10,585.00 美元
交易#182947363
丰富的表情符号(默认)- 与详细信息相同,但每个字段都有 Unicode 图标。交易开盘显示绿色圆圈表示买入,红色圆圈表示卖出。平仓显示利润的复选标记和损失的交叉标记。
如果您在同一账户上运行多个 EA,则幻数过滤器特别有用。将其设置为特定 EA 的幻数以仅接收来自该 EA 的通知。将其设置为 -1 以接收所有内容(包括手动交易)。
符号过滤器接受逗号分隔的列表:“XAUUSD,EURUSD,GBPUSD”。只有这些交易品种的交易才会生成通知。留空以监控所有符号。
账户摘要
定期汇总包括:余额、净值、可用保证金、未平仓头寸数量、总浮动盈亏(包括掉期)、自 EA 启动以来的时段盈亏、日高净值、日低净值以及从当日高点计算的回撤百分比。
对于需要远程监控每日回撤限额的自营公司交易者很有用。在活动会话期间将间隔设置为 1 小时。
图表仪表板
图表左上角的紧凑状态面板显示:
— 连接状态:已连接(绿色)或已断开(红色)
— 机器人用户名
— 运行计数器:已发送和失败的消息
— ExMachina 标语
仪表板默认使用 ExMachina 钢调色板(背景 C'8,10,18',强调 C'0,180,220'),并且可以通过显示输入进行自定义或禁用。
第 1 步:将 EA 附加到模拟账户上的任何图表。检查“专家”选项卡中的“已连接到机器人@YourBotName”。检查 Telegram 中的连接消息。
第 2 步:手动开立小额市价订单(例如 0.01 手 EURUSD)。您应该会收到“TRADE OPENED”通知。
步骤3:修改您所持仓位的止损或止盈(右键单击→修改)。您应该收到一条“SL/TP MODIFIED”通知,显示旧值→新值。
第四步:平仓。您应该收到一条“交易已关闭”通知,其中包含损益明细。
第 5 步:下挂单(例如买入限价)。您应该会收到“待下订单”通知。
第 6 步:从图表中删除 EA。您应该会收到一条包含会话统计信息的“已断开连接”消息。
快速浏览器测试:要在使用 EA 之前验证您的令牌和聊天 ID,请将此 URL 粘贴到任何浏览器中(替换占位符):
https://api.telegram.org/bot
如果您在响应中看到 {"ok":true},则您的凭据正确。
快速冒烟测试脚本:将其保存为 MQL5/Scripts/ 中的脚本(不是 EA),编译并在演示图表上运行:
#include <贸易\贸易.mqh>
CTrade 贸易;
trade.Buy(0.01, "欧元兑美元");
睡眠(3000);
for(int i = PositionsTotal()-1; i >= 0; i--)
if(PositionGetSymbol(i) == "EURUSD")
trade.PositionClose(PositionGetTicket(i));
您应该在 Telegram 中收到打开和关闭通知。
重要提示:此 EA 无法在策略测试器中运行。策略测试器不支持 WebRequest(网络调用)。 EA 必须在可访问互联网的实时或演示图表上运行。
与其他 EA 一起运行
MT5 每张图表仅允许一个 EA。将 Telegram Bridge 连接到单独的图表(任何符号)。它监控整个帐户,而不仅仅是其附加的图表。无论桥在哪个图表上运行,来自所有 EA 的所有交易和手动交易都会被检测到。
使用幻数过滤器将通知限制到特定 EA。
故障排除
没有收到消息:
1. 检查 https://api.telegram.org 是否位于工具 → 选项 → Expert Advisors → 允许 WebRequest 中
2. 验证 Bot Token 和 Chat ID 是否正确(无多余空格)
3. 确保您在机器人的 Telegram 聊天中按下了“开始”
4. 检查“专家”选项卡(视图 → 工具箱 → 专家)中的错误消息
WebRequest 错误 4014:Telegram URL 不在允许列表中。这是最常见的问题。
HTTP 401 未经授权:无效的机器人令牌。再次从@BotFather 复制它。
HTTP 400 错误请求:聊天 ID 错误,或者您尚未开始与机器人对话。
HTTP 429 请求过多:Telegram 速率限制。 EA 具有内置的带有退避功能的重试逻辑。这种情况只有在交易频率极高时才会发生。
EA 显示 INIT_PARAMETERS_INCORRECT:机器人令牌和聊天 ID 都是必需的。确保两个字段都不为空。
仪表板未显示:确保 EA 输入中的“在图表上显示仪表板”设置为 true。
技术细节
— 交易检测:通过 OnTradeTransaction 的双重机制(实时)+ 每 2 秒一次的交易历史记录轮询(回退)
— 重复数据删除:处理后的交易存储在内存中(跟踪的最后 500 个交易)
— 止损/止盈检测:位置快照数组在每个价格变动时进行比较,在任何变化时触发
— Telegram API:通过 WebRequest 的 HTTPS POST、URL 编码的有效负载、Markdown 解析模式
— 重试逻辑:每条消息最多尝试 3 次,重试之间有 1 秒延迟,HTTP 429 上有 3 秒延迟
— 连接测试:/getMe 端点在 init 上调用以验证令牌并检索机器人名称
— 摘要计时器:EventSetTimer(60) 检查配置的时间间隔是否已过
— 图表对象:所有仪表板对象都使用前缀“EXTB_”并在 deinit 上清除
— 没有外部 DLL,没有第三方服务器。通过 HTTPS 直接 MT5 → Telegram 通信。
该 EA 是免费且开源的。欢迎反馈、评分和建议。
ExMachina 交易系统 — 精度高于利润。
附件下载
📎 screenshot_telegram_bridge.png (68.45 KB)
📎 ExMachina_TelegramBridge.mq5 (42.57 KB)
Source: MQL5 #70383
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
