Skip to main content

Copier fields

A trade copier copies trades from a leader account to one follower (single) or several (group). The same fields apply to NinjaTrader (/nt8/copiers) and Tradovate (/tradovate/copiers) unless the Broker column says otherwise.

Access: W writable, R read-only.

FieldTypeAccessBrokerConstraintsDescription
idstringRBothCopier id, assigned when it is created
nicknamestring or nullWBoth1 to 64 characters. null removes itDisplay name
activebooleanWBothNew copiers are off unless you send trueWhether the copier is copying
modeorder or execution (NinjaTrader); signal, execution or order (Tradovate)WBothHow trades are copied
leaderstringWBothOne of your accounts; not also a followerThe account being copied
typesingle or groupWBothChange it together with followers and groupNameOne follower or a named group of followers
groupNamestring or nullWBoth1 to 64 characters. Required for group, null for single. On NinjaTrader it must not match one of your account namesName of the group
followersarray of objectsWBothsingle: exactly 1. group: 2 to 200, no duplicates, leader excludedThe accounts that receive the copies
followers[].accountstringWBothOne of your accountsFollower account
followers[].rationumber or absentWBothOne of 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75 or a whole number from 2 to 10 (otherwise ratio_not_a_step), not checked when sizing.method is fixed. Groups only. Its whole-number part must not exceed sizing.maxQuantityThis follower's own ratio, instead of sizing.ratio
followers[].environmentdemo or liveRTradovateThe follower's Tradovate environment
sizingobjectWBothHow follower quantity is computed
sizing.methodratio or fixedWBoth (fixed: Tradovate)NinjaTrader copiers use ratio onlyratio multiplies the leader quantity; fixed always trades quantity
sizing.rationumberWBothOne of 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75 or a whole number from 2 to 10 (the web app's choices; otherwise ratio_not_a_step). Not checked when method is fixedMultiplier used with ratio sizing
sizing.quantityinteger or nullW (Tradovate), R (NinjaTrader)Both1 to 10000. Required for fixed, null for ratioQuantity used with fixed sizing
sizing.maxQuantityinteger or nullWBoth1 to 10000. null means no capLargest position a follower may hold
inversebooleanWBothIn order mode only together with fillsOnlyCopy in the opposite direction
fillsOnlybooleanWBothNot allowed in execution modeFills Only: copy the leader's fills as market orders and ignore its working orders
instrumentsarray of stringsWBoth1 to 200 root symbols (ES, MNQ: uppercase letters and digits, up to 10 characters, no duplicates), or ["*"] alone for allProducts the copier copies
symbolReplacementsobjectWBothAt most 200 FROM: TO pairs. Keys and values are uppercase letters and digits, up to 10 characters. No self-mapping. Keys must be in instruments unless *. In order mode only related sizes of one product (for example ES to MES). A PATCH replaces the whole map; send {} to remove them allTrade a different product on the followers
stealthbooleanWBothStealth Mode. NinjaTrader: copied orders get neutral names instead of tracking ids. Tradovate: the copied-from attribution text is left out
tandembooleanWBothEvery follower needs an Account Manager monitor on the same brokerTandem Mode: copying runs only while the followers' monitors are active and within their limits
autoSyncobjectWBothKeep follower positions in line with the leader
autoSync.enabledbooleanWBothTurn Auto-Sync on
autoSync.intervalSecondsintegerWNinjaTrader3 to 900. Default 10How often positions are compared
syncCorrectionobjectWBothLimits on automatic corrections
syncCorrection.cooldownSecondsintegerWBothNinjaTrader 60 to 86400; Tradovate 30 to 86400Minimum time between corrections
syncCorrection.maxAttemptsintegerWBoth1 to 10Corrections allowed per mismatch
reconnectDelayMsintegerWNinjaTrader0 to 3600000, whole seconds only (multiples of 1000). 0 is offReconnect Delay: extra wait after a leader reconnects before copying resumes
strategyTagModeoverride or skipWNinjaTraderHow Auto-Sync treats follower positions held by Strategy Lock: skip leaves them alone, override corrects them
createdstring (timestamp) or nullRBothWhen the copier was created
updatedstring (timestamp) or nullRBothWhen the copier last changed

Sending a NinjaTrader-only field to a Tradovate copier returns 422 field_not_applicable. So does sizing.quantity on a NinjaTrader copier.

A create refuses read-only fields (422 field_read_only). A PATCH may echo read-only and not-applicable fields back from a GET: each one is ignored when it equals the saved value (null for a field this broker does not have) and refused (field_read_only or field_not_applicable) when it differs. updated is always ignored. So you can GET a copier, edit it and PATCH the whole object back; if nothing differs the response says changed: false.

Defaults on create​

A create needs type, leader and followers (plus groupName for a group). Everything else takes the web app's new-copier default, except active, which is false unless you send true:

  • NinjaTrader: mode: order, stealth: true, ratio sizing at 1, instruments: ["*"], Auto-Sync on every 10 seconds, sync correction 300 seconds and 1 attempt, tandem: false, reconnectDelayMs: 10000, strategyTagMode: override.
  • Tradovate: mode: signal, stealth: true, ratio sizing at 1, instruments: ["*"], Auto-Sync on, sync correction 300 seconds and 1 attempt.
New copiers start off

A copier created without "active": true does not copy anything until you turn it on. This lets you review it first.

Rules​

The ownership check runs on every create and whenever type, leader, followers or groupName is sent. The loop, duplicate and Auto-Sync checks run on every create, whenever one of those fields or instruments or autoSync is sent, and when a copier is turned on. They compare against all your copiers on the same broker, including ones that are off. Turning a copier off is always allowed.

  • Ownership. Every account must be yours (404 account_not_found). On NinjaTrader the connected add-on must list them, and Backtest and Playback101 are never accepted. Because the add-on is asked, changing any of the four fields above needs it connected (409 addon_disconnected); sending their saved values back does not. On Tradovate they must be among your synced Tradovate accounts.
  • No copy loops (409 copier_cycle): a copier cannot lead, directly or through other copiers, back to its own leader.
  • No duplicates (409 duplicate_copier): a second copier from the same leader to the same follower is allowed only when the two copy different instruments. * overlaps everything. On Tradovate a copier that is on is held to a stricter rule: creating one with "active": true, or adding a leader and follower pair to a copier that is on, is refused when any other copier already links that pair, whatever the instruments.
  • Auto-Sync (NinjaTrader, 409 autosync_conflict): a follower shared by two copiers cannot have overlapping instruments when either copier uses Auto-Sync. Sharing a follower at all needs the add-on connected and v1.10.10 or newer.
  • Shared followers (Tradovate, 409 follower_conflict): a copier that is on cannot share a follower with another active copier when either of them uses Auto-Sync.
  • Tandem (409 tandem_requires_monitor): every follower needs an Account Manager monitor.
  • Mode rules: execution mode cannot use fillsOnly, and inverse in order mode needs fillsOnly. These are refused rather than silently changed.
  • Changing the type: send type, followers and groupName together, for example {"type": "group", "groupName": "Team", "followers": [...]}. A group needs groupName and at least two followers; a single copier needs exactly one follower and groupName: null.
  • Names: Tradovate account names compare without regard to case; NinjaTrader names must match exactly. Account names may contain spaces inside the name, but leading or trailing spaces, tabs, non-breaking spaces, other whitespace, ; and = are refused (422 validation_failed).
  • Turning Auto-Sync off on NinjaTrader resets syncCorrection to 300 seconds and 1 attempt, as the web editor does, unless you send syncCorrection in the same request.
  • A copier saved before today's rules does not block unrelated changes. A NinjaTrader copier saved with fixed-quantity sizing reads as fixed with its quantity and can be switched to ratio.

A follower ratio whose whole-number part is larger than sizing.maxQuantity is refused, because that follower could never place a trade. Other group sizing that the platform would block is saved and returned with a warning.

When changes take effect​

  • NinjaTrader: sent to the add-on right after the save, or when it next connects.
  • Tradovate: signal mode on the next signal, execution and order mode on the next fill. Turning on your first active Tradovate copier can take up to about 30 seconds.