SignalGuard Telegram Signal Copier MT5
- Experts
-
Ibrahim Yahya
I build MetaTrader 5 tools that follow your rules exactly: Expert Advisors, trade managers and trade copiers that size every trade from your risk and manage it to the end, unattended on a VPS.
What I have built and run: - Version: 1.1
- Updated: 2 November 2026
- Activations: 5
SignalGuard reads trade calls from Telegram and places them on your MT5 account with your own lot or risk settings. Every trade it opens is then managed: the stop moves to break-even in two steps as the price moves your way, and the remaining positions follow a TP ladder when TP1 fills. It reads Telegram through MT5's own WebRequest function, so the EA file is all you install.
SignalGuard is a copier and a trade manager. It has no strategy of its own, and the results depend on the channel you follow.
Where the calls come from
- Public channels. Up to 5 channel names (the NAME in t.me/NAME). SignalGuard reads each channel's public web preview every 15 seconds by default.
- Your own Telegram bot. For a private channel or group you run: add your bot as an admin and paste its token. Only the chat ids you list can trade. In a group, a message trades only when its sender's user id is on your list.
- Replay file. A CSV file of posts with their times, for the Strategy Tester and for checking a channel's history.
When it starts, SignalGuard takes the newest post of each source as the start point. Older posts are never traded, and a restart does not repeat a post.
What it understands
- BUY / SELL / LONG / SHORT and the Arabic شراء / بيع, the symbol (GOLD, XAUUSD, ذهب, US30, EURUSD and more), the entry or an entry range, the SL, up to 6 TPs, and "30 pips" style distances. Arabic-Indic digits are read too.
- Your broker's symbol name is found by itself: XAUUSD becomes XAUUSD.m, GOLD or GOLDm# where needed. A symbol your broker does not have is skipped with a log line, and the chart symbol is used only for posts that name no symbol at all.
- BUY STOP / BUY LIMIT / SELL STOP / SELL LIMIT in a post are placed as that pending order.
- Follow-up posts: "TP1 hit", "close", "move SL to entry", "cancel". They act on that channel's latest signal, and only when the symbol and side match. A sentence like "gold is close to TP1" is not read as a close.
- A post is skipped, with the reason in the log and on the panel, when the SL or a TP is on the wrong side, the SL is too far, the price already ran too far past the entry, the post is a question, or it has no BUY/SELL.
- Adverts are filtered out: when a channel posts a call together with its "TP hit" while the price is nowhere near that TP, the call is a replay of an old trade, and SignalGuard drops it (InpAdSec, default 180 seconds).
- A post without an SL is skipped by default. Many channels first post a bare "SELL NOW" and the full call with its SL a minute later, and SignalGuard then trades the full call. If your channel never gives an SL, set a default SL in pips (InpDefaultSLPips).
At every start the EA reads 49 built-in sample posts (English and Arabic) and refuses to start if one of them is read wrong.
How it enters
- Market: at once.
- Confirm (default): waits a few seconds (5 by default). If the price is at or past the entry in the trade's direction, it opens at market. If not, it places a stop order at the entry, which opens only if the price comes back to it. Every filter runs again at that moment.
- Limit: a limit order at the entry.
Filters before any order: post age, price drift past the entry, spread, trading hours, high-impact news, daily loss lock, max open trades, max trades per day, free margin.
How it manages the trade
- Split: one position per signal, or up to 6 (TP1, TP2 ... plus the last TP as a runner). The default is 2: TP1 and a runner.
- Two-stage break-even guard: when the profit reaches stage 1 (default 20% of the SL distance), the stop moves to entry. At stage 2 (default 40%), it moves to entry + 10%. Values can be set in % of the SL, in pips, or in money per lot. A stop is never loosened.
- TP ladder: when TP1 fills, the stop of the remaining positions moves past the entry into a small locked profit. When TP2 fills, the stop moves to TP1, and so on.
- Re-entry (off by default): after the guard's stop closes a trade at break-even, SignalGuard can place a stop order at the entry again, so the trade reopens only if the price returns. You set the maximum number of re-entries and how long the watch lasts. Each re-entry is a new trade with its full SL risk.
Account safety
- Daily loss limit in % or money, measured from the account equity at the start of the server day (every trade on the account counts). When it is reached, SignalGuard closes its trades, deletes its orders and pauses until the next day.
- Friday close at your time, and an optional daily close window.
- News pause from the built-in MT5 economic calendar: block new entries, or also move stops to entry, or also close.
- SignalGuard only touches positions and orders with its own magic number. Your manual trades and other EAs are left alone.
- Removing the EA from the chart deletes its pending orders. Open positions keep their SL and TP at the broker.
Panel and alerts
The panel shows each source (OK with the last post id, or the error), the last 5 signals with their result or skip reason, open positions by guard stage, pending orders, re-entry watches, and today's P/L against your limit. Buttons: PAUSE / RESUME (open trades stay protected) and CLOSE ALL (asks first). Alerts and push notifications to the MetaTrader app are optional.
Setup in 4 steps
- Attach SignalGuard to one chart. Its symbol is used for posts that name none.
- Tools > Options > Expert Advisors: tick "Allow algorithmic trading" and "Allow WebRequest for listed URL", then add https://t.me and https://api.telegram.org. If a URL is missing, the Experts log says which one to add.
- Enter your channel names (or your bot token and chat id) and your lot or risk %.
- Keep the terminal running. A VPS keeps it running when your computer is off.
Honest limits
- Private channels cannot be read through the web preview. Telegram allows that only with a user login. For your own private channel or group, use the bot route.
- The results depend on the channel. SignalGuard copies and manages the calls; it does not make a bad channel profitable.
- Copying takes time: the read interval (15 s by default) plus the confirm wait. The price at entry can differ from the price in the post. The drift filter skips calls that ran too far.
- Stops and closes are market operations. There is no protection against slippage, gaps or price spikes.
- A hedging account is recommended. On a netting account SignalGuard uses one position per signal and skips a new signal on a symbol it already holds.
- In the Strategy Tester there is no WebRequest and no news calendar. There SignalGuard replays the file Common\Files\SignalGuard\signals.csv, or, without it, places a built-in demo call every 3 hours so you can watch the guard and the ladder work.
Inputs
| Group | Inputs |
| Signal source | InpSource (public channels / your bot / replay file), InpChannels, InpBotToken, InpBotChats, InpBotSenders, InpPollSec, InpFileName |
| Parsing | InpAliases (e.g. NAS100=USTEC), InpDefaultSymbol, InpRangeMode, InpPipSize (0 = auto), InpMaxSLPips, InpFollowUpdates |
| Entry | InpEntryMode (market / confirm / limit), InpWaitSec, InpPendingMin, InpMaxAgeSec, InpMaxDriftPips, InpMaxSpread, InpHours |
| Position size | InpLotMode (fixed / risk %), InpLot, InpRiskPct, InpDefaultSLPips, InpMaxSplit, InpSingleTP |
| Break-even guard | InpGuard, InpGuardUnit (% of SL / pips / money), InpG1Trigger, InpG1Lock, InpG2Trigger, InpG2Lock |
| TP ladder | InpLadder, InpLadderLock |
| Re-entry | InpReentry (off), InpReentryMax, InpReentrySLPips, InpReentryMin |
| Account safety | InpDailyLossPct, InpDailyLossMoney, InpMaxOpen, InpMaxTradesDay, InpMinFreeMargin, InpFridayClose, InpDailyClose, InpDailyResume, InpNewsMode, InpNewsMin |
| Other | InpMagic, InpSlippage, InpAlerts, InpPush, InpNotifyIgnored, InpFailAlert, InpDarkChart |
Questions before buying: send me a message on MQL5.
