Telegram to MT4/MT5 Copier: Frequently Asked Questions (FAQ) + Signal Examples & Quick Setup

Telegram to MT4/MT5 Copier: Frequently Asked Questions (FAQ) + Signal Examples & Quick Setup

10 February 2026, 12:58
Sergey Batudayev
0
240

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

  1. Q1. Does “BUY NOW / SELL NOW” force instant market execution?
  2. Q2. Why does it open instantly even if the message contains an entry price?
  3. Q3. How do I copy multiple TP levels (TP1/TP2/TP3/TP4) correctly?
  4. Q4. Will it open multiple orders (one per TP)?
  5. Q5. What does “Number of TPs to copy = 0” mean?
  6. Q6. Does it support partial close / staggered exits?
  7. Q7. What do patterns like SL[X] -> / TP[X] -> mean?
  8. Q8. Do spaces after commas in keyword lists matter?
  9. Q9. Can I use one .set across brokers with different symbol suffixes?
  10. Q10. What does “Invalid stops” mean?
  11. Q11. How should I attach logs so the issue can be reproduced?
  12. Q12. Why does it place pending orders instead of market (or vice versa)?
  13. 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).
To get “more pending, less market” you can:
  • 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
Partial close is not “automatic per TP hit” by default; it is a command-based action (or you use multi-TP trades).

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
They work only if your keyword lists include those templates (NewStopLossKeywords / NewTakeProfitKeywords / ModifyOrderKeywords).

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.