MT5 Bridge for White Label Trading Platforms on Obermind

Alexander Talei

Alexander Talei

Founder at Obermind

MT5 Bridge for White Label Trading Platforms on Obermind

MetaTrader 5 remains one of the most familiar trading terminals in retail brokerage. Many white label operators want traders to keep that MT5 experience while the ledger, risk, liquidity, and web or mobile UX sit on a modern multi-asset stack. Obermind Platform addresses that with three MetaQuotes Manager API integrations that we collectively call the MT5 Bridge family: MT5Manager, MT5Synced, and MT5Bridge.

This article explains what each integration is for, how they fit Obermind Stream and Obermind Web, and how to configure both Obermind Platform and MT5 Manager / MT5 Administrator. The goal is a clear, copy-ready deployment guide for white label trading platforms that need an MT5 Bridge without inventing a second source of truth for balances, multi-asset and multi-venue liquidity provision, and real-time market data dissemination.

Why an MT5 Bridge on a white label trading platform

A white label trading platform typically needs:

  • A web and mobile client (Obermind Web and related Obermind apps) with portfolio, KYC, payments, and multi-asset wallets.
  • A low-latency execution and portfolio engine (Obermind Stream) for orders, positions, risk, and market data aggregation.
  • Optional access to MetaTrader 5 for desks and clients who already know that terminal.

Without a proper MT5 Bridge, operators either run MT5 as an island (duplicate balances, conflicting fills) or force everyone onto a single UI. Obermind’s approach is to treat MetaTrader as a connected OMS or pricing surface while Obermind Stream remains the system of record for linked portfolios where that model is chosen - or to use Obermind Platform’s vast network of multi-asset liquidity providers without adding middleware or relying on third-party plugins.

The three MT5 Bridge providers

All three live in the Obermind Stream provider layer and talk to MetaTrader through the MetaQuotes Manager API (64-bit). They share connection and logging patterns but serve different product roles.

  • MT5Manager (provider id 94) — Venue-style client: Obermind sends orders and consumes quotes from MT5, similar in spirit to other execution venues.
  • MT5Synced (provider id 95) — Per-user OMS: each Obermind portfolio can link to its own MT5 login; Obermind is source of truth for trades and cash; dealer and balance sync keep MT5 aligned.
  • MT5Bridge (provider id 96) — Omnibus / pricing authority: Obermind publishes bid and ask into the MT5 trade server; optional dealer against Obermind Platform multi-asset liquidity venues and sell-side algos.

In practice most white label trading platforms start with MT5Synced (linked accounts, dealer, balance). They add MT5Bridge when MT5 Market Watch should follow Obermind prices continuously. They enable MT5Manager when Obermind must treat MT5 as an outbound liquidity or execution venue.

Important operational rule: do not place MT5Synced in an Aggregator liquidity Providers[] list. Synced is an OMS and dealer bridge, not a venue LP. Normal Obermind fills still go through your Aggregator (or other execution algos); Synced mirrors those fills onto the linked MT5 login and routes MT5-originated requests back into Stream.

Architecture by use case

1) MT5Synced: per-user OMS (white label default)

Traders use Obermind Web (and Terminal) as usual. Optionally they create an MT5 link from a wallet area that your brand allows. Obermind Stream creates an MT5 login in a configured group, stores the link, and keeps that login’s positions and cash consistent with the Obermind portfolio.

Obermind → MT5 (mirror path): client order on Obermind Web → Stream → Aggregator / LP → fill → MT5Synced ExecTrade on the linked account → SendDeal / position align (OM#).

MT5 → Obermind (dealer path): place order on linked login → dealer request → Synced holds then places a Stream order → execute → terminal status via ExecutionReport / DealerAnswer.

Deposit gate: balance operations that arrive as dealer balance requests are applied on Obermind first, then accepted on MT5, so cash remains coherent.

Balance sync: a timer compares Obermind cash (portfolio calculation, with tracker fallback within tolerance) to the MT5 account balance in the group currency and posts small adjustments when drift exceeds tolerance.

2) MT5Bridge: pricing authority (and optional omnibus dealer)

When PublishPricesToMt5 is enabled, MT5Bridge seeds instruments that carry an AltId for provider 96, then periodically pushes Obermind last bid and ask into the trade server via Manager TickAdd. That is how a white label trading platform makes MT5 charts and Market Watch follow Obermind Stream prices rather than only the broker’s external feed.

Dealer on Bridge is optional and defaults to off. When Synced already owns dealer on another Manager login, keep Bridge EnableDealer=False so the two sessions do not compete for the dealer queue.

3) MT5Manager: venue client

MT5Manager is the IB-like path: Obermind Stream connects as Manager, subscribes and trades through a configured DefaultTradingLogin, and treats MT5 as an execution and market-data venue. Use this when the product requirement is “Obermind routes to MT5,” not “each end user has a linked MT5 OMS login.”

