Telegram to MT4/MT5 Copier: Frequently Asked Questions (FAQ) + Signal Examples & Quick Setup
How to use this article
1) Skim the question list first.
2) Jump to the matching numbered answer below (Ctrl+F for “Q3”, “A3”, etc.).
3) Use a test Telegram channel to send 5–10 real messages and lock your keyword lists.
1) Core copier logic (most important part)
The copier does not “guess” your signal. It parses text using the keyword lists from EA Inputs (stored in Keywords files) and extracts numbers after those keywords.
The 4 core blocks you must configure:
- Order type / direction — BUY/SELL and optional pending types (BUY LIMIT, SELL STOP, etc.)
- Entry price — keyword(s) that are followed by a number (or a range)
- Stop Loss — SL keywords
- Take Profit — TP keywords (TP / TP1 / Target, etc.)
Critical rule for Entry keywords:
Put into EntryPointKeywords only words that are normally followed by a number: enter, entry, at, @, price, etc.
Do NOT put generic words like now there (Entry expects a number).
Market vs Pending (real logic):
- Market happens when entry is MARKET (no entry price detected) or when ForceMarketExecution = true.
- If an entry price is detected, the EA compares it with the current price:
- If the distance is within MaxSlippage → it executes as market (BUY/SELL).
- If the distance exceeds MaxSlippage → it converts to a pending order (LIMIT/STOP) when HandleSlippage = Pending.
- If HandleSlippage = Ignore → it skips such signals.
- Explicit keywords like BUY LIMIT, SELL STOP set the pending type directly.
TP logic (important):
The EA opens one trade per copied TP (staggered exits by design). The number of trades is limited by Number of TPs to copy.
Recommendation: remove default keywords and keep only what your channel actually uses.
FAQ
2) Question list
- Q1. Does “BUY NOW / SELL NOW” force instant market execution?
- Q2. Why does it open instantly even if the message contains an entry price?
- Q3. How do I copy multiple TP levels (TP1/TP2/TP3/TP4) correctly?
- Q4. Will it open multiple orders (one per TP)?
- Q5. What does “Number of TPs to copy = 0” mean?
- Q6. Does it support partial close / staggered exits?
- Q7. What do patterns like SL[X] -> / TP[X] -> mean?
- Q8. Do spaces after commas in keyword lists matter?
- Q9. Can I use one .set across brokers with different symbol suffixes?
- Q10. What does “Invalid stops” mean?
- Q11. How should I attach logs so the issue can be reproduced?
- Q12. Why does it place pending orders instead of market (or vice versa)?
- Q 13: The EA writes in logs “Could not find any match for GOLD in symbol list”. What does it mean?
FAQ
3) Answers
A1 (Q1).
“BUY NOW / SELL NOW” does NOT force market by itself.
“BUY NOW” is just text. It can help detect the direction (BUY/SELL) if you include it in Buy/Sell keywords, but market vs pending is decided mainly by: (1) whether an entry price is detected, (2) ForceMarketExecution, (3) MaxSlippage + HandleSlippage.
Do: add buy now / sell now as direction keywords if your channel uses them.
Don’t: put the word now into EntryPointKeywords (Entry expects a number after it).
A2 (Q2).
Why instant execution when an entry price exists?
If an entry price is detected, the EA checks how far it is from the current price:
- If the distance is within MaxSlippage → it executes as a market trade.
- If the distance exceeds MaxSlippage → it becomes a pending order (when HandleSlippage = Pending).
- Reduce MaxSlippage, or
- Use explicit order types: BUY LIMIT, BUY STOP, SELL LIMIT, SELL STOP, or
- Disable forced market (ForceMarketExecution = false).
A3 (Q3).
Multiple TPs — correct formats.
The copier can detect multiple TP levels in two common styles:
Style A (each TP on its own line):
TP1 4970
TP2 4985
TP3 4997
TP4 5047
Style B (one line, many prices after one TP marker):
TP 4970, 4985, 4997, 5047
Important: Your TakeProfitKeywords must actually match your style. Using tp usually matches TP1/TP2 as well. If your channel uses “Target”, include target too.
Also check Number of TPs to copy: if you have 4 TP prices but the setting is 1, you will get only one trade.
A4 (Q4).
Multiple orders per TP.
Yes. The EA opens one separate trade per copied TP (staggered exits by design). So 4 TP levels typically = 4 trades (unless limited by “Number of TPs to copy”, TP filters, or rejection rules).
A5 (Q5). “Number of TPs to copy = 0”.
- 0 = copy all detected TP levels.
- > 0 = copy up to that number (e.g., 2 → TP1 and TP2 only).
- < 0 = copy none (0 trades from TP list).
A6 (Q6).
Partial close / staggered exits.
- Staggered exits: already built-in because the EA opens one trade per TP.
- Partial close: supported via Telegram commands if EnableOrderProcessingCommands = true:
- CLOSE HALF → closes 50% of each matched position
- CLOSE PARTIAL → closes PartialClosePercent% of each matched position
A7 (Q7).
SL[X] ->, TP[X] -> templates.
These are modification templates that allow changing SL/TP by index. [X] means “digits”, e.g.:
- SL1 -> 4930
- TP2 -> 4985
- TP3 to 4997
A8 (Q8).
Spaces after commas in keyword lists.
Spaces are typically fine (items are trimmed), but keep one consistent style: comma-separated keywords like tp,take profit,target.
A9 (Q9).
Broker symbol suffixes.
Yes, you can use one setup across brokers:
- Use BrokerSuffix / BrokerPrefix, or
- Use CustomSymbolMatches (aliases), e.g. XAU USD=XAUUSD.
A10 (Q10).
“Invalid stops”.
This is a broker/server rejection, not a “copier bug”. Common reasons:
- SL/TP too close to the current price (StopsLevel / FreezeLevel)
- SL on the wrong side (e.g., BUY with SL above entry)
- Wrong unit assumption (Price vs Points vs Pips), wrong digits/rounding
- Entry executed differently than expected (market vs pending), making SL/TP invalid for that order type
A11 (Q11).
How to attach logs properly.
To reproduce the issue, provide:
- Experts + Journal logs for the exact time of the problem
- The exact Telegram message text (copy/paste)
- Your chart’s files from Common Files:
- Keywords/<chart_id>.json
- Symbols/<chart_id>.json
- Signals/<chart_id>.json (the last parsed signal)
A12 (Q12).
Pending vs market behavior (summary).
- No entry price detected → MARKET (entry_price = MARKET)
- Entry price detected:
- Within MaxSlippage → MARKET
- Beyond MaxSlippage → PENDING (if HandleSlippage = Pending)
- Beyond MaxSlippage → SKIP (if HandleSlippage = Ignore)
- ForceMarketExecution = true → always MARKET
- BUY LIMIT / SELL STOP keywords → explicit pending type
A 13 (Q13):
This means the copier cannot detect a trading symbol from the Telegram message. The parser found the text GOLD in the signal, but it did not find a matching symbol in your configured symbol list / symbol mappings.
How to fix: add a symbol alias (mapping) so the signal name matches your broker’s real instrument name.
Examples:
- If your Telegram signal uses GOLD, but your broker symbol is XAUUSD, add:
GOLD=XAUUSD
- If your Telegram signal uses GOLD, but your broker symbol is XAUUSD.S (or any other suffix/prefix), add:
GOLD=XAUUSD.S
Tip: The right side must be exactly the symbol name as it appears in your broker’s Market Watch (including suffixes like “.S”, “-VIP”, etc.).

