sifting/io
Enterprise · FIX 4.4

MetaTrader 4 & 5.

Connect a MetaTrader 4 or MetaTrader 5 server to SiftingIO over the FIX 4.4 API. A bridge runs the FIX session and pushes bid and ask into your platform, so every terminal sees the same aggregated fair price across crypto, forex, and commodities.

How it fits together

A MetaTrader terminal only speaks to its own server, so it cannot connect to a FIX feed on its own. The integration is server-side: a small bridge runs the SiftingIO FIX 4.4 session, then injects quotes into your platform through the MT4 DataFeed API or the MT5 Gateway API. The server fans those quotes out to every terminal, chart, and Expert Advisor.

Step 1SiftingIO
FIX 4.4 market data sessionCross-connect from TY3 · NY4 · LD4
FIX 4.4TLS
Subscribe 35=V · snapshot 35=W + incremental 35=X
Step 2Your network
FIX initiatorQuickFIX session, IP-allowlisted
Parsed bid / ask / trade
Step 3Your network
Feed adapterSymbol map + top of book
Push quotes via platform API
Step 4MetaTrader
MT4 / MT5 serverDataFeed API · Gateway API
Fan-out to every terminal
Step 5MetaTrader
Client terminalsMarket Watch · charts · EAs
Scope
This is a market-data path, not a liquidity or execution bridge. The FIX session carries prices only, so it powers Market Watch, charts, and indicators. Order routing, fills, and risk stay entirely with your platform.

What you'll need

The integration runs alongside an existing MetaTrader server. Before you start, line up:

  • A licensed MetaTrader 4 or MetaTrader 5 server, with access to the DataFeed API (MT4) or the Gateway API (MT5). These are server-side interfaces available to platform operators.
  • A SiftingIO Enterprise plan with FIX entitlement, which sets your concurrent sessions and symbols per session.
  • A FIX engine to run the session, for example QuickFIX or a compatible library in your language of choice.
  • Static source IPs to allowlist, and the FIX 4.4 data dictionary.
Step 1

Provision your FIX session

FIX access is provisioned per account. SiftingIO assigns your SenderCompID and TargetCompID, issues credentials and a TLS endpoint, and allowlists your source IPs. You then run a conformance pass on a UAT session before promotion to production.

Onboarding
The full provisioning and certification flow, from UAT to production, lives in the FIX API reference. Start there to get your session credentials and endpoint.
FIX API reference
Step 2

Configure the FIX initiator

Point a FIX initiator at your provisioned endpoint over TLS. A QuickFIX session configuration looks like this, with the host and port you receive during onboarding:

quickfix.cfg
[DEFAULT]ConnectionType=initiatorReconnectInterval=5HeartBtInt=30UseDataDictionary=YDataDictionary=spec/FIX44.xmlFileStorePath=storeFileLogPath=logStartTime=00:00:00EndTime=00:00:00 [SESSION]BeginString=FIX.4.4SenderCompID=YOUR_SENDER          # assigned during onboardingTargetCompID=SIFTINGIOSocketConnectHost=<provisioned-host>   # your TY3 / NY4 / LD4 endpointSocketConnectPort=<provisioned-port>SocketUseSSL=Y

Connect from an allowlisted source IP. The session uses BeginString=FIX.4.4 and TargetCompID=SIFTINGIO, with a 30 second heartbeat by default.

Step 3

Log on and subscribe

Send a Logon (35=A), then a MarketDataRequest (35=V) listing the symbols you want to feed. Use SubscriptionRequestType (263) = 1 for snapshot plus updates and MarketDepth (264) = 1 for top of book.

logon · 35=A
8=FIX.4.4|35=A|49=YOUR_SENDER|56=SIFTINGIO|34=1|52=20260625-12:00:00.000|98=0|108=30|10=000
market data request · 35=V
8=FIX.4.4|35=V|49=YOUR_SENDER|56=SIFTINGIO|262=req-1|263=1|264=1|267=2|269=0|269=1|146=2|55=BTCUSD|55=XAUUSD|10=000

You receive a MarketDataSnapshotFullRefresh (35=W) with the current book, then MarketDataIncrementalRefresh (35=X) messages for every change. Each entry carries an MDEntryType (269): 0 bid, 1 offer, and 2 trade for crypto.

Step 4

Map symbols

SiftingIO sends canonical symbols in Symbol (55). MetaTrader symbol names are defined in your platform, so keep a map from the SiftingIO code to your configured symbol. Some examples:

SiftingIO (55)
BTCUSD
BTCUSD (crypto, bid / ask / trade)
ETHUSD
ETHUSD (crypto, bid / ask / trade)
GBPUSD
GBPUSD (forex, bid / ask)
XAUUSD
XAUUSD or GOLD (metals, bid / ask)

Request the static mapping sheet during onboarding, or discover the full tradable universe over FIX with a SecurityList (35=x 35=y).

