Trade Copy Bridge
The Trade Copy Bridge copies trades at market from one source ConnectorAccount to one or more target ConnectorAccounts.
This is separate from native b_book-based trade copying. The two features use different configuration and sign conventions; do not combine their rules.
Features:
- One source → many targets.
- Per-target follow or reverse.
- Size scaling.
- Flexible source matching — by connector, account, symbol, and subIDs.
- Hot reload — no restart.
Note: Copies carry the source instrument name unchanged — each target Taker must quote that exact instrument or the copy is rejected.
Note: FIX sequence numbers are persisted, so after a disconnect or restart XCore resends the trades missed while the bridge was down — they are then copied, with duplicates deduplicated by the copy ClOrdID.
Prerequisites
Set these up on the XCore side before adding any copy rule:
1. Configure Giveup and Taker connectors
Create a giveup_activity_v3 connector to send trades for copying, and a PRIMEXM_FIX44 Taker connector to accept them. Both must be Enabled.
2. Add a Connector Account and Stream
On the Taker connector, add a ConnectorAccount and a ConnectorAccountStream with their settings. Instrument names must match your source Taker — copying happens by instrument name.
3. Configure a Giveup rule
Route source trades into the giveup_activity_v3 connector.
video=1222097545
Setup Copy Rules
A copy rule is a name → value row in the giveup connector's connector_config_setting:
1. Set the name
The source pattern — CT: followed by connector, account, symbol and subIDs.
2. Set the value
The target(s) and their signed scale.
3. Save
The bridge reloads within 30 seconds, no restart.
4. Verify
Run a test trade. Details below.
video=1222097544
Rule name — the source
The name is CT: followed by pipe-separated segments. Only the connector is required; every omitted segment on the right defaults to * (any), and any segment may be *.
CT:<connector>[|<account>[|<symbol>[|<subID1>[|<subID2>[|<subID3>]]]]]
- connector, account — exact name or
*. - symbol — glob mask on the source instrument;
*matches any run of characters (including/, soEUR*matchesEUR/USD). No*means an exact match. - subID1–subID3 — exact, case-sensitive match against the incoming subIDs, or
*. No globbing.
To pin a right-hand segment while leaving a left one open, write * explicitly.
Examples
CT:MT5 Connector|MT5_Acc_A # this account, any symbol, any subID
CT:MT5 Connector|*|EUR* # any account, EUR* symbols
CT:MT5 Connector|*|*|*|*|123456 # pin subID3 only
CT:* # every trade on the DropCopy session
Rule value — the target(s)
The value lists the targets. For each, enter the signed scale, a comma, the target connector, a pipe, and the target account. Separate targets with ;.
<scale>,<connector>|<account>[; <scale>,<connector>|<account> …]
The scale is signed: sign sets direction (positive follows the source side, negative reverses it) and magnitude sizes the copy. Zero is rejected. The target connector must be concrete; the target account may be * to copy to every enabled account on that connector.
Example — follow one target 1:1, reverse another 1:1
1.0,CopyTrading Connector|CopyTrading A;-1.0,CopyTrading Connector|CopyTrading B
Verify with a test trade
Execute a test trade on the source — for example BUY 1.0 lot EURUSD on MT5_Acc_A. With the rule above, CopyTrading A receives BUY 1.0 EURUSD (follow) and CopyTrading B receives SELL 1.0 EURUSD (reverse). Both fills confirm the bridge is wired end to end.
Multiple rules and merge behavior
Add as many CT: rows as you like; all rules matching a fill fire, so one source fill can drive several copies.
Keep targets distinct per rule
A single fill is never copied to the same target account twice. If two matching rules point at the same target account, only the first (rules are ordered by name) is applied — the second, along with its scale and direction, is silently ignored. Keep each target in a single rule so nothing is lost.
How it works
- The giveup rule feeds source trades to the bridge over a FIX 4.4 DropCopy session.
- The bridge pairs each order-open event (
U1, carrying side, instrument and subIDs) with its order-close event (U2, carrying the fill size) byorderID. The copy fires on theU2close, so it mirrors what actually filled — not what was requested. - Each copy goes out as a market order on a FIX 4.4 Taker session (
PRIMEXM_FIX44) — one session per target ConnectorAccount — keeping the source instrument name.