Examples Library: Signal Examples & Quick Setup
1) Find the example that matches your channel format.
2) Copy the keywords from the “Quick setup” notes.
3) Test with 3–5 messages before using real money.
Example 1 — Simple Market signal (no entry price)
Signal: XAUUSD BUY NOW SL 4925 TP 4970
Expected: Market BUY, set SL and TP.
Quick setup:
- BuyKeywords: buy,buy now
- SellKeywords: sell,sell now
- StopLossKeywords: sl,stop loss
- TakeProfitKeywords: tp,take profit,target
Example 2 — Entry price provided (market or pending depends on MaxSlippage)
Signal: BUY XAUUSD Enter 4960 SL 4925 TP 4970
Expected:
If 4960 is close enough to the current price (within MaxSlippage) → market execution.
If far away → pending order (HandleSlippage = Pending).
Quick setup:
- EntryPointKeywords: enter,entry,at,@
Example 3 — Guaranteed pending (explicit order type)
Signal: BUY LIMIT XAUUSD at 4960 SL 4925 TP 4970
Expected: Pending BUY LIMIT at 4960.
Quick setup:
- BuyLimitKeywords: buy limit,buylimit
- EntryPointKeywords: at,enter,entry,@
Example 4 — Multiple TPs (separate lines)
BUY XAUUSD Enter 4960 SL 4925 TP1 4970 TP2 4985 TP3 4997 TP4 5047
Expected: 4 TP levels detected → up to 4 trades (one per TP) depending on “Number of TPs to copy”.
Quick setup:
- TakeProfitKeywords: tp,take profit,target
- Number of TPs to copy: 0 (all) or 4 (limit to 4)
Example 5 — Multiple TPs in one line (one TP marker, many prices)
Signal: BUY XAUUSD Enter 4960 SL 4925 TP 4970, 4985, 4997, 5047
Expected: TP list extracted from one line → multiple trades (one per copied TP).
Example 6 — Entry range / zone
Signal: BUY XAUUSD Entry 4960-4955 SL 4925 TP1 4970 TP2 4985
Expected: Entry price picked by EntryRangeMode (First/Average/Second). If EntriesInZoneOnly = true, it copies only when price is inside the zone.
Example 7 — Symbol alias (XAU USD vs XAUUSD)
Signal: XAU USD BUY NOW SL 4925 TP 4970
Fix: add alias in CustomSymbolMatches:
XAU USD=XAUUSD
Example 8 — Broker suffix (XAUUSD-VIP)
Signal: XAUUSD BUY
Broker symbol: XAUUSD-VIP
Fix: set BrokerSuffix = -VIP (or use CustomSymbolMatches).
Example 9 — Breakeven command
Signal: SL TO ENTRY
Expected: Move SL to breakeven (if keywords match and commands are enabled).
Quick setup:
- EnableOrderProcessingCommands: true
- BreakevenKeywords: sl to entry,breakeven,move to breakeven
Best practice: send this as a reply to the original entry signal so the copier targets the correct trade group.
Example 10 — Partial close commands
Signals:
CLOSE HALF CLOSE PARTIAL
Expected: Close 50% (half) or PartialClosePercent% (partial) of each matched position.
Quick setup:
- CloseHalfKeywords: close half
- ClosePartialKeywords: close partial,partial close
- PartialClosePercent: e.g. 70
Example 11 — Cancel pending / cancel all pending
Signals:
cancel order cancel all pending
Expected: Cancel pending orders (single/all depending on command).
Quick setup:
- CancelOrderKeywords: cancel order,order canceled
- CancelAllPendingKeywords: cancel all pending
Example 12 — Updating SL/TP (reply vs no reply)
Best option (reply): reply to the original signal:
Update Stoploss 4930 Update TP2 4985
No-reply option: only recommended if you understand ambiguity and you enabled AcceptModificationsWithoutDirectReply and set a correct ChannelTradingPair.
Final tip: Most “it doesn’t copy correctly” issues are solved by keeping only the keywords your channel actually uses and removing everything else.
⚠️THIS ARTICLE IS UNDER CHECKING, THERE MAY BE INACCURACIES.