Symbol mapping (AltId)

Platform symbols stay Obermind-native (for example EURUSD). MT5 venue symbols may differ (for example EURUSDom).

  • Obermind → MT5 — Instrument AltId for the provider id in use (GetSymbol(providerId)).
  • MT5 → Obermind — Resolve by platform symbol, then AltId scan.

Recommended pattern for dual Synced + Bridge:

  • AltId 95 = venue symbol (Synced trades and mirrors).
  • AltId 96 = same venue symbol string (Bridge price publish seed).

Without AltId 96, Bridge logs a seeded publish count of zero and will not push ticks for that instrument.

Configuring Obermind Stream (provider XML)

Manager credentials belong in Obermind Stream provider configuration only. They are not stored in brand KYC settings. Host must be x64. Native MT5APIManager64.dll must sit beside the Stream process (or behind ManagerApiPath).

Assembly registration (Configuration)

<Provider>
  <TypeName>OberMind.MT5Manager.MT5Manager, OberMind.MT5Manager</TypeName>
  <Id>0</Id>
  <X64>true</X64>
</Provider>
<Provider>
  <TypeName>OberMind.MT5Manager.MT5Synced, OberMind.MT5Manager</TypeName>
  <Id>0</Id>
  <X64>true</X64>
</Provider>
<Provider>
  <TypeName>OberMind.MT5Manager.MT5Bridge, OberMind.MT5Manager</TypeName>
  <Id>0</Id>
  <X64>true</X64>
</Provider>

Instance settings (XmlProviderManagerSettings)

Samples below use fictional values. Replace host, logins, and passwords with credentials issued by your MT5 administrator.

Shared connection and logging settings

  • Server — Trade server host and optional port, for example mt5-demo.example.com:443.
  • ManagerLogin — MetaQuotes Manager API login used by this provider instance.
  • Password — Password for that Manager login.
  • ManagerApiPath — Directory containing native MT5APIManager64.dll. Empty uses the Stream output folder (typical after Obermind Stream publish).
  • DealerTimeoutMs — Milliseconds for Manager connect waits and outbound dealer or order waits. Synced also uses this as the maximum hold time while a dealer request waits on Stream. Default fallback 10000.
  • LoggingEnabled — When true, writes daily provider log files.
  • LogPath — Log directory. Empty falls back to the Obermind common logs folder.
  • LogType — Comma-separated categories: Info, Error, Connect, Instrument, Market, Order, Dealer, Balance, Account, or All. Production Bridge configs usually omit Market because TickAdd is frequent.
  • Enabled — Whether Obermind Stream connects this provider at startup.
  • AutoReconnect / AutoReconnectInterval — Standard Stream reconnect behaviour (interval in seconds).

MT5Manager (94) sample

<provider>
  <id>94</id>
  <instance>1</instance>
  <properties>
    <property name="Server">mt5-demo.example.com:443</property>
    <property name="ManagerLogin">1001</property>
    <property name="Password">ReplaceWithManagerPassword!</property>
    <property name="ManagerApiPath"></property>
    <property name="DefaultTradingLogin">20001</property>
    <property name="DealerTimeoutMs">10000</property>
    <property name="LoggingEnabled">True</property>
    <property name="LogPath"></property>
    <property name="LogType">Info,Error,Connect,Order</property>
    <property name="Enabled">False</property>
    <property name="AutoReconnect">True</property>
    <property name="AutoReconnectInterval">10</property>
  </properties>
</provider>
  • DefaultTradingLogin — MT5 trading login used when this venue provider sends deals or orders. Must be a real trading account the Manager may operate, not the Manager login itself.

MT5Synced (95) sample (typical white label OMS)

<provider>
  <id>95</id>
  <instance>1</instance>
  <properties>
    <property name="Server">mt5-demo.example.com:443</property>
    <property name="ManagerLogin">1001</property>
    <property name="Password">ReplaceWithManagerPassword!</property>
    <property name="ManagerApiPath"></property>
    <property name="EnableDealer">True</property>
    <property name="DefaultUserGroup">demo\hedged</property>
    <property name="MinLogin">0</property>
    <property name="MaxLogin">0</property>
    <property name="ExecutionProviderName">ObermindStream</property>
    <property name="DefaultAlgoId">203</property>
    <property name="DefaultRouteId">0</property>
    <property name="BalanceSyncIntervalSeconds">60</property>
    <property name="BalanceSyncTolerance">0.01</property>
    <property name="DealerTimeoutMs">10000</property>
    <property name="AccountLinksStr"></property>
    <property name="LoggingEnabled">True</property>
    <property name="LogPath"></property>
    <property name="LogType">Info,Error,Connect,Order,Dealer,Balance,Account</property>
    <property name="Enabled">True</property>
    <property name="AutoReconnect">True</property>
    <property name="AutoReconnectInterval">10</property>
  </properties>
