DoIt Signal Publisher.
Your trades, published.
Publishes every trade on your account to your Telegram channels and Discord servers — signals, closes, partials and SL/TP updates. The original message is edited in place so followers always see the live state. VIP + free tiers, inline buttons, chart screenshots and automatic reports. Works with any EA or manual trading — no coding needed.
Why Signal Publisher
Attach it to any chart and it watches your whole account. Every execution, close, partial and SL/TP change becomes a clean, professional message in your channels — and the original signal is kept up to date instead of buried under update spam.
Get it on MQL5
Each platform and transport is a separate product — pick the one that matches your terminal and where your audience lives.
- 1Open the product page — use the buttons above.
- 2Click the orange Buy button on the MQL5 product page.
- 3Select your payment method (card, PayPal…) and complete the payment.
- 4Install the EA directly to MetaTrader and begin setup (next step).
Allow the URLs in MetaTrader
Takes 30 seconds — and it is required.
- 1In MetaTrader: Tools → Options → Expert Advisors.
- 2Tick “Allow WebRequest for listed URL”.
- 3Add the URL for your build: https://api.telegram.org (Telegram builds) and/or https://discord.com (Discord builds). The Pro build needs both.
- 4Click OK. If the EA was already on a chart, remove it and attach it again.
Telegram setup — bot, channel, chat id
Three short parts: create a bot, make it admin of your channel, and grab the chat id. Discord users can skip to the next step.
- aIn Telegram, search for @BotFather (the verified one) and open it.
- bSend /newbot.
- cGive it a display name (anything, e.g. My Signals).
- dGive it a username — must be unique and end in bot, e.g. my_signals_2026_bot.
- eCopy the token BotFather replies with (looks like 1234567890:AAHrX3...) into the EA input Telegram bot token. Treat it like a password.
- fOpen your new bot’s chat and press START once.
- 1Open your channel → tap/click the channel name at the top.
- 2Go to Administrators → Add Administrator.
- 3Type the bot’s full @username in the search box (e.g. @my_signals_2026_bot). Type the username, not the display name — bots only appear when you type the exact username, and the result shows up in the “Global search” section at the bottom, not in the member list.
- 4Select the bot, make sure “Post messages” is enabled, and save.
- 1Post any message in the channel (e.g. “test”). This matters — an empty channel produces an empty result in the next step.
- 2Open this address in your browser, replacing <TOKEN> with your bot token: https://api.telegram.org/bot<TOKEN>/getUpdates
- 3Look for "chat":{"id":-100xxxxxxxxxx,...}. The negative number starting with -100 is your chat id. Copy it into Chat id (Channel 1).
To post into a specific topic of a supergroup, use the format chatid:topicid, e.g. -1001234567890:2. You can see the topic id in the topic’s URL in Telegram Web.
Discord setup — webhook
One minute. No bots, no permissions.
- 1In your Discord server, go to the target channel → Edit Channel (gear icon).
- 2Open Integrations → Webhooks → New Webhook.
- 3Name it (this becomes the sender name), pick the channel, then Copy Webhook URL.
- 4Paste the URL into the EA input Webhook URL (Discord Channel 1). Done.
Attach the EA and send your first test
The EA watches the whole account — the chart it sits on doesn’t matter.
- 1Drag the EA onto any chart — symbol and timeframe don’t matter.
- 2Make sure “Allow Algo Trading” is enabled (toolbar button) — required for WebRequest.
- 3Fill in your token + chat id (Telegram) and/or webhook URL (Discord) in the inputs, click OK.
- 4The panel appears top-left, shows ● STARTING briefly and then ● ACTIVE.
- 5Press TEST on the panel. A test message must arrive in every configured channel and the panel shows Last send: OK (200).
Channels, tiers & per-channel filters
Up to 3 Telegram chats and (Discord/Pro builds) up to 3 Discord webhooks — each with its own settings. This is how you run a VIP + free setup from one EA.
| Input | What it does | Example VIP/free setup |
|---|---|---|
| Delay in seconds | Signals reach this channel N seconds later. Edits of the original message are never delayed. | VIP channel: 0 · Free channel: 900 (15 min) |
| Magic filter | Only trades from these magic numbers (CSV) reach this channel. ALL = everything. | Channel for your Gold EA only: 311109 |
| Symbol filter | Only these symbols (CSV). | XAUUSD,EURUSD |
| Direction filter | All / only BUY / only SELL. | A “longs only” channel |
Message templates & placeholders
Every event has its own template. Use \n for line breaks.
| Placeholder | Value |
|---|---|
| [TYPE] / [SYMBOL] / [TICKET] | BUY / SELL (LIMIT/STOP), symbol, ticket number |
| [ENTRY] / [SL] / [TP] | Prices (close price on close events) |
| [SLPIP] / [TPPIP] / [PROFITPIP] | Distances in pips (profit pips are directional) |
| [RRR] / [LOTSIZE] / [PROFIT] / [REASON] | Risk:reward, lots, money P/L, close reason (SL/TP/manual) |
| [RISK] / [RISKACCOUNTPERCENTAGE] | Money at risk to SL, and as % of balance |
| [CLOSEDLOTS] / [REMAININGLOTS] | Partial closes: closed and remaining volume |
| [TIME] | Event time (format configurable in Advanced) |
| [DIRECTION_EMOJI] / [RESULT_EMOJI] | 🟢/🔴 by direction · ✅/🔴 by profit/loss |
What gets published and when
| Event | Default | Notes |
|---|---|---|
| Order executed | ON | The “signal” message. Its message id is remembered. |
| Position closed | ON | Sent as a reply to the original signal (Telegram) and the original message is edited with the result — both configurable. |
| Partial close | ON | Separate template with closed/remaining lots. |
| SL/TP modified | Edit only | By default the original message is edited in place (“Updated: SL x TP y”). Enable Notify on modified for an extra new message. |
| Pending placed / deleted | OFF | Enable if you also want pending order flow published. |
Buttons, screenshots & reports
Input Telegram buttons, format: Label|https://url;Label2|https://url2 (up to 4, one per row). Example:
Join VIP|https://t.me/yourvip;Broker I use|https://your-affiliate-link.com
Buttons appear under every new message (not on edits). Entries without | or with a non-http URL are ignored with a log warning.
Per-event toggles. The EA finds an open chart of the trade’s symbol (or opens one), applies your visual settings (trade levels, history, scales) and sends the image with the message as its caption — one single post. Set the preferred timeframe in the inputs.
| Report | When | Covers |
|---|---|---|
| Daily | At the configured hour (broker time) | Today’s closed trades |
| Weekly | Configured weekday, same hour | Since Monday 00:00 |
| Monthly | 1st of the month, same hour | The full previous month |
Content: trades (W/L), win rate, net P/L (incl. swap & commission), pips, profit factor, best/worst. Reports go to all channels, without delay. With no trades, nothing is sent unless Send empty reports is ON.
The on-chart panel explained
| Element | Meaning |
|---|---|
| ● ACTIVE / ● PAUSED | Whether new trade events are being published. PAUSE stops new publications; queued messages still finish sending. |
| Channel rows (e.g. TG1 ✓ 12) | Health per channel: green ✓ with sent count = working · red ✗ = last attempt failed (with fail count) · -- = no activity yet. The delay tag (TG2 +60s) marks delayed tiers. |
| Last send | Result and local time of the most recent transport call. |
| Sent / Failed / Queued | Totals across all channels. Queued counts messages waiting (including tier delays and retries). |
| TEST | Sends a test message to every channel immediately (ignores filters, delays and PAUSE) — your connection check. |
Every error and its fix
The Experts log (Toolbox → Experts) contains the exact HTTP response — start there.
| Symptom (Experts log) | Cause | Fix |
|---|---|---|
| WebRequest error 4014 | URL not allow-listed | Step 2 — add the URL, re-attach the EA |
| HTTP 401 Unauthorized | Wrong bot token | Re-copy from BotFather /mybots → API Token |
| HTTP 400 chat not found | Wrong chat id | Redo step 3.3 — remember the -100 prefix |
| HTTP 403 bot is not a member / not enough rights | Bot is not admin of the channel | Step 3.2 — add as admin with “Post messages” |
| HTTP 400 message thread not found | Wrong topic id in chat:topic | Check the topic id, or remove :topic |
| HTTP 429 in the log | Telegram/Discord rate limit | Nothing to do — the EA waits exactly the required time and retries automatically |
| HTTP 404 on Discord | Webhook deleted or URL truncated | Create a new webhook, paste the full URL |
| Panel shows ✗ on one channel only | That channel’s credential/permission broke | The row tells you which one — fix only that channel |
| Test time looks “old” on weekends | — | The TEST message shows your local PC time labeled “(local)”; trade events use server time |
| Nothing publishes but TEST works | Filters | Check global magic/symbol filters and per-channel filters — and that the panel is not PAUSED |
| Messages arrive without edits on Discord | Terminal doesn’t support PATCH | Known limitation logged once — closes fall back to new messages automatically |
Hard questions, direct answers
Both. The EA watches the whole account, so every trade is captured no matter what opened it — any EA, any magic number, manual trades. Attach it to a single chart (symbol and timeframe don’t matter) and use the magic/symbol filters if you only want to publish part of the flow.
Yes — that’s what per-channel tiers are for. Configure up to 3 Telegram chats (and, on Discord/Pro builds, up to 3 Discord webhooks). Give the free channel a delay (e.g. 900 seconds = 15 minutes) and the VIP channel zero. Each channel also has its own magic, symbol and direction filters. See step 6.
They are separate builds: MT5/MT4 to Telegram and MT5/MT4 to Discord. If you publish to both platforms, the Pro build combines Telegram + Discord in a single EA (up to 6 channels) — remember it needs both URLs allow-listed in step 2.
Yes, on the original message. When you modify SL/TP or a trade closes, the EA edits the original signal in place — followers always see the current state and the final result without scrolling through update spam. Closes also arrive as a reply to the original signal on Telegram. Both behaviours are configurable in Events.
Nothing is lost. Sending is queued and asynchronous; on HTTP 429 the EA waits exactly the time the platform requests and retries automatically. Failed sends are retried, and the panel’s Queued counter shows what’s waiting.
No. It is a publishing utility — it only reads your account’s trade events and sends messages. It never opens, modifies or closes positions.
TEST bypasses filters on purpose — real events don’t. Check the global magic/symbol filters, the per-channel filters, and that the panel is not PAUSED.
Yes — download the free demo from the MQL5 product page and run it in the Strategy Tester to explore the inputs and the panel before buying.
The setup we actually run
Broker, funded program and VPS behind our own live results — the same stack this guide assumes.
Affiliate links — using them supports DoIt Trading at no cost to you.