# How a signal is read

How a message in your Telegram group becomes a trade in MetaTrader 5: which messages are read, what the AI understands in them, what is left alone, how follow-up messages find their trade, and what happens to late messages, duplicates, edited posts and messages that name no instrument.

## From message to trade

Every new message in a group you follow goes through the same steps:

1. **It arrives.** Telegram delivers the message to the app, where the app runs, through your own Telegram account, as it would to your phone.
2. **The app checks it on your computer.** A quick filter keeps chat away from the reading. Messages that cannot be a trade are set aside here.
3. **Its age is checked.** A message older than "Max signal age (min)" is never traded.
4. **The AI reads it**, in any language. It finds one or more signals, or an instruction about a trade already open (a follow-up), or nothing.
5. **Each signal goes through the listener and your rules**: the listener's mode, the duplicate check, your sizing and limits, the symbols you allow and the listener's entry rules.
6. **The order goes to MetaTrader 5**, sized by your settings. The signal keeps a record of everything that happened, its story (see https://relay2trade.com/help/the-signal-story.md).

The median time from a message reaching the app to the order being sent is 0.6 seconds, measured over more than 1,300 traded signals. Nearly all of it is the AI reading the message. Telegram's delivery and your broker's execution come on top.

## Which messages are read

Before a message is sent to be read, the app checks it where it runs. It is read when it has a digit and either:

- a trading word in one of about 25 languages: in English buy, sell, long, short, entry, target, tgt, stop, runner, close, cancel, breakeven, tp and sl; the same kinds of words in Portuguese, Spanish, French, German, Russian, Arabic, Turkish, Vietnamese, Hindi, Chinese, Japanese and more;
- a direction written onto the instrument, such as "XAUUSDBUY";
- an instrument with two prices, such as "XAUUSD 2405 2412".

An instruction without a number ("close now", "SL to BE", "cancel") is read while that group has a trade open or an order waiting, the only time it can change something.

A short call with no number at all ("GOLD BUY NOW", "SELL EURUSD") is read only on a listener with "Read calls without a number" switched on. It then trades at market by your rules. "Gold looks strong today" names no side and "buy now guys" names no instrument, so neither is ever read.

What else is left unread:

- a picture, video, voice message, sticker, file, poll or paid post with no text (a photo's caption is text and is read);
- a message in a topic the listener does not read;
- a message older than "Max signal age (min)" when it reaches the app.

Your own messages in the group are read like anyone's. Messages the filter set aside never count toward your daily signals. To see them, open Signals and switch on "Every message": they show as "skipped, not read", next to "read, not a signal", "too old, not read", "other topic" and "no text". They are kept for a week. In the Desk, a set-aside message has "Read it anyway": it counts as one reading of your day, and what is found waits for your approval. You can have ten set-aside messages read an hour.

## What the app understands

A signal is an explicit call to enter a trade: an instrument plus buy or sell (long or short), or an instrument with a stop-loss and a take-profit. "long GOLD", "buy EURUSD sl 1.0850" and "GOLD NOW sl 4127 tp 4141" all count.

- **Entry.** One price, or a zone such as "4418-4422", written in either order ("Zona 4289 - 4283" and "NOW 4418)4422" are read too). With no entry price the trade goes in at market. On a listener with "Entry mode" Market, a zone's middle is the entry the checks measure from; on a Limit listener, "Where in an entry range" picks the price the order waits at.
- **Take-profits.** Any number of them. A take-profit that says to hold ("TP4: hold", "runner", "TP OPEN", "Runner — no limit", "Menține") becomes a runner: a part of the trade with no take-profit. A target that calls itself the runner but gives a price ("TP4 (RUNNER): 4434.73") is an ordinary take-profit. A signal with no take-profit at all is one runner.
- **Stop-loss and take-profits as a price, pips or percent.** "sl 100 pips" and "sl 1.5%" are turned into a price from the signal's entry, or from the live price when it gave none. 30 pips on a buy at EURUSD 1.1000 is 1.0970; a 1% stop on a buy at 84 000 is 83 160.
- **Numbers written loosely.** "4,349.841" is 4349.841 and "1,0850" is 1.0850.
- **Instrument names.** The words groups use are normalised: GOLD becomes XAUUSD, US100, USTEC and NASDAQ mean NAS100, USOIL and WTI mean XTIUSD. Your broker's own spelling, suffix included (XAUUSD.s), is matched by itself. A broker that uses another name altogether (DJ30 for US30) is taught once, see https://relay2trade.com/help/why-a-signal-was-skipped.md.
- **Market, limit and stop orders.** "BUY LIMIT" or "SELL LIMIT" waits for its price on a listener with "Entry mode" set to "Limit (at the entry or better)"; on a Market listener it enters now and the story notes it. "BUY STOP" and "SELL STOP" become stop orders at your broker on a listener with "Stop orders" switched on; with it off they are read like any other entry. "SELL … STOP LOSS 2420" is a stop-loss, not a stop order. More: https://relay2trade.com/help/entry-and-pending-orders.md.
- **Several trades in one message.** Two separate trades, for example a buy stop and a sell stop, become two signals, each sized on its own. The same trade repeated for another broker is listed once. The story of each says "This message also became" and links the others.
- **Direction.** When the stop-loss, the take-profits and the entry all point the same way, they set the direction, even over a buy or sell word that says the opposite. When they do not agree, or the message has no stop-loss or no take-profit price, the word decides. An emoji, a colour or a header never decides it.
- **A second entry.** "MORE BUY 4235" after a signal is read as an entry zone when both prices fit the signal's levels. When they do not fit, the signal is not traded and says why: "Two entries … that do not fit its stop-loss and take-profits together: it is not clear what the message wants, so it was not traded."
- **No stop-loss.** A signal without one gets the default stop for its kind of instrument, or is skipped when "Require stop-loss" is on (see https://relay2trade.com/help/stops-and-follow-ups.md).

In a signal's story, "What the AI read, as data" opens to show exactly what was read.

## What is left alone

A message becomes a trade only when it calls for one. These are reports or chat, and are never traded, even when they name an instrument, a direction and a price:

- results and status: "GOLD BUY TP5 HIT 150 PIPS", "TP1 hit", "SL hit", "closed", "running", "+40 pips";
- recaps, lessons, price notes, analysis without a call, questions and promotions;
- ads and teasers that give no target and point somewhere else ("target will be posted here 👆", "SL & TP 👇", a link, "join").

An unclear message is treated as not a signal: a skipped trade costs nothing, a wrong trade costs money. A message that looks like a signal but whose side or instrument cannot be told shows as "Could not read": "looked like a signal, but whether to buy or sell could not be told — not traded" or "… the instrument could not be told — not traded". The app never guesses a direction or an instrument.

## Checks on what was read

Some checks catch a reading that went wrong before it becomes an order:

- An entry, stop-loss or take-profit more than double, or less than half, the market price is refused: "too far to be a real level, so it was most likely read wrong (a decimal comma, or another instrument). Nothing was placed." This holds whatever your settings say.
- A stop-loss many times farther than the farthest take-profit is left out as a likely misread, and the story says so.
- A take-profit on the wrong side of the entry is a typo and is left out; the trade takes the others. "Max jump between take-profits" leaves out a target far out of line with the rest.
- In the Desk, a doubtful reading shows "The app doubts how it read this message: check the levels below."

When a message was read wrong, report it with "Read wrong?" on the signal (see https://relay2trade.com/help/the-signal-story.md).

## The listener's usual instrument

Some groups trade one instrument and never write it: "I'm buying - 4134". Set "What does this group usually trade?" on the listener (under "Group and mode"), picked from your broker's own list.

- A message that names no instrument is then traded on that one, and the story says "The message names no instrument: XAUUSD.s was used, what this listener's group usually trades."
- A message that names its instrument is always traded on the one it names.
- With the setting empty, such a message is not traded: "It names no instrument, so it was not traded."
- "Allowed symbols" and the listener's "Symbols" still decide.

## Follow-up messages

After a signal, groups write about it again: "close it", "SL to entry", "close half", "move TP to 2450", "cancel the pending", "trail your SL 100 pips behind the price". The app reads each of these and finds the trade the signal opened. Several instructions in one message are each read: "TP1 hit, close 20% and move SL to breakeven" is two instructions (close part, breakeven) and one report. Advice counts ("consider closing 20%"); a report of something already done ("closed at breakeven") does not. The app knows these words in about 25 languages, with or without diacritics: "inchide", "muta SL la intrare", "fechar", "cerramos", "đóng lệnh", "закрываем", "平仓" and more.

### What is followed

You decide, in Settings under "The group's messages after a signal", for every group or for one listener as a setting of its own. Both settings start on "Ignore them":

- **"Exits and stop moves"**: close the trade, cancel a waiting order, move the stop to the entry or closer to the price, and trail the stop. Worth following for a group you trust to look after its trades.
- **"Partial closes and target moves"**: close part of the trade, move the take-profit. Your own take-profit settings already manage the profit, so follow these only for a group whose management you trust more.

An instruction you ignore is still noted on the trade, marked not followed, and nothing changes.

### How a follow-up finds its trade

Only the trades of the listener that read the message are candidates, in this order:

1. When the group replies to its own signal message, that signal's trades are used. This is the surest link.
2. Otherwise, when the message names a symbol, the app acts when exactly one open trade of that listener is on that symbol.
3. When the message names nothing, the app acts when that listener has exactly one trade open.

In every other case it changes nothing and says so: "2 open trades on XAUUSD from this listener — not guessing which one, nothing was changed."

### What each instruction does

- **Stop to entry (breakeven)** moves the stop to the entry the signal stated; for a signal that entered at market, to the price each trade got in at.
- **Move the stop** to a stated price, only when that tightens it. A stop is never moved further away: "Refused: a stop at … would risk more on position … than the trade was sized for."
- A stop the price is already past (breakeven on a trade in loss) stays where it is, because it would close the trade at once.
- When the broker does not yet allow a stop that close to the price, for example right after the fill, the stop goes as close as the broker allows and the note says where.
- **Move the target** to a stated price. A target too close to the price for the broker is not moved.
- **Close** closes the signal's open trades at market and cancels its orders still waiting. **Cancel** removes a limit or stop order that has not filled.
- **Close part** ("close half", "close 30%") closes whole trades first, the one nearest its take-profit first and the runner last, then part of the next. It never closes more than asked, and a share below the broker's smallest lot is not closed. Closing part of one single position needs the trading bridge in MetaTrader to be up to date: restart MetaTrader 5 once after an app update.
- **Trail** ("trail your SL 100 pips behind the price") makes the stop follow the price at that distance from then on. It only moves closer, carries on after the app restarts, and on a runner replaces the runner's own distance.
- **A move given only in pips** ("SL 20 pips", "move stop 20 pips into profit") is not followed. Moving a stop by a distance is what your "Trailing stop" and "Runners" settings do.

A listener on Watch records follow-ups and changes nothing. A listener on Manual applies them without asking. Follow-ups never count toward your daily signals, and they need MetaTrader connected to change anything. A follow-up older than "Max signal age (min)" when it reaches the app is not applied.

Each follow-up shows as a "follow-up" line in Activity and in the signal's story, and the bell lists every instruction with its outcome, for example "The group's follow-up — move the stop to entry: applied to 1 trade; close part of it: not followed: partial closes and target moves are left to your settings".

## Late messages, and messages posted while the app was away

"Max signal age (min)" is in Settings under "Repeated, late and opposite signals": 5 minutes by default, from 1 to 60. A message older than that when it reaches the app is never traded.

- **Posted while the app was away** (closed, the computer asleep, no internet, Telegram reconnecting): when the app is back, Telegram hands over what was posted. A message still within the limit is read and waits for your approval for 10 minutes, whatever the listener's mode, because the price may have moved while nobody was watching. Its card starts "Posted about 4 min before the app picked it up". A listener on Watch stays on Watch. Older messages are not read, not traded and do not count toward your daily signals.
- **Delivered late by Telegram while the app was connected**: a message over the limit is listed as "stale" with the delay, for example "posted at 10:02; Telegram delivered it at 10:09, while the app was connected — 7 minutes late, over the Max signal age of 5 minutes, so it was not traded". The Signals filter for these is "Too old".

The age is measured on relay2trade.com's clock, so a wrong Windows clock never turns fresh messages into old ones. The app tells you once in the bell when your computer's clock is 2 minutes or more off.

A longer "Max signal age" catches more after an outage, and also lets a message that arrived late be traded, so keep "Max entry deviation" set on the listener. For signals around the clock, run the app on a VPS (see https://relay2trade.com/help/where-the-app-runs.md).

## Duplicates

Every new signal is compared with the signals placed in the last minutes, across every listener of the profile. It is a duplicate when the symbol and side are the same, both have an entry or neither does, both have a stop or neither does, they have as many take-profits, and every level is within the tolerance.

- On an Auto listener a duplicate is not traded. It waits for your approval for 10 minutes, labelled "Duplicate — you already received this signal" (an exact match) or "Possible duplicate — very close to one you just received", with a link to the original.
- On Manual and Watch listeners it is only marked.
- A duplicate that was not traded is handed back to your daily signals.
- Signals that were skipped or only watched are not remembered, so they never make a later one a duplicate. A sell is never a duplicate of a buy.

The settings are in "Repeated, late and opposite signals": "Duplicate window (min)" (5 by default; "Off" turns the check off for the whole profile) and "Duplicate tolerance (pips)" (10 by default; "Exact match only" checks exact repeats only). On gold, 10 pips is 1.00.

## Opposite-direction signals

When a group posts a sell while its buys on the same symbol are still open, "Opposite-direction signals" decides, for every group or for one listener: "Open it beside them" (the default), "Ask me" (it waits for your approval), "Skip it", "Close them, then trade it", or "Close them only" (the signal is read as an exit). The two closing choices close only for a signal that would trade, so a misread message never closes anything. Only that listener's own trades count.

## Edited messages

Each message is read once, when it is posted. If the group later edits the post, for example to correct the stop-loss, the app keeps the first reading. Open the signal's story to see the levels that were read, and adjust the trade in MetaTrader if needed.

## Your daily signals

Your plan sets how many signals the app acts on in a day: 10 on the 7-day plan, 15 on Basic, 35 on Advanced and 50 on Pro. Level 30 adds 10 a day, and cards can add more.

- A message counts once, when it is read as at least one real signal, however many trades it opens. Chat, follow-ups, failed readings, dry runs and messages that were too old never count. Signals read on Watch count.
- A signal is handed back when nothing came of it: it was a duplicate, MetaTrader refused every order, there was an error on our side, trading was switched off, or no MetaTrader was connected. The hand-back works while "Remote control" and "Sync activity" are both on (Settings → "Application" → "Remote control & sync"), which is the default.
- The day is the UTC day.
- The app's Dashboard status bar shows the count, for example "8/15 signals today", in red once the limit is reached. A new signal then gets "Signal not processed: today's limit of 15 signals is reached." (with your own number). In the Desk, Account → "Plan & billing" → "What your plan allows" shows how many are used.

## If something goes wrong

- **A message from the group never shows in the app.** Open Signals and switch on "Every message": the filter set it aside, it was read as not a signal, or it is too old. Check also that the listener is switched on, that it reads that topic, and that the message was not an edit.
- **The group said "close it" and nothing happened.** Read the "follow-up" line in Activity. Most often "Exits and stop moves" is on "Ignore them", nothing of that group was open, or several trades matched.
- **The group said "close 20%" and nothing closed.** "Partial closes and target moves" is on "Ignore them", the default. Set it to "Follow them" for that listener or the profile.
- **The group said "SL to breakeven" and the stop stayed.** The trade was in loss, so a stop at the entry would have closed it at once, or the broker would not accept a stop that close yet. Activity says which.
- **A signal waits for my approval though the listener is on Auto.** It was posted while the app was away, it looks like a duplicate, "Max signals open at once" is full, or "Opposite-direction signals" is set to "Ask me". The card says which.
- **The channel edited its post and the app kept the old stop.** Each message is read once. Move the stop by hand in MetaTrader.
- **Yesterday's signals are not in the list.** Messages older than "Max signal age (min)" when the app came back are not read, so old calls are never traded at today's prices.
- **The message was read wrong.** Use "Read wrong?" on the signal; a person reviews each report.