Step 5

Translate ticks into quotes

Run the FIX session in the language your platform tooling already uses. In the bridge, read the MD entries off each refresh, maintain a top-of-book per symbol, and emit a bid and ask. Carry the last known opposite side when only one side updates.

Bridge.cs
// QuickFIX/n. FromApp fires for every inbound application message.public void FromApp(Message message, SessionID sessionID){    if (message.Header.GetString(Tags.MsgType) != MsgType.MARKET_DATA_INCREMENTAL_REFRESH)        return; // snapshots, rejects and admin messages handled elsewhere     int count = message.GetInt(Tags.NoMDEntries);    var group = new MarketDataIncrementalRefresh.NoMDEntriesGroup();     for (int i = 1; i <= count; i++)    {        message.GetGroup(i, group);        char entryType = group.GetChar(Tags.MDEntryType); // 269: '0' bid, '1' ask        string symbol = group.GetString(Tags.Symbol);     // 55: BTCUSD, XAUUSD        decimal price = group.GetDecimal(Tags.MDEntryPx);  // 270         if (!_symbolMap.TryGetValue(symbol, out string mt))            continue; // not enabled on this platform         var side = _book[mt]; // carry the last known opposite side        if (entryType == MDEntryType.BID) side.Bid = price;        else if (entryType == MDEntryType.OFFER) side.Ask = price;        _book[mt] = side;         // Hand the tick to your MetaTrader feeder:        // MT4 DataFeed API, or MT5 Gateway API.        _feed.Quote(mt, side.Bid, side.Ask);    }}
Resend policy
Market-data messages are perishable. On a ResendRequest, SiftingIO responds with SequenceReset-GapFill for market data rather than replaying stale quotes, and on reconnect you receive a fresh snapshot. Re-subscribe and rebuild your book after any reconnect.
Step 6

Feed MetaTrader 4 or 5

The bridge hands each refreshed quote to the platform interface for your MetaTrader version. Both push bid and ask into the server, which broadcasts to terminals.

MetaTrader 4

Push quotes through the DataFeed API. A feeder plugin runs alongside the server, brings external prices into the platform format, and the server passes them to client terminals in real time.

MetaTrader 5

Push quotes through the Gateway API. A gateway connects the platform to the external source and streams live bid and ask into the server for distribution.

Both interfaces are server-side and licensed to platform operators by the MetaTrader vendor. The SiftingIO bridge sits in front of them: it owns the FIX session and the symbol mapping, and calls the platform interface with a clean bid and ask per symbol.

Step 7

Verify in the terminal

Open a client terminal connected to your server and confirm the feed end to end:

  • The mapped symbols appear in Market Watch and tick as incremental refreshes arrive.
  • Charts build from the incoming quotes, and the spread matches the bid and ask on the session.
  • An Expert Advisor reading Bid and Ask sees live values, and prices stop on logout and resume on reconnect.

Notes and limits

  • Market data only. The FIX feed never carries order entry, so it does not place, route, or fill trades.
  • SiftingIO prices are an aggregated fair-price reference computed across sources, not any single venue’s quote. Treat them as reference values for charting and analytics.
  • Forex and metals carry bid and ask only, with no trade entry. Crypto also includes a trade price.
  • Sessions are continuous for crypto and aligned to market hours for forex and metals, so expect quiet periods when those markets are closed.

FAQ

  • Can a MetaTrader terminal connect to SiftingIO directly over FIX?

    No. A terminal only talks to its own server. The FIX session runs server-side in a bridge that injects quotes through the MT4 DataFeed API or the MT5 Gateway API, and the server distributes them to terminals.

  • Is this a liquidity or execution bridge?

    No. The FIX feed is market data only, with no order entry. It supplies prices for Market Watch, charts, and indicators. Order routing and execution stay with your platform.

  • Does it support both MetaTrader 4 and MetaTrader 5?

    Both. MT4 ingests external quotes through the DataFeed API and MT5 through the Gateway API. The same FIX session feeds either platform.

  • Which symbols can I feed into MetaTrader?

    Any symbol in your FIX entitlement across crypto, forex, and commodities, using SiftingIO canonical codes such as BTCUSD, GBPUSD, and XAUUSD. You map each one to the symbol name configured in your platform.

  • Do forex and metals carry a trade price?

    No. Those classes have no public trade tape, so SiftingIO sends bid and ask only. Drive the MetaTrader tick from those two sides, and do not treat a synthetic mid as an executed print.

  • What do I need before I start?

    A licensed MT4 or MT5 server with DataFeed or Gateway API access, a SiftingIO Enterprise FIX entitlement, allowlisted source IPs, and a FIX engine such as QuickFIX. Provisioning and conformance are covered in the FIX API docs.

Get connected

Bring SiftingIO into MetaTrader

We provision your FIX session, run a conformance pass, and promote you to production. Reach out to start onboarding, or read the FIX reference first.