欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

ExMachina Telegram Bridge - MetaTrader 5 专家

author emer | 487 人阅读 | 0 人评论 |

ExMachina Telegram Bridge - expert for MetaTrader 5

ExMachina Telegram Bridge - expert for 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 中收到一条连接消息,显示您的帐号、服务器、余额、净值和未平仓头寸数量。

ExMachina Telegram Bridge - expert for MetaTrader 5

输入参数

电报配置:

— 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/sendMessage?chat_id=&text=测试

如果您在响应中看到 {"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

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录