A trade starts the flow.
A trader makes a trade. That action is the source for the bot to follow.
Copy trades on FOMO with FOLLOW.
Let the bot handle the repetition. Keep your own rhythm.
Try 7 days for $0. Upgrade when you need more.
From the first signal to the final exit. Explore proportional copying and configurable checks, one stage at a time.
// Read confirmed source trades.
for await (event of source.fills()) {
trade = normalize(event);
if (!trade.confirmed) continue;
if (ledger.has(trade.id)) continue;
queue.push(trade);
}A venue adapter watches the selected trader's confirmed fills. Each event is normalized into a market, side, quantity, price and unique trade ID.
Previously handled trade IDs are ignored. The execution stage reserves each ID before placing an order.
// Copy only an eligible signal.
if (trade.age > maxAge) skip();
if (!markets.allows(trade)) skip();
quote = venue.quote(trade);
if (!quote.hasLiquidity) skip();
if (quote.slippage > limit) skip();
if (risk.isPaused()) skip();Signal checks cover recency, supported markets, liquidity and configured slippage limits.
Thresholds belong to the strategy configuration. Passing a check does not guarantee the final fill price or prevent losses.
// Copy allocation, not raw size.
if (source.equity <= 0) skip();
weight = trade.notional / source.equity;
size = min(
copyBudget * weight,
perTradeCap,
remainingExposure
);
if (size < venue.minOrder) skip();A source trade's share of source equity is applied to the allocated copy budget. The resulting order is capped by the per-trade limit and remaining exposure allowance.
Order sizing requires up-to-date equity and position data. If either is unavailable, skip the signal instead of guessing the order size.
// One source fill, one copy intent.
if (!ledger.claimOnce(trade.id)) skip();
quote = venue.recheck(trade, size);
if (!guards.pass(quote)) reject();
order = venue.submit({
size, quote, key: trade.id
});
ledger.reconcile(order);The engine reserves the source trade ID, rechecks the quote and submits through a venue adapter. The order is reconciled against fills, rejections and partial execution.
A timeout is not proof of failure. Check order status before retrying; do not blindly submit the same trade twice.
// Mirror a confirmed source exit.
if (source.positionBefore <= 0) skip();
exitShare = clamp(
source.exitQty / source.positionBefore,
0, 1
);
closeQty = copied.position * exitShare;
venue.reducePosition(closeQty);
ledger.reconcilePositions();A confirmed partial exit closes the corresponding fraction of the copied position. A full source exit requests closure of the remaining copied position.
Track actual filled quantities. Failed or partial exits must remain visible as pending exposure until resolved.
Order size, exposure limits and exit rules depend on your strategy settings. Review the resulting trades and logs in your connected dashboard.
A trader makes a trade. That action is the source for the bot to follow.
FOLLOW copies the trade, handling the action you would otherwise repeat.
The copied trade takes place on FOMO. Trading outcomes still carry risk.