MT5 Telegram Copier

How to Backtest Telegram Signals Before You Copy Them

Last updated 13 Oct 20267 min readBy the MT5 Telegram Copier team

To backtest a Telegram signal channel, export its message history with Telegram Desktop, turn every signal into a row in a trade list (time, symbol, direction, entry, stop, targets), and check each row against historical prices to see which level was hit first. Then forward test the same channel on a demo account with a copier for a few weeks, because a backtest can only measure the signals that are still in the channel.

That is the catch. An export shows what the admin left behind, and deleted losers are invisible to it. Treat the backtest as a quick filter and the demo forward test as the real exam.

Step 1: export the channel history from Telegram Desktop

Telegram's phone apps can't export chats. Telegram Desktop can, on Windows, Mac and Linux.

  1. Open the channel in Telegram Desktop.
  2. Click the three-dot menu at the top right and choose Export chat history.
  3. Untick photos, videos and files unless the channel posts results as images. Text is all you need.
  4. Set the format to Machine-readable JSON. HTML is easier to read by eye but harder to process.
  5. Pick a date range. Three to six months is a reasonable start, and 100 or more signals is better than 30.

You get a result.json file. Each message has an id, a date, the text, and a flag if it was edited. Replies carry a reply_to_message_id, which matters later, because "close now" or "TP1 hit" messages usually reply to the signal they belong to.

Private channels export the same way if you are a member, unless the admin has restricted saving content. Then only the forward test is left.

Step 2: turn messages into a trade list

Open the JSON in a spreadsheet tool, or run a few lines of script over it, and keep only the messages that are real signals. A usable signal has a symbol, a direction, a stop and at least one target, like these:

XAUUSD BUY NOW 3645-3648 SL 3638 TP1 3652 TP2 3656 TP3 3665

Give each signal its own row:

Column Example Why you need it
Time (UTC) 2026-08-12 13:31 To find the right candle
Symbol XAUUSD Map GOLD, XAU and so on to one name
Side BUY
Entry low / high 3645 / 3648 Zones need both edges
Order type market / limit A limit may never fill
SL 3638
TP1, TP2, TP3 3652, 3656, 3665 One column per target
Edited? yes / no From the export's edit flag
Follow-ups "close half" at 14:02 Replies that changed the trade

Messages like "setup forming, stay tuned" are not trades. Leave them out, but count them. Lots of vague calls that only become "signals" once they work is a warning sign.

Watch the time zone. The export's date field is in your computer's local time, while date_unixtime is UTC. Your price data is probably in UTC or broker server time. Convert one of them, or every trade lands on the wrong candle.

Step 3: replay each signal against historical prices

For every row, ask one question: after the signal time, which came first, the stop or the target?

The simplest way is a spreadsheet next to one-minute price data for the symbol. Free sources include the history download in MT5 itself (View, Symbols, Bars tab, pick M1 and request the range) and several public tick and bar archives. Use one-minute bars at the least. On hourly bars a gold candle can touch both the stop and TP1, and you can't tell which happened first.

Work through each trade:

  1. Find the first bar at or after the signal time.
  2. For a market signal, the entry is that bar's open plus spread. For a zone, decide on a rule in advance (the worse edge, the middle, or the first touch) and stick to it.
  3. For a limit or stop order, check whether price ever reached the entry before the stop level. If it didn't, the trade never opened.
  4. Walk forward bar by bar until either the SL or a TP is touched.
  5. Record the result in pips or price, then convert to R (result divided by the stop distance). R lets you compare a 40-pip gold stop with a 15-pip EURUSD stop.

With several targets, decide how you would trade them. One position per TP, split equally, gives a different result than closing everything at TP1. If the channel moves the stop to entry after TP1, apply that too. The multiple TP guide shows how the main splits work.

Can I use the MT5 Strategy Tester for this?