</provider>
  • EnableDealer — Obermind Stream flag (not an MT5 UI checkbox). When true, Synced calls Manager DealerStart and handles the dealer queue for linked clients.
  • DefaultUserGroup — MT5 group path for UserAdd when a user creates a link. Use backslashes as required by Manager API, for example demo\hedged or Partner\Retail\hedged.
  • MinLogin / MaxLogin — Inclusive login allocation window. Both 0 means ask the server for the next login. Otherwise Synced allocates inside the range.
  • ExecutionProviderName — Fallback Stream execution provider name when a per-user Aggregator instance is not loaded (commonly ObermindStream).
  • DefaultAlgoId — Algo id used for inbound MT5→Obermind orders and for recognising Aggregator-facing fills to mirror (example 203). Prefer per-client Aggregator instance 100000 * AlgoId + userId when the user is logged on.
  • DefaultRouteId — Route id stamped on inbound Stream orders. 0 means no route, and the Obermind sell-side algo will determine how to route or execute the order.
  • BalanceSyncIntervalSeconds — How often Synced reconciles MT5 cash toward Obermind. 0 disables the timer.
  • BalanceSyncTolerance — Absolute cash drift below which Synced does not post a balance adjustment.
  • AccountLinksStr — Optional bootstrap map mt5Login=omAccountId;…. Prefer runtime create-link plus Dash sync; leave empty for normal white label flows. Links also persist under the log path so reconnects reload without a full rebuild.

MT5Bridge (96) sample (pricing; second Manager login)

<provider>
  <id>96</id>
  <instance>1</instance>
  <properties>
    <property name="Server">mt5-demo.example.com:443</property>
    <property name="ManagerLogin">1002</property>
    <property name="Password">ReplaceWithBridgeManagerPassword!</property>
    <property name="ManagerApiPath"></property>
    <property name="EnableDealer">False</property>
    <property name="PublishPricesToMt5">True</property>
    <property name="OmnibusAccountId">0</property>
    <property name="DealerTimeoutMs">10000</property>
    <property name="LoggingEnabled">True</property>
    <property name="LogPath"></property>
    <property name="LogType">Info,Error,Connect,Order,Dealer</property>
    <property name="Enabled">True</property>
    <property name="AutoReconnect">True</property>
    <property name="AutoReconnectInterval">10</property>
  </properties>
</provider>
  • EnableDealer — When true, Bridge also consumes dealer requests and can fill or reject against Obermind last bid/ask. Keep False when MT5Synced owns dealer on another Manager session.
  • PublishPricesToMt5 — When true, on connect Bridge seeds instruments with AltId for provider 96 and publishes Obermind bid/ask into MT5 on a short interval.
  • OmnibusAccountId — Optional Obermind portfolio account id for omnibus bookkeeping when Bridge participates in execution-style flows. 0 means none.

EnableDealer clarification: this is an Obermind Stream provider property. MetaQuotes still requires the Manager login to have Dealer permission and the client group to route to an external dealer. Stream’s flag only controls whether this provider instance starts the dealer loop.

Two Manager logins: Prefer one Manager for Synced (dealer, clients, orders) and a second Manager for Bridge (Throw in quotes). Each Stream provider opens its own Manager session; reusing one login for both often causes the second connect to kick or starve the first.

Configuring Obermind Platform (Dash and Obermind Web)

Wallet linking and brand presentation are configured in Obermind Dash under Providers (MT5 settings), not in Stream XML.

  • Link enabled — Feature gate for create/get MT5 credentials in Obermind Web.
  • Terminal server display — Hostname or label shown to end users as the MT5 “Server”. Empty falls back to the linked row or the Synced Server value.
  • Default user group — Group used when Stream creates the MT5 login (must match what Synced’s Manager may create into).
  • Allowed wallet areas — Where the link action appears: margin, invest, fiat, crypto (comma-separated).
  • Allowed UserTypes — Portfolio user types allowed to create a link (for example Standard, Margin). Other types must be listed explicitly if desired.

Operational tools on the same page typically include:

  • Save MT5 settings (also pushes account links toward Stream when appropriate).
  • Sync links to Stream after recovery or cutover (rebuilds the in-memory and persisted link map from the platform database).
  • Clear all MT5 links when changing Manager login or default group (clears platform links and Stream maps; it does not delete historical MT5 server logins on the broker side).
  • Connect on provider 95 after deploy.

End users create the link from Obermind Web wallets when the area and user type are allowed. They receive branded credentials notification with the terminal server display string and the linked Obermind account reference.

Configuring MT5 Administrator / Manager

Configure permissions under MT5 Administrator → Managers → [manager] → Permissions, and ensure the Manager’s group scope includes the trading group you use for linked users.

