Documentation
Everything you need to set a bridge up and keep it running. Start with the quick start; the rest is reference.
Quick start
Ten minutes end to end, once per terminal.
- Create a license. Licenses → New license, label it something like "XAUUSD sweep model", and copy the License ID and the webhook URL.
- Install the connector. File → Open Data Folder → MQL5 → Experts (or MQL4 → Experts), copy
Connector.ex5orConnector.ex4in, restart MetaTrader. - Allow the URL. Tools → Options → Expert Advisors, tick Allow WebRequest for listed URL, add
https://api.tradelinqr.com, press OK. - Attach to one chart. Any symbol, any timeframe — one instance handles every symbol you trade. Paste the License ID into the LicenseID input, enable AutoTrading.
- Check the chart panel. Connected, license valid, account bound. If it is not bound yet, bind it under Accounts.
- Create the alert. Webhook URL under Notifications, message in the Message box. Build the message in the dashboard.
- Send a test. Test send runs the whole pipeline in dry run and shows exactly what the connector would have done, without placing an order.
WebRequest whitelist
Add it exactly as shown — no trailing slash, no path, no www. On a VPS this must be done
inside the VPS terminal, not on your desktop. The connector detects these three codes and prints this
instruction on the chart in red, so you should never have to guess.
Downloads
| File | Platform | Version | SHA-256 |
|---|---|---|---|
| Connector.ex5 | MetaTrader 5, build 3800+ | 1.0.0 | on the download page |
| Connector.ex4 | MetaTrader 4, build 1350+ | 1.0.0 | on the download page |
Verify the hash before installing. The auto-updater checks the hash and a signature before replacing a file and refuses on any mismatch. Sign in to download.
Sources
Four ways a signal reaches the platform. All four end in the same pipeline, so everything below about syntax, sizing and stop management applies whichever one you use.
TradingView
Paste your webhook URL into the alert's Notifications → Webhook URL field and write the message in the syntax below. Nothing changes in your Pine script. This is the only source where you write the message yourself, which is why it is the most precise.
Telegram
Connect your own Telegram account — not a bot, because a bot cannot read channels you are a member of. Your session is encrypted and you can revoke it from Telegram itself at any time. Once connected, every channel you belong to appears under Channels with its own monitor switch.
Messages are read with a parser profile. Templated channels are handled by the local engine with no network call at all; channels that write prose can be pointed at an AI provider using your own key.
WhatsApp has no official way to read groups you belong to. This connection uses a linked device, the same mechanism as WhatsApp Web. It works, and it sits outside WhatsApp's terms of service — your account could be restricted. We would rather tell you that here than bury it in the terms. Sessions on this source also churn faster than any other: expect to re-link roughly monthly.
Discord
Invite our bot to your guild with the Message Content intent enabled. Without that intent the bot joins successfully and then sees every message as empty, which looks exactly like a broken parser. The Connections page detects that case and says so.
Many signal servers post embeds rather than plain text. The parser reads the embed description and fields, and an edited message is treated as an update — an edit that moves a stop moves the stop.
Destinations
MetaTrader 4 and 5
The connector runs in your own terminal and polls for instructions. Nothing reaches into your machine, so there is no inbound port, no tunnel and no static IP, and there is no field anywhere in this product for your broker password. Account protection is enforced inside the terminal, which means a daily loss limit still holds when your internet does not.
Quotex and Pocket Option
Neither platform has a connector, so the trade is placed from our server and your login is stored with us — encrypted field by field, with the key held outside the database and outside the backups. That is a heavier arrangement than MetaTrader and you should choose it deliberately.
Two rules on these destinations that never bend. The message decides the instrument:
GBPUSD-OTC means the OTC book and GBPUSD means the live one, whatever the day of the
week. The message decides the expiry: 1min, 60sec and M1 all
mean sixty seconds, and a clock time in the message is logged but never treated as a duration.
Martingale is per account, never global, and the dashboard shows you the ladder in cash before you switch it on. Six doubling steps from 100 needs 12,700 to complete one cycle.
Connector settings reference
| Setting | What it controls |
|---|---|
| LicenseID | Your license. Nothing runs until this is set and the account is bound. |
| ServerURL | Default https://api.tradelinqr.com. Change only if support asks. |
| PollIntervalMs | How often the terminal asks for signals. The server can override it and back off idle terminals. |
| TargetType | How legacy sl and tp are read: pips, price or percent. |
| VolumeType | How legacy risk is read: lots, cash, percent of balance as lots or margin, percent of balance or equity loss. |
| PendingEntryType | How legacy pending is read: pips from market, exact price or percent. |
| ParameterSource | Signal only, connector only, stops from one and risk from the other. |
| Pyramiding | On; on only while that symbol and direction are collectively in profit; off with one position per symbol; off with one buy and one sell allowed. |
| CloseOnReverse | Hedging: close opposite then open. Netting: close opposite and stop. Or off. |
| ShadowTargets | Sends the broker a stop and target 100 pips beyond the real ones and enforces the true levels locally. Needs both a stop and a target. |
| PartialClosePercent | 10, 20, 25, 34 or 50. |
| MaxOpenPositions | Zero is unlimited. Market orders only. |
| MaxPositionsPerSymbol / MaxUniqueSymbols | Caps concentration in one instrument and across instruments. |
| DailyPnLTimezone | GMT offset −12 to +14, setting the daily reset boundary. |
| DailyProfitTarget / DailyLossLimit | 1 or below is a fraction of the day's opening balance, above 1 is cash, 0 is off. |
| DailyAction | Halt for the day, close everything, or close everything and halt. |
| CumulativeProfitTarget / CumulativeLossLimit | Against the tracked starting balance, ignoring deposits and withdrawals. |
| CumulativeAction | Halt for the day, halt persistently, close all, or close all with either halt. |
| ShowDashboard / FontSize / ProfitComputation | The on-chart panel, and whether profit includes commission, swap and tax. |
| MagicNumber | Default 76. Give each strategy instance its own. |
| MagicRestriction | On: only its own trades. Off: every trade on that symbol including manual ones — affects closing, modification, pyramiding counts, reversal and all limits. |
| BrokerSet | Automatic, or A / B / C for unusual filling modes. |
| ActiveHours | Start and end HH:MM in broker server time. Wrapping past midnight is supported. |
| SymbolPrefix / SymbolSuffix | Your broker's naming, for example .m or pro. |
| AutoUpdate | Checks for a newer signed build on start and prompts to restart. |
| ShareAnalytics | Optional upload of closed trades so the portal can compute statistics. |
| VerboseLogging | Full detail in the Experts tab. Turn it on before contacting support. |
Broker symbol mapping
Your alert says XAUUSD; your broker may call it XAUUSD.m,
XAUUSDpro or GOLD. Resolution order:
- The raw symbol exactly as written.
- The raw symbol with your configured prefix and suffix.
- A scan of every symbol on the server, matching case-insensitively and ignoring separators.
The result is cached for the session. If nothing matches, the signal is rejected and the log prints the closest names it found so you can copy the right one into your settings.
Broker error codes
| Code | Meaning | What to do |
|---|---|---|
| 4060 / 4014 / 5203 | WebRequest not permitted | Whitelist the URL. The most common cause of "nothing happened". |
| 130 / 10016 | Invalid stops | Your stop or target is inside the minimum stop distance. Widen it, or use pips instead of a price. |
| 131 / 10014 | Invalid volume | Lots below minimum, above maximum, or off the step. Check the sizing parameters. |
| 132 / 10018 | Market closed | Nothing to fix. Check the instrument's session. |
| 133 / 10017 | Trading disabled | Enable AutoTrading; check whether the account is read-only or closing-only. |
| 134 / 10019 | Not enough money | Free margin too low for the requested size. Reduce risk or close positions. |
| 136 / 10021 | Off quotes | Retried three times with backoff. Persistent cases mean an illiquid symbol or a bad feed. |
| 138 / 10004 | Requote | Retried automatically. Frequent requotes usually mean a slow link to the broker. |
| 146 | Trade context busy | Another EA or a manual order holds the terminal. The connector waits and retries. |
| 10027 | AutoTrading disabled by client | Press the AutoTrading button in the toolbar. |
| 10030 | Unsupported filling mode | Set BrokerSet to B or C, or leave Automatic and send us the broker name. |
| 4106 | Unknown symbol | Set your prefix and suffix. The log prints the near-matches. |
Troubleshooting
Nothing happens at all
- Is the connector smiley on the chart, and is AutoTrading on?
- Does the chart panel say connected? If not, the URL is not whitelisted.
- Does it say the account is bound? If not, bind it under Accounts.
- Does the signal appear in the portal at all? If not, TradingView never sent it — check the webhook URL and that the alert is still active.
- Is it in the Rejected tab? The reason is printed there in full.
The signal arrived but no order was placed
- Read the broker return code on the ticket and match it above.
- Check your filters — a spread or accfilter value can legitimately block a trade.
- Check position limits, active hours, and whether a daily or cumulative limit has halted the connector.
- Check pyramiding — with it off, a second entry in the same direction is refused by design.
The lot size is not what I expected
- Confirm which volume parameter the message actually carried; the parsed view shows it.
- Confirm the pip distance against the pip table for your broker's digits.
- Remember risk-based sizing uses the stop distance, so changing the stop changes the lots.
It worked on demo and not on live
Different server, different symbol names, different filling modes, different minimum stop distances. Set the prefix and suffix for the live server and check BrokerSet.
Still stuck? Turn on VerboseLogging, reproduce it once, and send the Experts-tab lines with your License ID and the alert text to support@tradelinqr.com.