Only with extra work. The Strategy Tester runs Expert Advisors, not Telegram messages, so you would need an EA that reads your trade list from a file and places each order at its time. With "Every tick based on real ticks" you get real spreads. It is a programming job, though, and for 100 signals a spreadsheet is faster.

Step 4: adjust for what the export hides

Raw backtest numbers flatter almost every channel. Correct for these before you trust the result:

  • Deleted losers. Compare the message ids in the export. Telegram ids in a channel go up by one for each post, so gaps in the sequence mean deleted messages. A few gaps are normal. Gaps right after a signal, before its result, are a warning.
  • Edited signals. The export flags edits but keeps only the final text. If many signals were edited, you are testing the corrected version, not what subscribers received.
  • Spread. Add your broker's typical spread to every entry, and more around news. On gold, a 3 to 5 pip spread on a 30 pip stop is a big share of the risk.
  • Slippage and delay. You will fill after the admin. Add a few pips to market entries, or shift the entry to the bar after the signal.
  • Entry ranges. A zone like 3645-3648 is wide on gold. Use the worse edge if you want a pessimistic test.
  • Missed targets posted later. Some channels post the SL and TP a minute after the entry. Use the time the levels appeared, not the time of the first message.
Backtest result Read it as
Positive after spread and slippage, few id gaps Worth a demo forward test
Positive before costs, flat or negative after Edge too thin to copy
Strong result, many gaps after signals History has been cleaned
Most "wins" closed by a manual "close now" Results depend on timing you may not get

Step 5: forward test on demo with the copier

A backtest tells you what the remaining history was worth. A forward test tells you what you would actually get, with your broker's prices and real delays, and with the messages as they arrive.

Point the copier at the channel on a demo account at the same broker you plan to trade live. In MT5 Telegram Copier, each signal shows up in the live feed with its time the moment it arrives, along with every trade placed and every signal skipped and the reason. That record is fixed, so a signal deleted from the channel an hour later still shows in your feed and in your demo trade history.

Two settings make the test more honest:

  • Turn off "When a signal is edited, update its SL and TPs" on the demo account if you want to see how the original signals performed. Leave it on if you want to measure what you would get in practice.
  • Keep "Skip signals without a stop-loss" on, and count how many signals get skipped for it.

Before the test starts, paste a handful of real messages from the export into the "test a message" box. It shows what the parser reads and what it would trade, without placing anything, so format surprises turn up before the first live signal does.

Run it for at least four weeks or 40 signals. Then compare three numbers: the backtest's R per trade, the demo's R per trade, and what the channel claims. The checklist for vetting a channel covers how to read that comparison and when to walk away.

Neither test predicts the next month. When the numbers pass, start live at a small risk per trade, as in the risk settings guide, and raise it only after live results look like the demo.

Backtesting signals FAQ

Can a Telegram signal copier backtest a channel for me?

Ours doesn't. It copies new messages as they arrive and doesn't replay old ones. Backtesting is a separate job you do with an export and price data, and the copier comes in afterwards for the demo forward test.

How many signals do I need for a meaningful backtest?

At least 50, ideally 100 or more, spread over different market conditions. With 20 signals, one lucky week can make a bad channel look good.

Can I export a private Telegram channel?

Yes, if your account is a member and the admin hasn't restricted saving content. Telegram Desktop's export works the same way for private channels.

Should I backtest in pips or in money?

Use R, the result divided by the stop distance. Pips mislead when stop sizes vary, and money depends on your lot sizing. Convert to money only at the end, using the risk per trade you plan to use.

Why are my demo results worse than my backtest?

Usually spread, delay and entry rules. Your demo fills after the admin, pays the real spread, and takes zone entries at real prices. A small steady gap is normal. A large gap points to signals that were edited or deleted in the history you tested.

Copy your first channel today

€24.99 a month for one MT5 account, €24.99 for each extra. Nothing to install. Cancel from Whop whenever you want.

Get the copier €24.99/mo