Permission map (MetaQuotes label → Obermind need)

  • Dealer (Dealing) — Receive trade requests into the Manager dealer queue. Required for MT5Synced inbound trades.
  • Throw in quotes — Push bid/ask via TickAdd. Required for MT5Bridge publish; useful on Synced for post-fill price alignment.
  • Create clientsUserAdd for wallet → MT5 link. Required for Synced create-link.
  • Edit accounts / Edit clients — Adjust groups and account fields via Manager API. Recommended for Synced.
  • Access orders and positions + Edit orders, positions, and deals — Dealer answers, pending and position ops, mirrors. Required for Synced.
  • Access payments — Often required for balance-related Manager operations. Recommended.
  • Access personal details — Optional for a technical integration Manager.

Group execution mode

The client group used for linked traders must route marketable requests to an external dealer (Manual / Request style). If the group auto-executes (Market / Instant / Exchange-style local fill), MT5Synced never sees the request: the order appears filled on MT5 while Obermind Stream shows no dealer activity.

After permission or group changes, reconnect the relevant Obermind Stream provider.

Checklist: Manager for MT5Synced

  • Dealer; access and edit orders, positions, and deals.
  • Create clients; edit accounts as needed.
  • Group scope includes your white label linked group.
  • That group’s execution mode routes to external dealer.
  • Manager API connect allowed from the Obermind Stream host.
  • Payments access recommended.
  • Throw in quotes optional for Synced, required later if you rely on Synced-only occasional TickAdd.

Checklist: Manager for MT5Bridge (usually a second login)

  • Throw in quotes.
  • Symbol access for instruments you publish.
  • Symbols configured to accept an external quote feed where your broker requires it.
  • Bridge Stream EnableDealer=False while Synced owns dealer.
  • Instruments carry AltId provider 96.

Running Synced and Bridge together (recommended dual setup)

  • Manager logins — Synced Manager for dealer and account ops; Bridge Manager for Throw in quotes.
  • Dealer — Only one of the two should have Stream EnableDealer=True. Synced-first: Synced true, Bridge false.
  • Pricing — Bridge PublishPricesToMt5=True.
  • AltId — Synced 95 and Bridge 96 both map to the same venue symbol string when needed.
  • Logs — Synced: dealer, order, balance. Bridge: omit Market in production unless debugging TickAdd.

Verify with Stream logs: Synced connected as dealer; Bridge publishPrices=True and price publish seeded count ≥ 1; MT5 Market Watch moves with Obermind; Synced still shows hold / mirror / balance ticks without Bridge stealing dealer lines.

What traders experience on a white label trading platform

  • Obermind Web / Terminal — Full Obermind Platform trading, portfolios, and wallets; optional MT5 credentials from the wallet when enabled.
  • MT5 Terminal — Linked login shows positions and cash aligned with Obermind when Synced is configured; Market Watch can follow Obermind when Bridge publishes.
  • Obermind Dash — Providers and Accounts tooling for settings, link inventory, and Stream sync.

Fills that originate on Obermind continue to execute through your normal Stream Aggregator or venue stack. MT5Synced mirrors those fills onto the linked MT5 login with a silent dealer path that does not re-enter Aggregator. Fills that originate on MT5 are held in the dealer queue, executed on Obermind Stream, then answered back to MT5.

Operational notes

  • x64 only for Manager API natives on the Obermind Stream host; install the Visual C++ x64 redistributable if required.
  • Provider ids 94 / 95 / 96 must stay at or below 100 (Stream treats higher ids as algos).
  • Connect Enabled MT5 OMS providers from Stream startup for 94/95/96; do not rely on Aggregator Providers[] for Synced.
  • Daily logs are named by provider (for example MT5Synced yyyy-MM-dd.log) under LogPath or the default Obermind logs folder.
  • When rotating Manager login or default group: Clear all MT5 links, update Stream XML and Dash display/group, Connect Synced, then let users create links again.

Closing

An MT5 Bridge on a white label trading platform is not a single socket. It is a deliberate split between venue access (MT5Manager), per-user OMS synchronisation (MT5Synced), and market data and execution venue authority (MT5Bridge), all driven from Obermind Stream and exposed through Obermind Web and Dash under the Obermind Platform brand model.

Configure Manager permissions and group dealer routing on MT5 Administrator, set Stream provider properties with separate Manager sessions where needed, enable wallet linking for your brand, and map AltIds so venue symbols resolve cleanly. The result is MetaTrader familiarity for clients who want it, without giving up Obermind as the portfolio and execution backbone of the white label trading platform.

Alipay
Stripe
Eurex
AWS
Azure
Google Cloud
Currenex
Velocity Trade
Bitcoin
CME
Interactive Brokers
Kraken
FIX API
XTX
Bloomberg
Binance

Lancez votre plateforme.

Commencer.