Documentation

Setup guides, configuration, trade copier usage, troubleshooting, and frequently asked questions.


Table of Contents

  1. Introduction
  2. Getting started
  3. Trade copier configuration
  4. Risk management
  5. Monitoring and analytics
  6. Sharing your results
  7. Backtesting and challenge simulator
  8. AI assistant
  9. Settings and preferences
  10. API and MCP
  11. Pricing
  12. Affiliate program
  13. FAQ
  14. Support

Introduction

5MTrader is a cloud-based copy trading platform for MetaTrader 5 and cTrader. Connect a master account and multiple slave accounts — from either platform, or both at once — and trades are copied automatically in real time, no local software to install, no VPS required.

It's more than a copier — it's a full trading desk. Alongside copying, every connected account gets live monitoring, a real-time terminal, performance analytics and complete trade history, all in one dashboard. See Monitoring and analytics.

Built and operated on dedicated cloud infrastructure by IPTRADE COPIER, LLC (Delaware, United States).

What it does

You set one account as Master (the source) and others as Slaves (the copiers). Every trade open, modify, and close is replicated across connected accounts in under 100ms. No manual re-entry, no missed trades. Ideal for running the same strategy on several brokers, scaling prop firm passes, or mirroring a personal account to funded accounts.

Features

  • Execution under 100ms — Trades copied in milliseconds on dedicated cloud infrastructure tuned for MetaTrader 5 and cTrader.
  • Cloud-based — Everything runs on our servers. No downloads, no installation, no VPS to manage on your end. Pick shared low-latency infrastructure or upgrade to your own dedicated private server (fully provisioned and managed by us).
  • Live monitoring — Watch balance, equity, open P&L and position counts for every connected account in real time, plus a live terminal of all open positions and pending orders across accounts. The dashboard home is an editable Live Desk: around 28 widgets you can rearrange, resize and persist. No refresh, no spreadsheet.
  • Built-in analytics — An equity curve, drawdown, win rate, 40+ performance metrics and a proprietary 5MTrader Score (graded S to F) that rates your edge — plus a calendar heatmap and full trade history, with no third-party analytics tool required.
  • Risk management — Hard limits per account (daily loss, drawdown, position and lot caps, trading hours, news blackouts) enforced server-side 24/7, with automatic actions like blocking copies, turning copying off or flattening the account — plus alerts by email, webhook, Telegram or Discord. See Risk management.
  • Trading alerts — Notify-only alerts over the same live stream: trades placed, modified or closed, news ahead, copier health and behaviour drift (overtrading, loss streaks, revenge trading), delivered by email, webhook, Telegram or Discord. See Trading alerts.
  • Economic calendar — A built-in news calendar (High/Medium/Low impact plus holidays, nine major currencies) rendered in your timezone, with per-user filters — the same calendar that powers the risk engine's news blackouts.
  • Symbol translation — Different brokers, different ticker names. Map symbols (e.g. EURUSD → EURUSD.raw), add or remove prefix/suffix so slaves always trade the correct instrument.
  • Flexible sizing — Use a multiplier (e.g. 1.5× master volume) or fixed lot (e.g. 0.01 on every copy). Suits prop rules and risk preferences.
  • Reverse trading — Invert trade direction (buy ↔ sell) for hedging or inverse strategies.
  • Exact match — Force the slave to be an exact mirror of the master, automatically removing orphan orders. Off by default so manual trades on the slave are preserved.
  • No trade tag — Copy without writing a comment or magic number on the slave's orders. Correlation then relies solely on the server-side mapping.
  • Per-account configuration — Each slave account has its own lot settings, symbol mappings, and copy rules.
  • Configuration templates — Save a copy setup once and apply it to any account (or in bulk to every slave) in one click.
  • Shareable performance cards — Export a clean, branded image of your P&L for any period to share your results.
  • 24/7 uptime — Runs around the clock on our infrastructure. No need to keep anything open on your end.
  • Your data stays private — We never sell or share your trading data with third parties, and you can delete it anytime. Your trades and the stats derived from them are used only to run copying and power your own monitoring and analytics.

Use cases

  • Prop firm scaling — Run one strategy across multiple funded accounts (same or different brokers) with consistent risk settings.
  • Multi-broker redundancy — Same signals on several brokers for execution diversity or backup.
  • Personal + funded — Trade your own account as Master and mirror to prop/funded Slaves with adjusted lot sizes.
  • Copy services / signal providers — Use your Master as the source and connect client Slaves with their own sizing and symbol configuration.

Getting started

Setup takes under 5 minutes. No software to install — everything happens in the 5MTrader dashboard.

Step 1: Connect your accounts

  1. Log in at 5mtrader.com.
  2. Click Connect account and choose your platform — MetaTrader 5 or cTrader.
  3. Connect the account:
    • MetaTrader 5 — enter your login number, password, and server name.
    • cTrader — click Connect with cTrader and authorize access. You're redirected to cTrader's secure login (we never see your password), and every eligible account on your cTrader ID is linked automatically.
  4. The account appears in your dashboard, ready to configure.

Tip: No local software to install — everything runs on our infrastructure.

Step 2: Configure copy rules

  1. Open the Copy Trade screen, find the account and click Configure.
  2. Set the role: Master (sends trades) or Slave (copies trades).
  3. For slave accounts:
    • Choose which master to follow.
    • Set lot type: Multiplier (scale master volume) or Fixed lot (fixed size per trade).
    • Optionally enable reverse trading, exact match, prefix/suffix, or symbol translations.
  4. Save the configuration.

Tip: Takes under 2 minutes — sensible defaults are set for everything. To reuse a setup across accounts, save it as a template and apply it in one click, or apply it in bulk to every slave of a master.

Step 3: Start copying

  1. Toggle the Enable switch on your configured accounts.
  2. Trades copy in real time across all connected accounts.
  3. Monitor status directly in the dashboard.

Tip: Runs 24/7 — no need to keep anything open on your end.

Managing your accounts

The Accounts screen is your connection inventory — it's where you add, check and remove broker accounts (all copy settings live on the Copy Trade screen instead):

  • Status at a glance — Each account shows a live status chip (Connected, Connecting, Offline, Maintenance or Pending), its server or broker, and a Live / Demo badge once the platform reports the account type.
  • Plan usage — A chip shows how many account slots you have left (e.g. Available: 3/5). When you hit your plan's limit, the connect button becomes a Get more accounts shortcut to Billing.
  • Reconnect — If an MT5 account drops to Offline (typically after a password change on the broker side), a reconnect action appears: re-enter the MT5 password and it comes back online. cTrader accounts re-authorize through cTrader's login instead.
  • Delete — Removes the account and its connection permanently (with a confirmation — it can't be undone). Deleting a master releases its slaves, which keep their data and can be linked to another master.
  • Search and refresh — Find any account by number or server, and refresh the list on demand; statuses also update automatically every few seconds.

Example: your broker forced a password reset overnight. The account shows Offline on the Accounts screen — click reconnect, type the new MT5 password, and copying resumes without touching any of your copy rules.


Trade copier configuration

Account roles

  • Pending — Newly connected account. Inactive until you set it as Master or Slave.
  • Master — Sends its trades to linked slave accounts.
  • Slave — Copies trades from a chosen master account.

Enable / disable

Each account has an individual Enable toggle. When disabled, no trades are copied for that account without affecting other accounts.

Slave options

Master to follow — Choose the master account this slave copies from.

Lot type

ModeDescriptionExample
MultiplierVolume = master volume × multiplierMaster opens 1 lot, multiplier 2.0 → Slave opens 2 lots
Fixed lotAlways uses the lot size you setMaster opens 10 lots → Slave opens 0.01 lots (fixed)

Symbol management

  • Symbol translation — Map symbols between brokers (e.g. EURUSD → EURUSD.raw). Useful when different brokers use different ticker names. Matching is case-sensitive (EURUSD and eurusd are different).
  • Prefix — Add or remove a prefix from symbol names (e.g. add "Demo_" turns EURUSD → Demo_EURUSD). The prefix string is matched case-sensitively.
  • Suffix — Add or remove a suffix from symbol names (e.g. remove ".raw" turns EURUSD.raw → EURUSD). The suffix string is matched case-sensitively.

Reverse trading — Inverts trade direction. Master buys → Slave sells. Master sells → Slave buys. Useful for hedging or inverse strategies.

Exact match — When enabled, the slave becomes an exact mirror of the master: any order on the slave that doesn't correspond to a master order is automatically removed (orphan cleanup). When disabled (default), only orders copied from the master are managed — orders placed directly on the slave account are left untouched.

No trade tag — By default every copied order carries the master's ticket in its comment (and magic number on MT5), which is how a copy is recognised as belonging to a master. With this option enabled the slave's orders are placed clean: no comment, no magic number. cTrader orders still carry an opaque random label, because the platform requires one, but it holds no link to the master.

Correlation then depends entirely on the server-side ticket map that 5MTrader keeps for each master/slave pair. That map is stored on the server and survives restarts and redeploys. The risk: if it is ever lost — the server is rebuilt, the account is moved to another machine, or its data volume is wiped — open copies can no longer be matched to their master, because nothing is left on the broker side to rebuild the link from. When that happens 5MTrader deliberately stops rather than guessing: it will not close or duplicate anything, and copying for that pair resumes only once you close the slave's open orders manually or turn this option back off.

Configuration templates

Templates let you save a complete slave setup once and reuse it everywhere — ideal when you run the same rules across many accounts.

  • Save a template — Capture lot type (multiplier or fixed lot), reverse trading, exact match, prefix/suffix and symbol translations under a name you choose, from the Templates screen or directly while configuring an account.
  • Apply to an account — From the Copy Trade screen, apply any saved template to a slave in one click.
  • Bulk apply — Apply a template (or a master's current setup) to every slave of that master at once, so a whole book shares identical rules.
  • Connect unlinked slaves — Link any unconfigured slave accounts to a master in bulk, then configure them together.
  • Edit or delete — Manage your saved templates anytime from the Templates screen. Editing a template doesn't retroactively change accounts you already configured.

Risk management

Paid feature: Risk management requires an active paid plan (any plan, including the 7-day free trial on the Shared plan).

Every connected account can carry hard risk limits — daily loss, drawdown, position caps, trading hours, news blackouts and more. Limits are evaluated on the live price stream and enforced on the server that runs your account, so they keep working even if you close the dashboard or our website is down. The section has four tabs: Rules, Alerts, Templates and Notification channels.

How enforcement works

  • Rules attach to an account (master or slave — any connected account you own).
  • Each account holds at most one rule of each type — eight types in total.
  • Each account has an Enforced switch: turn it off and the rules stay saved but nothing is enforced; turn it back on and they apply again immediately.
  • Saving the rule editor replaces the account's whole rule set — including rules you left switched off. The same applies when you apply a template or edit several accounts at once.
  • On the Rules table, each rule appears as a live chip that fills up as you approach the limit: green while you're safe, amber from 80% of the limit, red at breach. The State column always names the tightest rule — the one that will fire first.

Rule types

Capital protection

RuleWhat it measuresSettingsExample
Daily lossLoss since the start of your trading day, floating P&L includedLimit in % or account currency; measured from opening balance, opening equity or the day's peak equity (daily trailing); optional auto re-arm at daily reset5% from opening balance: with a $10,000 day open, the rule fires the moment equity drops $500 on the day
Maximum drawdownYour deepest declineLimit in % or currency, measured from your starting balance (fixed), your highest equity (trailing) or your highest daily close (trailing EOD); trailing bases can lock at the starting balance10% trailing from a $12,000 equity peak: the floor sits at $10,800 and only ever moves up
Equity floorAn absolute level equity may never touchA figure in account currency (no percent — a floor is a level, not a distance)Floor $9,000: if equity ever prints $8,999, positions are closed
Profit targetFires when equity reaches a target — to protect a green dayLimit in % or currency; optional auto re-arm at daily reset. Switches itself off after firingTarget 4%: hit +$400 on a $10,000 account → get notified (or flatten and stop) instead of giving the gain back

Day boundary: every daily reset — and the end-of-day snapshot the EOD trailing base uses — follows a per-account timezone and reset hour, set right in the rule editor. The starting balance those bases and the lock measure from is editable in the same editor. It defaults to your own timezone at midnight; match it to your firm's clock (FTMO midnight Prague, futures 17:00 New York) when you mirror their rules.

Exposure

RuleWhat it limitsSettingsExample
Position capHow many positions may be open, and how many may be opened per dayMax open and/or max per day (whole numbers)Max open 3, max 10/day — the 4th simultaneous copy (or the 11th of the day) is refused
Lot sizeVolume per trade and across everything openMax per trade and/or max total (in lots). A copy above the cap is refused, never shrunkMax 1 lot per trade, 5 lots total: a 2-lot master trade simply doesn't copy

Timing

  • Trading hours — Sessions during which copying is allowed, in the account's day-boundary timezone — your own timezone unless you change it in the rule editor (up to 12 sessions, each with from/to times and day-of-week toggles; overnight sessions like 22:00 → 02:00 work fine). Outside the sessions the rule's breach actions fire — by default, new copies are blocked. Example: one session Mon–Fri 08:00–17:00 in your timezone keeps the account strictly on London hours; nothing copies on the weekend or overnight.

Surveillance

  • News windows — Blocks new copies around scheduled economic releases: set minutes before and minutes after (default 5/5) and which impact levels count (Low / Medium / High — default High only). The blackout applies to the whole account, all symbols. Manual trades placed directly on the platform can't be blocked, but they are found in a periodic review afterwards — and those findings fire the rule's notification actions too. Example: 15 minutes before/after high-impact USD news keeps the copier flat through Non-Farm Payrolls.

When a rule is breached

Each rule carries its own checklist of actions:

  1. Email me — a breach email naming the rule, the reading, the limit and what was done.
  2. Send a webhook — a JSON event POSTed to your webhook URL.
  3. Message me on Telegram / Message me on Discord.
  4. Block new copies — the engine refuses new copies while the rule is broken; open positions are untouched.
  5. Turn copying off — flips the account's copy switch off. If the account is a master, every linked slave is turned off too. It stays off until the daily re-arm (if enabled) or until you re-enable it manually.
  6. Close every position — flattens the account immediately. Ticking this automatically also stops new entries (it adds Turn copying off — or Block new copies for news windows, since a blackout frees itself minutes later).

If you tick a Telegram/Discord/webhook action without configuring that channel, the editor warns you inline — otherwise nothing would be sent.

Prop-firm example: the editor's 5% / 10% preset reproduces the classic evaluation pair in one click — daily loss 5% of opening balance (email + turn copying off, auto re-arm next day) and static drawdown 10% (email + turn copying off + close every position). A Conservative preset (2% daily, 5% drawdown, position cap 3) is one click away too.

Daily reset, timezone and re-arm

Each account has its own day boundary — a timezone plus the time of day the trading day starts — set at the top of the rule editor when you edit a single account (a multi-account edit leaves each account's boundary untouched). It defaults to midnight in your dashboard timezone (from Settings). The boundary drives everything daily: the daily-loss reset, the position cap's per-day counter, the end-of-day snapshot behind the EOD trailing drawdown base, and auto re-arm, which switches copying back on at the next day start — so a daily-loss stop is a one-day timeout, not a permanent shutdown. Trading-hours sessions are read in the same timezone, and clock changes (DST) are followed automatically. Example: set New York with the day starting at 17:00 and your daily-loss rule resets at 17:00 New York — a breach at 15:30 pauses the account for just ninety minutes, exactly like an exchange trading day.

Risk templates

The Templates tab saves a complete rule set — types, values and breach actions — under a name (e.g. "Prop firm 2% daily"), so you can apply identical protection to many accounts in two clicks:

  • New template — build it in the same editor as the Rules tab, starting from a preset if you like.
  • Apply — pick any of your connected accounts (or Select all); the template's rules replace whatever those accounts had. Locked accounts can't be selected.
  • Edit / delete — editing or deleting a template never changes accounts that already received its rules.

Your saved templates also appear as Start from buttons inside the rule editor itself.

Lockout (self-exclusion)

The Lock action closes everything and stops copying on the chosen accounts until the lock expires — with no early unlock, by design. Pick a quick duration (30 min / 1 h / 3 h), the end of a market session (Asia, London or New York), or any date and time up to 30 days ahead. While locked, the account's rules, switches and templates are frozen; locking a master locks its slaves too. When the lock expires, copying is re-enabled automatically and the event is logged. Example: two daily-loss stops in a week? Lock the account until Monday and make the break non-negotiable.

Close all

Close all flattens every open position on the selected accounts right now (masters are closed before slaves) and reports exactly how many positions were closed. The request survives brief connection issues — it's delivered as soon as the account's server is reachable.

Notification channels

One set of channels shared by every account, configured once on the Notification channels tab. Email needs no setup — it uses your account email. Each card shows Configured / Not set, and a Send test button that delivers a test message with the values as typed, so you can verify before saving:

ChannelWhat you enterWhere to get it
WebhookA public https URLYour own endpoint — every breach is POSTed there as JSON (event, account, rule, metric, limit, equity, actions taken)
TelegramBot token + chat IDCreate a bot with @BotFather, send it a message, paste the token and your chat ID
DiscordDiscord webhook URLChannel settings → Integrations → Webhooks → copy the URL

A real alert reads like: "⚠️ Daily loss triggered on 12345678 — Metric 5.2% / limit 5% — Equity $9,480 — Actions: copying turned off." Deliveries are retried automatically for up to five attempts. Only rule breaches notify — manual locks, manual close-alls and automatic re-arms don't message you.

Trading alerts

The Alerts tab is the read side of the same live stream: alerts only inform — they can never act on an account (acting is what rules are for). Each alert watches the accounts you pick, delivers on the channels you tick (email, webhook, Telegram, Discord — the same notification channels as the risk engine) and carries its own cooldown (default 5 minutes) so a busy stream doesn't flood you. Six alert types:

AlertFires whenFilters
Trade placedA new position or pending order appears on a watched accountSymbols (substring match), minimum volume
Trade modifiedSL, TP or the price of an order changesSymbols, minimum volume, minimum change — so a 0.1-pip SL nudge stays quiet
Trade closedA position closes, with its resultSymbols, minimum volume
News aheadA scheduled economic release is coming upMinutes ahead (default 15), impact levels, currencies
Copier healthA connected account has been offline longer than a thresholdOffline minutes (default 5)
BehaviourYour own trading driftsChoose the detectors: overtrading (more than N closed trades in a day, default 10), loss streak (N consecutive losses, default 3) and revenge trading (re-entry within N minutes of a loss, default 5)

Behaviour detectors are computed from your own closed trades, in your dashboard timezone. A hard ceiling of 100 alert notifications per day protects your inbox no matter how the filters are set.

Example: one alert with Trade closed + Behaviour (loss streak 3) on your funded account, delivered to Telegram — you hear about every closed trade, and the third consecutive loss arrives flagged before you talk yourself into a fourth.


Monitoring and analytics

5MTrader isn't just a copier — it's a full trading desk. Every connected account is monitored live and fully analyzed, all from the same dashboard. None of these screens require you to keep MetaTrader 5, cTrader or any local software open; everything runs on our infrastructure.

Live Desk

The dashboard home — Live Desk — is a live command center for all your connected accounts, and it's yours to arrange: an edit mode lets you add, remove, reorder and resize widgets, and the layout is saved to your profile (a reset puts the default back). Around 28 widgets in five groups:

  • Metrics — KPI tiles aggregated across your accounts: online accounts (e.g. 4 of 5), total balance and equity, live floating P&L, today's / this week's / this month's PnL with trade counts (the Today tile carries a quick Share action), open positions, win rate, profit factor, expectancy, max drawdown, exposure, streaks and current risk state.
  • Live — streaming tables: every open position and pending order across accounts, today's trades, recent trades and exposure by symbol.
  • Performance — charts computed from your closed trades: equity curve, drawdown curve, daily PnL, symbol breakdown, win-rate gauge, your 5MTrader Score, the calendar heatmap, and weekday / session / hour-of-day breakdowns.
  • Risk & news — live meters for your enforced risk rules and the next economic events.
  • Accounts — the per-account live status table (status, role, a one-line copy-config summary like → master, ×2, reverse…, balance, equity, today's PnL, open P&L, open positions and pending orders) and, on Private Server plans, the Private Server panel — your dedicated VPS live status, region, CPU/RAM usage and specs, with the IP address hidden behind a show/hide toggle. The region is chosen when you subscribe and is fixed for the life of the subscription: to run in another one, cancel the plan and subscribe again picking the new region.

Example: you run one master and four funded slaves. One glance at Live Desk tells you all five are online, the book is +$230 floating, one slave shows Offline in red — and the config column confirms the other three are still copying at ×1 with reverse off.

Live terminal

The terminal is a real-time view of every open position and pending order across your accounts. Each row shows the account, server, symbol, side (buy/sell), volume, open price, open time, stop loss (SL), take profit (TP) and live P&L. Filter by account, and the aggregated balance, equity and open P&L update continuously as prices move.

Statistics and analytics

A complete analytics suite computed from your closed trades — the same metrics professional desks pay for, built in:

  • 5MTrader Score — a single proprietary composite grade from S to F (0–100) that rates the quality of your edge, from Top-tier edge (S, 90+) down to No edge yet (F).
  • Equity curve and drawdown — cumulative P&L over time and your deepest peak-to-trough declines, including how long the longest drawdown lasted.
  • Win rate — wins, losses and break-even trades, with average win and average loss.
  • 40+ metrics across key ratios and advanced stats — expectancy, average win/loss ratio, recovery factor, Sharpe, Sortino and Calmar ratios, day win rate, best/worst trade, best/worst day, average holding time, Kelly %, SQN (System Quality Number), Z-score, standard deviation per trade, profit per lot, trades/winners/losers per day, and total commission and swap.
  • Distributions and breakdowns — P&L distribution, trade duration, results by weekday and by hour, an activity heatmap, long vs short split, and your best and worst symbols by P&L and volume.

Every chart respects the active date range and account filters, so you can analyze a single account or your whole book over any period.

Calendar heatmap

An at-a-glance heatmap of your closed-trade P&L: green cells printed, red cells bled, each showing the net result and trade count for that period. Switch the granularity between Month, Quarter and Year, and toggle the metric shown on each cell (net P&L or trade count). Filter by account and step back and forth between periods to see exactly what drove your results.

Trade history

A complete deal history across all your accounts. Every fill shows symbol, side, volume, open and close price, commission, swap and net profit, sortable down to the ticket. Filter by account and date range to reconcile any period exactly.

Economic calendar

The News screen is a built-in economic calendar, rendered entirely in your timezone — no more converting release times in your head:

  • Two views in one — a month grid on the left (each day flagged with a folder icon coloured by the loudest impact of the day) and the event list on the right, grouped by day. Click a day for a day view, a row's arrow for the week, or the header arrow for the whole month; a Today button snaps you back.
  • What each event shows — time, currency and impact: High, Medium, Low or Holiday, each with its own colour. The next upcoming event is highlighted and scrolled into view automatically.
  • Nine major currencies — AUD, CAD, CHF, CNY, EUR, GBP, JPY, NZD and USD.
  • Filters that stick — filter by impact, by currency, and by event type (Growth, Inflation, Employment, Central Bank, Bonds, Housing, Consumer Surveys, Business Surveys, Speeches, Misc). Your filter set is saved to your profile and restored on every visit; the current view and date live in the URL, so a filtered week can be bookmarked or shared.
  • Coverage — events refresh hourly and extend roughly three months ahead.

Example: before a trading week, open the week view, filter to High impact + USD/EUR only, and you have the exact releases — in your local time — that your news-window risk rule will be blocking around.

How live data updates

Live figures — balance, equity, open P&L and position counts — stream continuously and refresh about once per second, so the overview, terminal and account tables always reflect your current exposure without a manual refresh. Statistics, the calendar and trade history are computed from your closed trades and update as new trades settle. The Daily PnL column on the account tables and the Today's PnL tile are read from those same closed trades: the net result of everything that closed since the start of your trading day, cut at midnight in your dashboard timezone. You never need to keep MetaTrader 5, cTrader or any local software running for any of this — it all runs on our infrastructure.


Sharing your results

Turn any period into a clean, branded performance card you can post or send. Open the Share screen to build one, or use the quick Share action on the Live Desk to share today's P&L instantly.

  • Pick a period — Today, this week, this month, this year, or all-time.
  • Choose what to show — Toggle percent of capital, balance, trade count, win rate, profit factor and your best trade on or off.
  • Net or gross — Include or exclude swap and commission from the P&L shown on the card.
  • Identity — Optionally show your name and/or email on the card, or keep it anonymous.
  • Filter by account — Build the card from a single account or your whole book.
  • Export — Download the card as an image, or share it directly on devices that support native sharing.

Tip: Your card only ever shows the figures you choose — nothing about your strategy, positions or credentials is included.

Public verification page

Anyone can fake a screenshot — so 5MTrader can back your card with a live, verifiable page. Turn on Include QR code on the Share screen and two things happen:

  • A QR code is stamped onto the card itself, and a shareable link appears next to the switch (with a copy button). The link regenerates automatically whenever you change any card setting, so it always matches what's on screen.
  • Whoever scans the QR (or opens the link) lands on a public verification certificate: the period, your net P&L or verified balance, and exactly the extra metrics you ticked — nothing more. It shows your certificate name if you set one, or just "Verified trader" if you'd rather stay anonymous.

What makes it trustworthy — and safe:

  • Recomputed live — the figures aren't baked into the link; every visit re-checks them against your synced trade history, so the page always shows real, current numbers for that period.
  • Tamper-proof — the URL is cryptographically signed. Change a single character and it stops resolving.
  • Private by design — visitors never see your trades, positions, account numbers, brokers or email. Turn on Percentage only and even the currency amounts disappear.
  • Not indexed — search engines are blocked; the page is reachable only by the link or QR you hand out.
  • No expiry — the link keeps working for as long as your 5MTrader account exists, so a card you posted months ago still verifies.

Example: you post this month's card in a trading community. A skeptic scans the QR and sees a 5MTrader-issued certificate — This month, net P&L +$1,840, 62% win rate, verified live — without learning your broker, your account size (if you hid it) or a single position.


Backtesting and challenge simulator

The dashboard includes a full chart backtester built on TradingView charts: replay historical market data candle by candle — or tick by tick — and trade it with a simulated account, exactly like a live chart. The backtester, its TradingView charts and custom indicators are free for every registered user — no subscription required. The prop-firm challenge simulator needs an active paid plan.

Sessions

Create a session from the Backtesting screen and choose its type at the top: Backtest session (free practice trading) or Prop firm session (a challenge simulation — see Prop-firm challenge simulator). Then set up the market and account:

  • Symbols — Pick one or more instruments from the searchable list (a prop firm session runs on exactly one symbol).
  • Date range — Bounded by the historical data available for the selected symbols; the form shows the exact Data available range. Leave the end date empty to replay up to the latest available data (a prop firm session requires an end date).
  • Name (optional — one is generated if you leave it blank), starting balance (default $10,000) and leverage.
  • Base layout — Optionally start the chart from a saved layout's indicators, drawings and style.

Everything saves automatically as you go: replay position, balance, open positions, pending orders and your chart layout, so you can leave anytime and continue later from the session list. Each session card shows its status, symbols, dates, trades, win rate and P&L, with shortcuts to continue the session or open its full statistics. Deleting a session permanently removes it and all its trades.

Market data and replay accuracy

  • Coverage — Sessions replay real historical data we store for a curated set of symbols: major forex pairs, metals, indices, crypto and more. Each symbol shows exactly how far back its data goes when you create a session.
  • Resolutions — Chart timeframes from 1 minute up to yearly, plus a 1-second resolution on symbols with tick data.
  • Tick and bar stepping — Recent history (roughly the last month) replays tick by tick with the real bid/ask spread; older history advances in one-minute steps with no spread.
  • Costs — Simulated trading applies no commission, swap or slippage: pending orders, stop loss and take profit fill exactly at their price (take profit is checked first when both are touched in the same step).
  • Leverage and margin — The session's leverage is enforced like a real account. Each open position locks margin (its notional value divided by your leverage), and the Account widget shows used margin, free margin and your margin level. An order that needs more margin than you have free is rejected, and if your margin level falls below 50% the simulator liquidates positions automatically — worst-losing first — until it recovers.

Replay controls

A floating control bar — drag it anywhere on the chart; its position is remembered per session:

  • Play / pause at 0.5×, 1×, 2×, 5×, 10×, 30× or 60× speed — at 1× chart time passes in real time; at 60× a market minute passes every second.
  • Step forward one candle of the current chart timeframe, or skip ahead by a fixed interval: 1m, 5m, 15m, 1h, 4h or 1D.
  • Go to — Click the replay clock to jump to any later date and time from a calendar.
  • Active symbol — On multi-symbol sessions, switch the chart between the session's symbols.

Replay is forward-only: you can never rewind, and the chart never reveals anything past the current replay moment. To redo a run, create a new session (or use Try again on a finished challenge). When the replay reaches the end of the data, playback stops — a practice session simply stays open, while a prop firm session receives its verdict.

Trading

  • Orders — Place market, limit and stop orders with an optional stop loss and take profit from the order panel; buys fill at the ask, sells at the bid. Volume is in lots (minimum 0.01).
  • On-chart management — Positions, pending orders, stop losses and take profits appear as price lines with pills at the chart's edge: drag a pill to re-price a pending order, SL or TP; click its × to close or cancel; or open a position's edit dialog to adjust its brackets by price or by ticks, with the projected P&L shown.
  • Drawing to order — Draw a long/short position tool on the chart and convert it into an order in one click: entry, stop loss, take profit and size are read straight from the drawing.
  • Positions — Every fill opens an independent position (long and short can coexist on the same symbol). Close positions individually or use Close all to flatten everything and cancel every pending order at once.

Trade panel

A dockable, resizable side panel made of movable widgets: Account (balance, equity and open P&L), Order panel (the ticket, with the live bid/ask), Positions & orders, and — in prop firm sessions — the live Prop firm panel. Reorder widgets, float them over the chart as free windows, or hide the whole dock; on mobile it becomes a bottom sheet. Your arrangement is remembered.

Chart layouts

The chart always comes back exactly as you left it — indicators, drawings, style and panes are saved automatically per session. To reuse a setup across sessions, save a named layout from the chart's save menu: load, rename or delete layouts anytime, and start any new session from one with Base layout. Only full chart layouts are saved — TradingView's separate indicator/drawing template menus are not supported.

Custom indicators

Bring your own indicators into the backtester — free, like everything else in it. The full TradingView indicator library is available out of the box (plus five ready-made Custom examples: Moving Average, EMA, RSI, MACD and Bollinger Bands), and on top of that you can compile your own:

  • Where — The Custom indicators button on the Backtesting screen opens the full-page code editor; inside a chart, the </> button opens the same editor as a side panel next to the chart.
  • Write or paste Pine — The editor accepts real Pine source, versions 1 through 6, with syntax highlighting, line numbers and a minimap. It compiles as you type: the output log reports success (with the plots and inputs detected), errors with line numbers, and a note for anything that was adjusted.
  • Add to chart — One click puts a compiled indicator on the chart, preserving your replay position and layout. Your indicators also appear in the chart's Indicators menu, pre-marked as favorites, with the native settings dialog for their inputs, styles and colors.
  • Supported — Inputs of every type, all standard plot styles with dynamic colors, shapes and characters, horizontal lines, fills, background and bar coloring, arrays, matrices, maps, user-defined types and functions, and roughly 70 ta.* functions.
  • Adjusted — A few things intentionally behave differently and are flagged in the log: request.security() evaluates on the chart's own timeframe (no higher-timeframe requests), strategy scripts load as plain indicators (their orders are ignored), scripts can't create alerts or tables, and line/label/box drawings render directly on the chart but are not saved with the layout.
  • Your library — Indicators are saved to your account and usable in every session, and they stay private to you — nothing you write is shared or published. An edit that doesn't compile is kept as a draft (flagged in the list) and comes off the chart until it compiles again.

Prop-firm challenge simulator

Paid feature: The prop-firm challenge simulator requires an active paid subscription. Any plan unlocks it, including the 7-day free trial on the Shared plan. Practice sessions — same chart, same replay, same indicators — stay free for every registered user.

A prop firm session simulates a challenge evaluation over historical data, with the rules enforced in real time on every replay step. Start from a template or set every rule yourself:

  • Two-phase standard — 8% then 5% profit target, 5% daily loss, 10% static drawdown, minimum 4 trading days per phase.
  • One-phase — One 10% target with a 5% daily loss and only 6% of drawdown, minimum 3 trading days.
  • Futures trailing — 6% target, 3% daily loss and a 4% drawdown that trails your intraday equity peak until it locks at the starting balance, with the trading day rolling at 17:00 Chicago time.
  • Consistency — The two-phase rules plus a consistency check: no single day may carry more than 30% of the total profit (if one does, the phase simply doesn't complete until the profit is spread out).
  • Custom — Up to three phases, each with its own profit target, daily loss, max drawdown and minimum trading days; plus how drawdown follows (static, trailing end-of-day or trailing intraday) and whether it's measured on equity or balance, the daily-loss baseline (yesterday's closing balance or today's opening equity), what counts as a trading day (a trade closes, or a trade opens), and the rule timezone with its daily reset hour.

How the rules are measured: the profit target counts closed balance only — floating profit doesn't count — and a phase only completes once its minimum trading days are met. The daily loss allowance is a fixed percentage of the starting balance, checked against your equity in real time and reset each day at the reset hour in the rule timezone. Drawdown is checked against equity by default; a trailing floor ratchets up with your peak and never comes back down.

The live Prop firm panel shows the current phase, the profit target and your distance to it, the remaining daily-loss room, the drawdown room (with its static/trailing/locked state) and your trading days — turning amber, then red, as you approach a limit. Passing a phase closes every position, cancels pending orders and starts the next phase with its rules re-anchored to the original starting balance; passing the final phase completes the challenge. Breaking a rule fails it on the spot, with a verdict naming the rule, the exact values, the time (in the rule timezone) and the trade that triggered it. If the data runs out before a verdict, the run ends as unresolved — nothing was broken; there was just no runway left.

A finished challenge is locked: no more trading or replay. Review its report in your statistics, or hit Try again to start a fresh attempt with the same symbol, dates, balance and rules — attempts are numbered (#2, #3, …) so you can track progress across tries.

Backtest results in your analytics

Every simulated trade is recorded, and your backtest sessions plug into the same statistics, calendar and trade history screens as your live accounts: pick a session from the Backtest sessions group in the account filter and the date range fits itself to the session automatically. Simulated and live results are never mixed together. The AI assistant's Backtest coach mode can analyze any of your sessions, including prop firm challenge runs.


AI assistant

The Assistant screen is a built-in AI chat with three modes — pick one when you start a chat, or just ask: if your question belongs to another mode, the assistant switches mid-conversation automatically and tells you so.

  • Product help — Questions about 5MTrader itself: setup, features, plans and billing. It's grounded in this documentation, so it answers with real product facts, never invented prices or limits.
  • Trading coach — Feedback on your real trading: performance, patterns, discipline and risk, computed live from the synced history of your connected accounts. It can pull your per-account stats, daily and monthly aggregates, per-symbol results and your most recent closed trades.
  • Backtest coach — Analysis of your simulated sessions recorded in the chart backtester, including prop-firm challenge runs: session stats, day-by-day results, individual trades and challenge phase progress.

Example questions (each mode suggests its own starters): "Which weekday do I lose the most?", "What are my best and worst symbols?", "Compare my backtest sessions", "What should I improve before going live?", "What does my plan include?"

Everything is a real conversation history: chats are saved to your account, titled automatically after the first exchange, and listed in a sidebar where you can pin up to 3 favorites and delete the rest. The coaches only read the data you have synced to 5MTrader, they never invent figures (an empty account is reported as "no data", not illustrated with fake numbers), and they never give trade signals, market predictions or investment advice — it's an educational coach focused on your own numbers.

Product help is free; the coaches are paid: Product help is available on any account, with or without a subscription, and is not limited. The Trading coach and the Backtest coach need an active paid plan and draw on a daily message allowance. The Trading coach reads the synced history of your connected accounts, which needs an active plan too. When there is nothing to analyze the coach says so plainly instead of guessing.


Settings and preferences

Manage your account and personalize the dashboard from the Settings screen.

  • Account — Your email, name and role.
  • Plan — Your current plan, status, account limit, billing period and renewal/expiry date, with a shortcut to the billing portal.
  • Theme — Choose System, Light or Dark. System follows your device setting.
  • Timezone — Auto-detect from your device or pick any timezone from a searchable list. All trade times, the calendar, statistics and history render in the timezone you choose.

The dashboard is also available in multiple languages — switch language from the app and your preference is remembered.

You can disconnect any trading account at any time from the Accounts screen. To delete your entire 5MTrader account and its data, email support@5mtrader.com from your account email and we'll process the deletion.


API and MCP

Paid feature: API and MCP access requires an active paid plan.

Everything you can do in the dashboard is also available over HTTP, and to any Model Context Protocol client. Both use the same personal tokens, the same permissions and the same limits — the API is not a reduced copy of the product, it is the product.

Open API & MCP in the dashboard. It has four tabs: Tokens (create and revoke credentials), Explorer (browse and actually run every endpoint), MCP (ready-made client configuration) and Usage (what your tokens have been doing).

Personal API tokens

Create a token in API & MCP → Tokens. You choose its name (e.g. "My risk bot"), its scopes and, optionally, an expiry — Never, In 30 days, In 90 days or In a year. The token is shown once, right after it is created: we store only a hash of it, so it cannot be recovered. If you lose one, rotate it — rotation keeps the name, scopes and expiry and replaces only the secret, so you update one environment variable and nothing else.

Send it as a bearer credential:

curl 'https://5mtrader.com/api/v1/me' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

/v1/me is the cheapest way to check a credential: it answers with who the token belongs to, your plan, the scopes it was granted and your current usage against each limit.

A token acts as you — and only as you: it always sees your own accounts, never anyone else's, whatever your role. Give each integration its own token with the narrowest scopes it needs, and revoke it the moment it stops being used — revocation takes effect immediately. You can hold up to 5 active tokens at a time; revoke one to make room.

Scopes and limits

Every endpoint requires exactly one scope, and a token can only call what its scopes cover:

ScopeWhat it allows
readRead accounts, trades, statistics, risk rules and the calendar, look up broker server names, read billing and affiliate data, get stream tickets, and read your own API usage
accounts:writeConnect, configure and disconnect trading accounts, link cTrader accounts and refresh their tokens, and manage copier templates
copy:toggleStart and stop copy trading on an account
trade:executeOpen, modify, close and cancel orders and positions over the API
risk:writeCreate and change risk rules, templates and alert channels
risk:executeClose all positions and lock an account out of trading
alerts:readList your trading alerts
alerts:writeCreate, change, toggle, test and delete trading alerts
history:syncPull fresh trade history from the brokers
aiStart assistant conversations, send messages, rename, pin and delete them, and approve or reject actions the assistant proposes
profile:writeChange preferences such as language, time zone and theme, and change your referral code
share:writeCreate public share links
billing:writeChange your plan, start a checkout and open the billing portal

The write scopes are split by blast radius: risk:execute — closing positions and locking an account out — is separate from ordinary risk configuration, and billing:write is separate from everything else. Example: a dashboard that only charts your performance needs read and nothing more; a bot that flattens you at a loss limit needs read + risk:execute, and still can't touch your subscription.

Limits are applied per token: 60 requests/minute, 20 writes/minute, 5,000 requests/day, plus a smaller hourly budget (6/hour) for heavy operations such as connecting an account or syncing history. Order placement has its own budget instead: 60 orders/minute per token and 30/minute per account. Writes count against both the general and the write budget; heavy operations are listed as Heavy in the endpoint reference. Exceeding one returns 429 with a Retry-After header. The live values are shown on the Tokens tab, along with each token's calls today.

Every successful response carries X-RateLimit-Limit and X-RateLimit-Remaining, so a client can slow down before it is refused rather than after; a 429 itself carries Retry-After instead. Minute budgets slide over the last 60 seconds rather than resetting on the clock; the daily budget resets at midnight UTC.

Requests and responses

The base URL is https://5mtrader.com/api/v1. The version is part of the path and never changes underneath you: a breaking change would ship as /v2, not as a silent edit to /v1.

  • Authentication. Authorization: Bearer 5mt_... on every request. Clients that cannot set that header may send the token as X-API-Key instead. There is no other way into /v1 — no cookies, no session, no unauthenticated endpoint except the OpenAPI document. (The MCP server separately answers its discovery methods without a token; every actual tool call authenticates.)
  • Parameters. Path parameters go in the URL. GET and DELETE take their remaining parameters as query string; POST, PUT and PATCH take a JSON body with Content-Type: application/json.
  • Query values are coerced. Numbers arrive as ?limit=50, booleans as ?enabled=true, and array parameters as a comma-separated list (?symbols=EURUSD,XAUUSD).
  • Responses are always JSON and always Cache-Control: no-store — nothing about your account is cacheable by an intermediary. The one exception is the public OpenAPI document, cached for five minutes.
  • Unknown routes return 404 not_found; a known path called with the wrong verb returns 405 with an Allow header listing what it does accept.
  • No CORS headers are sent, deliberately: the API is meant to be called from a server, and a token embedded in front-end code is a token you have given away.

A machine-readable description of the whole surface is served — without authentication — at /api/v1/openapi.json. It is generated from the same registry as the endpoints themselves, so it cannot drift from what the server actually accepts.

Errors

Errors always come back as JSON with a stable snake_case error code you can branch on, a human message, and sometimes a details object. Internal failures are logged on our side and flattened to internal_error — no stack traces, no leaked internals.

{
  "error": "forbidden_scope",
  "message": "This token is missing the \"risk:execute\" scope."
}
StatuserrorWhen it happens
400invalid_requestA parameter failed validation. details lists each offending field and why.
401unauthorizedMissing, malformed or unknown token.
401token_revokedThe token was revoked from the Tokens tab.
401token_expiredThe token passed its expiry date.
403forbidden_planYour plan does not include API access.
403forbidden_scopeThe token lacks the scope the operation requires. details.required_scope names it.
403live_trading_disabledTrading on live accounts is switched off by the operator; demo accounts still work.
404not_foundNo such endpoint, or no such object.
404account_not_foundNo trading account of yours matches that key.
405method_not_allowedThe path exists but not with that verb; Allow lists what it accepts.
409idempotency_key_reusedThe same Idempotency-Key was already used for a different operation.
422order_rejectedThe broker refused the order; details.broker_message carries its reason. A broker-specific code may replace order_rejected.
423account_lockedThe account is under a risk lockout and cannot be changed.
423risk_blockedA risk rule refused the order; details.rule_id and details.rule_type name it.
429rate_limitedA budget was exhausted. Retry-After and details say which one and for how long.
500internal_errorSomething went wrong on our side.
501unsupported_platformThe account's platform does not support this operation.
502upstream_errorA broker or copier server is unavailable.
503api_disabledThe public API is switched off by the operator.
503mcp_disabledThe MCP server is switched off by the operator.
503trading_disabledOpening orders over the API is switched off by the operator.
504broker_timeoutThe broker did not answer in time. Retry with the same client_order_id.

Idempotency and confirmations

Mutations accept an Idempotency-Key header (any string up to 120 characters, unique per operation you want protected). The first call runs and its response is stored against that key; a retry with the same key returns the original response verbatim, with Idempotency-Replayed: true — exactly what you want when a network blip leaves you unsure whether a write landed. Reusing the same key for a different operation is refused with 409 idempotency_key_reused, so a recycled key can never trigger the wrong action. Keys are scoped to the token that used them.

The genuinely destructive calls go one step further and require an explicit confirm value that matches what you are about to destroy — disconnecting an account, for instance, takes confirm equal to that account's id. A stray or mis-targeted request cannot do irreversible damage by accident. In the endpoint reference those operations are marked Destructive.

What you can do with it

Seventy-five operations, the same ones the dashboard uses:

GroupWhat it covers
IdentityWho the token belongs to, your plan, your scopes, your live usage, and your preferences (language, timezone, theme)
AccountsList and inspect accounts, look up broker server names, connect MT5 accounts and reconnect them, link cTrader accounts over OAuth and refresh their tokens, change any copier setting (role, master, lot sizing, reverse, exact match, prefix/suffix, symbol translations and filters), start or stop copying, disconnect
Live and historyA live snapshot of balance, equity, floating P&L, open positions and pending orders; paginated closed-trade history; a full statistics summary with best/worst symbols and a daily P&L series; on-demand history sync
TradingWith trade:execute: open market and pending orders, modify SL/TP and entry prices, cancel pendings, close positions fully or partially, flatten a whole account in one call, and read a position, the account's live state or a symbol's volume limits before you send
AlertsCreate, edit, test and delete trading alerts — trade activity, upcoming news, copier health and your own behaviour — delivered on email, webhook, Telegram or Discord
RiskRead and replace rules, delete them, flip the master enforcement switch, manage risk templates and notification channels, send a test alert — and, with risk:execute, flatten an account or lock it out
StreamA live Server-Sent Events feed of your accounts — position and order changes, fills, balance and equity moves, and risk/alert firings — as diffs, not snapshots
Copier templatesCreate, update, delete and apply templates across many accounts at once
BillingRead your subscription, list purchasable plans, change plan or seat count, open a checkout or the billing portal
OtherThe economic calendar, public share links, your affiliate stats and code, and your assistant conversations — start one, send a message and read the reply

Naming an account

Every endpoint that targets one account takes an account key, not a broker login. A key is platform~server~login — for example mt5~ICMarketsSC-Live~12345678 — and accounts.list returns the ready-made string in each account's key field, so copy it from there rather than assembling it yourself.

The login alone would be ambiguous: the same number can be issued by two different brokers, and can also exist on a second platform, so all three parts are needed to name exactly one account. Endpoints that take several accounts (account_keys) expect the same strings.

Some practical shapes:

# Your last 50 closed trades, newest first
curl 'https://5mtrader.com/api/v1/history?page=1&page_size=50&sort=time&dir=desc' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

# Turn copying on for one account — safe to retry
curl -X POST 'https://5mtrader.com/api/v1/accounts/mt5~ICMarketsSC-Live~12345678/copy' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: copy-on-2026-08-13' \
  -d '{"enabled":true}'

Every one of them is written out below, one by one: see the endpoint reference for each operation's parameters, required scope, MCP tool name, flags and a ready-to-paste curl.

Trading over the API

The trade:execute scope turns a token into a trading key: it can open market and pending orders, modify them, close them and flatten a single account, on any account the token's owner has connected. It is deliberately separate from risk:execute — a risk-automation token can flatten accounts without ever being able to open a position, and a read-only journal token can do neither. The operator can keep order-opening off (or demo-only) while it is being rolled out — reading positions and closing are never blocked, so nobody is ever locked into an open position, though the live-accounts switch also covers modifying SL/TP — and a 503 trading_disabled or 403 live_trading_disabled answer means the switch, not your request.

Three things make orders safe to send from a script:

  • client_order_id is mandatory. If the connection drops after the broker accepted, retrying with the same id returns the original ticket with duplicate: true instead of doubling your position. Never retry a timed-out order with a fresh id.
  • Every order passes the account's risk rules first. An order that a rule blocks comes back as 423 risk_blocked with the rule that refused it. The API can never be a way around your own protection.
  • Volume is validated before the broker sees it. A volume below the minimum, above the maximum or off the step comes back as a 400 carrying the symbol's limits — read them upfront with the symbols endpoint.
# Open half a lot of EURUSD at market, safe to retry
curl -X POST 'https://5mtrader.com/api/v1/accounts/mt5~ICMarketsSC-Live~12345678/orders' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"client_order_id":"my-entry-001","symbol":"EURUSD","side":"buy","volume":0.5,"sl":1.0810,"tp":1.0950}'

# Move the stop, then close half
curl -X PATCH 'https://5mtrader.com/api/v1/accounts/mt5~ICMarketsSC-Live~12345678/positions/987654' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"sl":1.0870}'
curl -X DELETE 'https://5mtrader.com/api/v1/accounts/mt5~ICMarketsSC-Live~12345678/positions/987654?volume=0.25' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

On a master account an API order is copied to its followers like any other trade — that is what a master is. Pass copy: false to keep an order out of the copy stream entirely. Order rates are limited to 60/minute per token and 30/minute per account (the numbers travel in the usual X-RateLimit-* and Retry-After headers), and closing or cancelling is always allowed, even under a risk lockout — a lockout blocks opening and modifying, never getting out.

The live stream

Polling is the wrong tool for watching positions. GET /v1/stream is a Server-Sent Events feed of your accounts served from our domain: subscribe to the channels you care about (positions, orders, fills, account, risk) and receive diffs — what opened, changed or closed — rather than a snapshot every second. Add ?account_id= to scope the whole feed to one account.

The feed opens with a ready event ({channels, accounts}), then one snapshot event per account with its full state — listen for that name, it does not arrive on a channel name. After that come the diffs, each stamped with {account_id, ts}: positions ({opened, modified, closed}), orders ({placed, modified, cancelled}), fills ({opened: [{ticket, symbol, side, volume, price}], closed}), account ({balance, equity, pnl, status}) and risk ({id, kind, account_id, rule_id, rule_type, outcomes, triggered_at, detail} — rule breaches and alert firings, polled every 5 seconds). A comment ping every 15 seconds keeps the connection alive; between events, silence means nothing changed.

Server-side clients pass the bearer token directly. Browsers cannot attach headers to an EventSource, so they first trade the token for a one-time ticket (30 seconds, single use) and connect with that — the token itself never appears in a URL:

const { ticket } = await (
  await fetch("https://5mtrader.com/api/v1/stream/ticket", {
    method: "POST",
    headers: { Authorization: "Bearer 5mt_YOUR_TOKEN" },
  })
).json();

const stream = new EventSource(
  `https://5mtrader.com/api/v1/stream?ticket=${ticket}&channels=positions,fills`
);
stream.addEventListener("snapshot", (e) =>
  console.log("full state:", JSON.parse(e.data))
);
stream.addEventListener("positions", (e) =>
  console.log("changed:", JSON.parse(e.data))
);
stream.addEventListener("fills", (e) =>
  console.log("filled:", JSON.parse(e.data))
);

Alerts over the API

The alerts:read and alerts:write scopes manage the same alerts as the dashboard's Alerts tab. They are split from risk:write on purpose: an alert can only send a message, so a token that manages alerts cannot rewrite — or quietly disarm — the rules that protect the account. That asymmetry is also why alert operations are not flagged destructive for MCP clients: the worst an alert can do is say one thing too many.

Alerts fire on the account's real activity, no matter where a trade came from — the copier, this API, an EA, or a hand-placed order in the terminal. Create one with POST /v1/alerts (types, optional account, channels, filters, cooldown) and try it with POST /v1/alerts/{id}/test — the test answers 429 while the alert's own cooldown is still open. You can hold up to 50 alerts; the daily notification ceiling stays at 100.

Explorer and usage

You don't have to read a spec to find your way around. The Explorer tab lists every endpoint grouped by area, with its method, path, required scope, parameters and whether it's flagged Heavy or Destructive — and, next to each, the name of the matching MCP tool. Paste a token into the box at the top and you can run the real request right there and read the response, status and timing. The token you paste stays in your browser for that request; the page never sends it to us.

The Usage tab is the audit trail: calls today, calls over the last 7 days, errors today and MCP calls today, followed by your last 100 events across every token — when, which operation, which token, whether it arrived over REST or MCP, and the resulting status. Token creations, rotations, revocations, permission denials and rate-limit hits are recorded there too, which makes it the first place to look when an integration suddenly goes quiet.

MCP server

The MCP server exposes the same operations as tools, so Claude or any other MCP client can read your trading and act on it. It speaks streamable HTTP at https://5mtrader.com/api/mcp and authenticates with the same token (as Authorization: Bearer, or x-api-key for clients that cannot set that header):

claude mcp add --transport http 5mtrader https://5mtrader.com/api/mcp \
  --header "Authorization: Bearer 5mt_YOUR_TOKEN"

For a desktop client, add it to the configuration file instead — the MCP tab generates the exact snippet for Claude Code, Claude Desktop, Cursor or raw JSON-RPC:

{
  "mcpServers": {
    "5mtrader": {
      "type": "http",
      "url": "https://5mtrader.com/api/mcp",
      "headers": { "Authorization": "Bearer 5mt_YOUR_TOKEN" }
    }
  }
}

Only the tools your token's scopes cover appear in the client, so a read-only token gives a model everything it needs to answer questions about your trading and nothing it could use to change it. Destructive tools are labelled as destructive, and a well-behaved client will confirm with you before calling one. Revoke the token to disconnect the client instantly.

Example: connect a read-only token and you can ask your assistant "pull my last month of trades and tell me which symbol is quietly bleeding me" — it queries your real history through the tools and answers from your numbers. Add risk:write and the same conversation can end with "then set a 2% daily loss rule on that account".

Tool names. Every REST operation is the MCP tool named after it, with dots replaced by underscores: accounts.listaccounts_list, risk.templates.updaterisk_templates_update. The tool takes exactly the same fields as the endpoint, and its description is the same prose this documentation publishes, plus the scope it needs and a warning if it is destructive. Each tool also carries the standard MCP annotations — readOnlyHint for reads, destructiveHint for the destructive ones, idempotentHint where repeating a call is safe. The name of the matching tool is listed next to every operation in the endpoint reference.

Protocol details. The server speaks JSON-RPC 2.0 over streamable HTTP at POST /api/mcp, protocol version 2025-06-18, and supports initialize, ping, tools/list, tools/call, plus resources/list, resources/read, prompts/list and prompts/get — the resources are the endpoint reference, the OpenAPI schema and this documentation; the prompts are ready-made analyses (a trading review, a risk audit, a copier health check). Batched requests are accepted; notifications get 202 with no body. There is no server-initiated stream, so GET /api/mcp answers 405; sessions are stateless — the token is the session — so DELETE succeeds with nothing to tear down. Discovery is open: every method except tools/call answers without a token, so a client can list the tools, read the reference and browse this documentation before authenticating — credentials are checked on the first actual tool call. With a token supplied, initialize authenticates immediately, so a bad token fails at connection time where your client can show you what went wrong, and the handshake tells the model which account it is connected as and which scopes it holds; without one, the handshake answers with a discovery-only notice.

Results and failures. A tool result carries both a readable text block and structuredContent with the raw JSON, so a model can reason over the prose while your code reads the object. A refused or failed call comes back as a tool error — the same error code and message as REST, flagged isError — rather than a protocol error, so the model can read why it failed and adapt instead of the conversation breaking.

Everything else is identical to REST because it is the same code path: the same scopes, the same rate limits, the same ownership rules and the same audit trail, whether the caller is curl or a language model. Two differences worth knowing: MCP calls do not take an Idempotency-Key (clients don't send one), and the operator can switch MCP off independently of the REST API, which surfaces as mcp_disabled.

Connecting with OAuth

Pasting a token works everywhere, but a client that implements the MCP authorization flow does not need one: point it at https://5mtrader.com/api/mcp with no header and it finds its own way in.

An unauthenticated tool call comes back 401 with a WWW-Authenticate header naming our metadata document at https://5mtrader.com/.well-known/oauth-protected-resource (discovery methods answer without a token, so a client may not see the challenge until its first tool call). From there the client reads https://5mtrader.com/.well-known/oauth-authorization-server, registers itself — registration is open, no paperwork — and opens a browser at https://5mtrader.com/oauth/authorize.

That page is the only step you take part in: sign in as usual, read what the app is asking for (its name, the exact scopes, and the address it will be sent back to) and allow or cancel. Approving mints an access token good for 1 hour and a refresh token good for 90 days; the client renews silently and never shows you either. Every refresh rotates both, so a stolen refresh token stops working the moment the real client uses its successor.

A connected app appears in the Tokens tab under its own name, next to your manual tokens, with the same usage counters and the same Revoke button — revoking disconnects the client immediately.

The details, for a client that needs them: PKCE with S256 is required, code is the only response type, authorization codes are single-use and expire in 60 seconds, and a redirect address must be https, http on loopback, or a private scheme such as myapp://callback. Registration is POST /api/oauth/register, tokens POST /api/oauth/token, revocation POST /api/oauth/revoke. Scopes behave exactly as they do for manual tokens: ask for what you need in the scope parameter, and on a free account the write scopes are dropped rather than refused.

Endpoint reference

Every operation the API and the MCP server expose, generated from the same registry the server routes on — so it cannot describe an endpoint that doesn't exist, or miss one that does. For each: what it does, its operation id, the scope it requires, the name of the matching MCP tool, whether it is Heavy (small hourly budget) or Destructive (touches real positions, data or billing), every parameter with its type and whether it is required, and a curl you can paste after replacing 5mt_YOUR_TOKEN.

Over MCP the same operation is the tool named in its entry, taking the same fields. Path parameters go in the URL; the rest are query parameters on GET and DELETE, and a JSON body on POST, PUT and PATCH.

me

GET /v1/me

Who this token belongs to

  • Operation: me.get
  • Scope: read
  • MCP tool: me_get

Profile, plan, and the scopes and live rate-limit budget of the token making the call. The cheapest way to check that credentials work.

No parameters.

curl -X GET 'https://5mtrader.com/api/v1/me' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/me/scopes

Every scope this API defines

  • Operation: me.scopes
  • Scope: read
  • MCP tool: me_scopes

The full permission vocabulary, and which of them the calling token holds. Useful for telling a user why a call was refused.

No parameters.

curl -X GET 'https://5mtrader.com/api/v1/me/scopes' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/me/usage

Your API call log

  • Operation: me.usage
  • Scope: read
  • MCP tool: me_usage

Every call made with any of your tokens, newest first, plus the counts behind your quotas. Request and response payloads are recorded with passwords, secrets and tokens already redacted, and oversized bodies stored as a preview.

ParameterInTypeRequiredDescription
limitqueryintegernoHow many events to return, newest first.
offsetqueryintegernoEvents to skip, for paging further back.
include_payloadsquerybooleannoAttach the redacted request and response of each call.
curl -X GET 'https://5mtrader.com/api/v1/me/usage' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
PATCH /v1/me/preferences

Update account preferences

  • Operation: me.preferences.update
  • Scope: profile:write
  • MCP tool: me_preferences_update

Locale, time zone, theme and economic-calendar filters. Changing the time zone re-pushes risk configuration to every connected account, because risk windows and day boundaries are resolved against it.

ParameterInTypeRequiredDescription
localebodyen | es | pt-BR | ru | zh-CN | ja | arnoInterface language.
timezonebodystringnoIANA time zone, or null to follow the browser.
themebodylight | dark | systemnoDashboard colour scheme.
news_filtersbodyobjectnoEconomic-calendar filter object, or null to clear.
curl -X PATCH 'https://5mtrader.com/api/v1/me/preferences' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

accounts

GET /v1/accounts

List your trading accounts

  • Operation: accounts.list
  • Scope: read
  • MCP tool: accounts_list

Every account linked to your user, with its copy role, connection status and copier configuration. Broker credentials are never returned. "enabled" is the switch you set; whether copies are actually flowing is "bridgeCopyEnabled" plus the riskBlocked fields, which report what the copier server is enforcing right now.

No parameters.

curl -X GET 'https://5mtrader.com/api/v1/accounts' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/accounts/{accountKey}

Get one trading account

  • Operation: accounts.get
  • Scope: read
  • MCP tool: accounts_get
ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
curl -X GET 'https://5mtrader.com/api/v1/accounts/{accountKey}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/accounts

Connect a new trading account

  • Operation: accounts.create
  • Scope: accounts:write
  • MCP tool: accounts_create
  • Heavy: counts against the hourly heavy-operation budget.

Links an MT5 account and provisions it on a copier server. The broker password travels in the request body: send it over HTTPS only, and never log it. Subject to your plan's account limit. cTrader has no password — link those through accounts.ctrader.authorize instead.

ParameterInTypeRequiredDescription
account_idbodystringyesBroker login number of the account to connect.
serverbodystringyesBroker server name, exactly as MT5 shows it. Resolve it with accounts.brokerServers.
passwordbodystringyesBroker account password.
curl -X POST 'https://5mtrader.com/api/v1/accounts' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"account_id":"<account_id>","server":"<server>","password":"<password>"}'
GET /v1/broker-servers

Search broker server names

  • Operation: accounts.brokerServers
  • Scope: read
  • MCP tool: accounts_brokerServers

Looks up MT5 server names in the broker catalogue, ranked by how well they match. Connecting an account needs the name spelled exactly as the terminal spells it, so resolve it here first.

ParameterInTypeRequiredDescription
searchquerystringyesPart of the broker or server name, at least two characters.
curl -X GET 'https://5mtrader.com/api/v1/broker-servers?search=%3Csearch%3E' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/accounts/ctrader/authorize

Start the cTrader authorization flow

  • Operation: accounts.ctrader.authorize
  • Scope: accounts:write
  • MCP tool: accounts_ctrader_authorize

cTrader accounts are linked by OAuth, not by password, so there is nothing to post to accounts.create. Send the returned URL to the account owner, let them grant access, then hand the code from the redirect to accounts.ctrader.link. The state value is returned for you to check against the redirect yourself — this endpoint keeps no session.

ParameterInTypeRequiredDescription
statebodystringnoYour own CSRF value, echoed back on the redirect. Generated for you if omitted.
curl -X POST 'https://5mtrader.com/api/v1/accounts/ctrader/authorize' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/accounts/ctrader/link

Link cTrader accounts from an authorization code

  • Operation: accounts.ctrader.link
  • Scope: accounts:write
  • MCP tool: accounts_ctrader_link
  • Heavy: counts against the hourly heavy-operation budget.

Exchanges the code for tokens and connects every trading account behind that cTrader login — one grant can produce several accounts. Accounts already linked are re-synced with the fresh tokens instead of being duplicated, and accounts beyond your plan's limit are skipped rather than failing the call. Codes are single-use.

ParameterInTypeRequiredDescription
codebodystringyesAuthorization code from the cTrader redirect.
redirect_uribodystringnoOnly if you sent a non-default redirect_uri to the authorize step.
curl -X POST 'https://5mtrader.com/api/v1/accounts/ctrader/link' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"code":"<code>"}'
POST /v1/accounts/ctrader/refresh

Refresh cTrader access tokens

  • Operation: accounts.ctrader.refresh
  • Scope: accounts:write
  • MCP tool: accounts_ctrader_refresh
  • Heavy: counts against the hourly heavy-operation budget.

Renews the OAuth tokens of your cTrader accounts and pushes them to the copier servers. This normally runs on a schedule; call it when an account reports that re-authorization is required. If the refresh token itself is dead the account stays flagged and you have to run the authorize flow again.

ParameterInTypeRequiredDescription
forcebodybooleannoRefresh every cTrader account, not only those near expiry.
curl -X POST 'https://5mtrader.com/api/v1/accounts/ctrader/refresh' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/accounts/{accountKey}/reconnect

Reconnect an account with a fresh password

  • Operation: accounts.reconnect
  • Scope: accounts:write
  • MCP tool: accounts_reconnect
  • Heavy: counts against the hourly heavy-operation budget.

Re-establishes the broker session, moving the account to a healthy server if needed. Use after a password change or a stuck session. MT5 only — a cTrader account is repaired with accounts.ctrader.refresh, or by running the authorize flow again.

ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
passwordbodystringyesCurrent broker account password.
curl -X POST 'https://5mtrader.com/api/v1/accounts/{accountKey}/reconnect' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"password":"<password>"}'
PATCH /v1/accounts/{accountKey}

Update copier configuration

  • Operation: accounts.update
  • Scope: accounts:write
  • MCP tool: accounts_update

Changes role, master link, lot sizing and symbol handling. Only the fields you send are touched, and the new configuration is pushed to the copier server in the background. Refused with 423 while the account is under a risk lockout.

ParameterInTypeRequiredDescription
rolebodymaster | slave | pendingnoCopy role. A master is followed; a slave follows.
master_account_idbodystringnoAccount this one follows. Null unlinks it.
disconnect_from_masterbodybooleannoShorthand for clearing the master link.
lot_typebodystringnoLot sizing strategy, e.g. multiplier or fixed.
lot_multiplierbodynumbernoFactor applied to the master's volume, e.g. 0.5 copies half.
fixed_lotbodynumbernoAlways trade this volume, whatever the master traded.
reverse_tradingbodybooleannoMirror trades in the opposite direction.
exact_matchbodybooleannoCopy only when the symbol name matches exactly, instead of resolving it through prefix, suffix and translations.
no_trade_tagbodybooleannoLeave the copier's identifying tag off the orders it places.
prefixbodystringnoPrepended to the master's symbol before trading it here, e.g. m. for m.EURUSD.
suffixbodystringnoAppended to the master's symbol, e.g. .pro for EURUSD.pro.
symbol_translationsbodystring[]noExplicit renames for symbols the affixes cannot resolve, each written FROM:TO, e.g. GOLD:XAUUSD.
symbol_filter_modebodyoff | allow | blocknoHow to read symbol_filter_list: allow copies only what is listed, block copies everything except it, off ignores it.
symbol_filter_listbodystring[]noSymbols the filter applies to, as the master names them.
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
curl -X PATCH 'https://5mtrader.com/api/v1/accounts/{accountKey}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/accounts/{accountKey}/copy

Start or stop copy trading

  • Operation: accounts.setCopy
  • Scope: copy:toggle
  • MCP tool: accounts_setCopy

Turns copying on or off for one account. Disabling a master also disables the slaves that follow it. Refused with 423 while the account is under a risk lockout.

ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
enabledbodybooleanyesTrue starts copying, false stops it.
curl -X POST 'https://5mtrader.com/api/v1/accounts/{accountKey}/copy' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"enabled":false}'
DELETE /v1/accounts/{accountKey}

Disconnect and delete an account

  • Operation: accounts.delete
  • Scope: accounts:write
  • MCP tool: accounts_delete
  • Heavy: counts against the hourly heavy-operation budget.
  • Destructive: changes real positions, data or billing.

Removes the account from its copier server and deletes it here. Slaves following it are unlinked. Irreversible — pass confirm with the account id.

ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
confirmquerystringyesMust equal the account key (platformserverlogin), as an explicit acknowledgement.
curl -X DELETE 'https://5mtrader.com/api/v1/accounts/{accountKey}?confirm=%3Cconfirm%3E' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/positions

Live positions, equity and open P&L

  • Operation: accounts.positions
  • Scope: read
  • MCP tool: accounts_positions

A point-in-time snapshot straight off the copier servers: balance, equity, floating P&L, open positions and pending orders for every connected account. Every open position carries ticket, symbol, volume, profit and side — side is exactly "buy" or "sell", so filter on it per ticket when acting only on one direction. This is the polling equivalent of the dashboard's live stream.

ParameterInTypeRequiredDescription
account_keyquerystringnoRestrict the snapshot to a single account, as the platformserverlogin key from accounts.list.
curl -X GET 'https://5mtrader.com/api/v1/positions' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/accounts/{accountKey}/state

Live balance, equity and floating P&L of one account

  • Operation: accounts.state
  • Scope: read
  • MCP tool: accounts_state

A lightweight live read of the account's money state — balance, equity, floating P&L and how many positions and pending orders are open — served from the trading server's 1s snapshot cache without the full position payload. Poll this between orders instead of GET /positions when you only need the numbers.

ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
curl -X GET 'https://5mtrader.com/api/v1/accounts/{accountKey}/state' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

orders

POST /v1/accounts/{accountKey}/orders

Open a market order or place a pending order

  • Operation: orders.create
  • Scope: trade:execute
  • MCP tool: orders_create
  • Destructive: changes real positions, data or billing.

Places an order on the account. client_order_id is mandatory: if the connection drops after the broker accepted, retrying with the same id returns the original ticket (duplicate: true) instead of doubling the position. On a master account the order is copied to its followers by default; pass copy: false to keep it out of the copy stream. Every order passes the account's risk rules first — a blocked order returns 423 with the rule that refused it.

ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
client_order_idbodystringyesYour unique id for this order (8-48 chars: letters, digits, dot, dash, underscore). Retries with the same id are safe.
symbolbodystringyesInstrument, in the broker's naming.
sidebodybuy | sellyes
volumebodynumberyesLots (or contracts on futures rails).
order_typebodymarket | limit | stopnomarket executes now; limit and stop wait at price.
pricebodynumbernoEntry price. Required for limit and stop orders.
slbodynumbernoStop loss price.
tpbodynumbernoTake profit price.
copybodybooleannoMaster accounts only: false keeps this order out of the copy stream.
curl -X POST 'https://5mtrader.com/api/v1/accounts/{accountKey}/orders' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"client_order_id":"<client_order_id>","symbol":"<symbol>","side":"buy","volume":0}'
GET /v1/accounts/{accountKey}/orders

Pending orders on one account

  • Operation: orders.list
  • Scope: read
  • MCP tool: orders_list

Limit and stop orders that have not executed yet, served from the trading server's 1s snapshot cache — the broker is never queried on this path.

ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
curl -X GET 'https://5mtrader.com/api/v1/accounts/{accountKey}/orders' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/accounts/{accountKey}/orders/{orderId}

One pending order

  • Operation: orders.get
  • Scope: read
  • MCP tool: orders_get
ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
orderIdpathintegeryesThe broker ticket of the order or position.
curl -X GET 'https://5mtrader.com/api/v1/accounts/{accountKey}/orders/{orderId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
PATCH /v1/accounts/{accountKey}/orders/{orderId}

Modify a pending order's price, SL or TP

  • Operation: orders.modify
  • Scope: trade:execute
  • MCP tool: orders_modify
ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
orderIdpathintegeryesThe broker ticket of the order or position.
pricebodynumbernoNew entry price.
slbodynumbernoNew stop loss. 0 clears it.
tpbodynumbernoNew take profit. 0 clears it.
curl -X PATCH 'https://5mtrader.com/api/v1/accounts/{accountKey}/orders/{orderId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
DELETE /v1/accounts/{accountKey}/orders/{orderId}

Cancel a pending order

  • Operation: orders.cancel
  • Scope: trade:execute
  • MCP tool: orders_cancel
ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
orderIdpathintegeryesThe broker ticket of the order or position.
curl -X DELETE 'https://5mtrader.com/api/v1/accounts/{accountKey}/orders/{orderId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

positions

GET /v1/accounts/{accountKey}/positions

Open market positions on one account

  • Operation: positions.list
  • Scope: read
  • MCP tool: positions_list

Open positions with floating P&L, served from the trading server's snapshot cache. For a fleet-wide snapshot use GET /positions.

ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
curl -X GET 'https://5mtrader.com/api/v1/accounts/{accountKey}/positions' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/accounts/{accountKey}/positions/{positionId}

One open position

  • Operation: positions.get
  • Scope: read
  • MCP tool: positions_get

A single open position by ticket, served from the trading server's snapshot cache — the broker is never queried on this path.

ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
positionIdpathintegeryesThe broker ticket of the order or position.
curl -X GET 'https://5mtrader.com/api/v1/accounts/{accountKey}/positions/{positionId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
PATCH /v1/accounts/{accountKey}/positions/{positionId}

Modify a position's SL or TP

  • Operation: positions.modify
  • Scope: trade:execute
  • MCP tool: positions_modify
ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
positionIdpathintegeryesThe broker ticket of the order or position.
slbodynumbernoNew stop loss. 0 clears it.
tpbodynumbernoNew take profit. 0 clears it.
curl -X PATCH 'https://5mtrader.com/api/v1/accounts/{accountKey}/positions/{positionId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
DELETE /v1/accounts/{accountKey}/positions/{positionId}

Close a position, fully or partially

  • Operation: positions.close
  • Scope: trade:execute
  • MCP tool: positions_close

Closes the position at market. Pass volume to close only part of it. To flatten the whole account in one call use POST /risk/flatten (risk:execute).

ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
positionIdpathintegeryesThe broker ticket of the order or position.
volumequerynumbernoPartial close volume in lots; omit to close the whole position.
curl -X DELETE 'https://5mtrader.com/api/v1/accounts/{accountKey}/positions/{positionId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/accounts/{accountKey}/positions/close-all

Close every open position on the account

  • Operation: positions.closeAll
  • Scope: trade:execute
  • MCP tool: positions_closeAll
  • Destructive: changes real positions, data or billing.

Flattens the account: closes all open positions and cancels all pending orders at market, in one call. Returns how many tickets were requested, closed and refused. For flattening several accounts at once with an audit trail use POST /risk/flatten (risk:execute).

ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
curl -X POST 'https://5mtrader.com/api/v1/accounts/{accountKey}/positions/close-all' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

symbols

GET /v1/accounts/{accountKey}/symbols/{symbol}

Volume limits for a symbol on this account

  • Operation: symbols.get
  • Scope: read
  • MCP tool: symbols_get

Minimum, maximum and step of the tradable volume, straight from the broker's symbol spec. Validate against this before sending orders to avoid 400s.

ParameterInTypeRequiredDescription
accountKeypathstringyesThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
symbolpathstringyes
curl -X GET 'https://5mtrader.com/api/v1/accounts/{accountKey}/symbols/{symbol}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

templates

GET /v1/templates

List copier templates

  • Operation: templates.list
  • Scope: read
  • MCP tool: templates_list

No parameters.

curl -X GET 'https://5mtrader.com/api/v1/templates' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/templates

Create a copier template

  • Operation: templates.create
  • Scope: accounts:write
  • MCP tool: templates_create

A reusable bundle of copier settings you can apply to accounts later.

ParameterInTypeRequiredDescription
lot_typebodystringnoLot sizing strategy, e.g. multiplier or fixed.
lot_multiplierbodynumbernoFactor applied to the master's volume, e.g. 0.5 copies half.
fixed_lotbodynumbernoAlways trade this volume, whatever the master traded.
reverse_tradingbodybooleannoMirror trades in the opposite direction.
exact_matchbodybooleannoCopy only when the symbol name matches exactly, instead of resolving it through prefix, suffix and translations.
no_trade_tagbodybooleannoLeave the copier's identifying tag off the orders it places.
prefixbodystringnoPrepended to the master's symbol before trading it here, e.g. m. for m.EURUSD.
suffixbodystringnoAppended to the master's symbol, e.g. .pro for EURUSD.pro.
symbol_translationsbodystring[]noExplicit renames for symbols the affixes cannot resolve, each written FROM:TO, e.g. GOLD:XAUUSD.
symbol_filter_modebodyoff | allow | blocknoHow to read symbol_filter_list: allow copies only what is listed, block copies everything except it, off ignores it.
symbol_filter_listbodystring[]noSymbols the filter applies to, as the master names them.
namebodystringyesLabel for the template.
curl -X POST 'https://5mtrader.com/api/v1/templates' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"name":"<name>"}'
PUT /v1/templates/{templateId}

Update a copier template

  • Operation: templates.update
  • Scope: accounts:write
  • MCP tool: templates_update
ParameterInTypeRequiredDescription
lot_typebodystringnoLot sizing strategy, e.g. multiplier or fixed.
lot_multiplierbodynumbernoFactor applied to the master's volume, e.g. 0.5 copies half.
fixed_lotbodynumbernoAlways trade this volume, whatever the master traded.
reverse_tradingbodybooleannoMirror trades in the opposite direction.
exact_matchbodybooleannoCopy only when the symbol name matches exactly, instead of resolving it through prefix, suffix and translations.
no_trade_tagbodybooleannoLeave the copier's identifying tag off the orders it places.
prefixbodystringnoPrepended to the master's symbol before trading it here, e.g. m. for m.EURUSD.
suffixbodystringnoAppended to the master's symbol, e.g. .pro for EURUSD.pro.
symbol_translationsbodystring[]noExplicit renames for symbols the affixes cannot resolve, each written FROM:TO, e.g. GOLD:XAUUSD.
symbol_filter_modebodyoff | allow | blocknoHow to read symbol_filter_list: allow copies only what is listed, block copies everything except it, off ignores it.
symbol_filter_listbodystring[]noSymbols the filter applies to, as the master names them.
templateIdpathstringyesNumeric template id.
namebodystringnoLabel for the template.
curl -X PUT 'https://5mtrader.com/api/v1/templates/{templateId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
DELETE /v1/templates/{templateId}

Delete a copier template

  • Operation: templates.delete
  • Scope: accounts:write
  • MCP tool: templates_delete
ParameterInTypeRequiredDescription
templateIdpathstringyesNumeric template id.
curl -X DELETE 'https://5mtrader.com/api/v1/templates/{templateId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/templates/{templateId}/apply

Apply a copier template to accounts

  • Operation: templates.apply
  • Scope: accounts:write
  • MCP tool: templates_apply

Copies every setting in the template onto the given accounts and pushes the result to their copier servers. Refused with 423 if any of them is under a risk lockout.

ParameterInTypeRequiredDescription
templateIdpathstringyesNumeric template id.
account_idsbodystring[]yesAccounts to overwrite with the template's settings.
curl -X POST 'https://5mtrader.com/api/v1/templates/{templateId}/apply' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"account_ids":[]}'

risk

GET /v1/risk/rules

Read the risk rules of an account

  • Operation: risk.rules.get
  • Scope: read
  • MCP tool: risk_rules_get
ParameterInTypeRequiredDescription
account_keyquerystringyesAccount whose rules to read, as the platformserverlogin key from accounts.list.
curl -X GET 'https://5mtrader.com/api/v1/risk/rules?account_key=%3Caccount_key%3E' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
PUT /v1/risk/rules

Replace the risk rules of one or more accounts

  • Operation: risk.rules.set
  • Scope: risk:write
  • MCP tool: risk_rules_set

The rule list you send becomes the complete rule set for each account — anything omitted is removed. The new configuration is pushed to the copier bridge, which is what actually enforces it.

ParameterInTypeRequiredDescription
account_keysbodystring[]yesOne or more account keys (platformserverlogin, as returned in the "key" field of accounts.list). Rules are applied to each of them.
rulesbodyobject[]yesThe complete desired rule set.
starting_balancebodynumbernoThe balance drawdown and profit rules measure from. Null clears it back to the automatically captured value; omitted leaves it untouched.
risk_timezonebodystringnoIANA timezone the trading day is anchored in for these accounts. Null falls back to your profile timezone; omitted leaves it untouched.
day_start_minutesbodyintegernoMinutes past midnight at which the trading day resets (e.g. 1020 for 17:00). Null or 0 means midnight; omitted leaves it untouched.
curl -X PUT 'https://5mtrader.com/api/v1/risk/rules' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"account_keys":[],"rules":[]}'
DELETE /v1/risk/rules

Delete every risk rule of an account

  • Operation: risk.rules.clear
  • Scope: risk:write
  • MCP tool: risk_rules_clear

Wipes the rules and pushes a configuration with no risk values, leaving the account exactly as it was before any rule was written.

ParameterInTypeRequiredDescription
account_keysquerystring[]yesOne or more account keys (platformserverlogin, as returned in the "key" field of accounts.list). Rules are applied to each of them.
curl -X DELETE 'https://5mtrader.com/api/v1/risk/rules?account_keys=' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/risk/enabled

Master switch for risk enforcement

  • Operation: risk.setEnabled
  • Scope: risk:write
  • MCP tool: risk_setEnabled

Turns rule enforcement off or on without deleting the rules. Off pushes a configuration with no risk values; on pushes the whole rule set back out.

ParameterInTypeRequiredDescription
account_keysbodystring[]yesOne or more account keys (platformserverlogin, as returned in the "key" field of accounts.list). Rules are applied to each of them.
enabledbodybooleanyesTrue enforces the rules, false suspends them.
curl -X POST 'https://5mtrader.com/api/v1/risk/enabled' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"account_keys":[],"enabled":false}'
GET /v1/risk/templates

List saved risk templates

  • Operation: risk.templates.list
  • Scope: read
  • MCP tool: risk_templates_list

No parameters.

curl -X GET 'https://5mtrader.com/api/v1/risk/templates' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/risk/templates

Save a risk template

  • Operation: risk.templates.create
  • Scope: risk:write
  • MCP tool: risk_templates_create
ParameterInTypeRequiredDescription
namebodystringyesLabel for the template.
rulesbodyobject[]noThe rules to store, in the same shape risk.rules.set takes.
curl -X POST 'https://5mtrader.com/api/v1/risk/templates' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"name":"<name>"}'
PUT /v1/risk/templates/{templateId}

Update a risk template

  • Operation: risk.templates.update
  • Scope: risk:write
  • MCP tool: risk_templates_update
ParameterInTypeRequiredDescription
templateIdpathstringyesNumeric template id.
namebodystringyesLabel for the template.
rulesbodyobject[]noReplaces the stored rules entirely.
curl -X PUT 'https://5mtrader.com/api/v1/risk/templates/{templateId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"name":"<name>"}'
DELETE /v1/risk/templates/{templateId}

Delete a risk template

  • Operation: risk.templates.delete
  • Scope: risk:write
  • MCP tool: risk_templates_delete
ParameterInTypeRequiredDescription
templateIdpathstringyesNumeric template id.
curl -X DELETE 'https://5mtrader.com/api/v1/risk/templates/{templateId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/risk/channels

Read your risk notification channels

  • Operation: risk.channels.get
  • Scope: read
  • MCP tool: risk_channels_get

Secrets are masked: you get whether a channel is configured, not the token behind it.

No parameters.

curl -X GET 'https://5mtrader.com/api/v1/risk/channels' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
PUT /v1/risk/channels

Configure risk notification channels

  • Operation: risk.channels.update
  • Scope: risk:write
  • MCP tool: risk_channels_update

Sets where risk alerts are delivered. Send an empty string to clear a channel. Webhook URLs must resolve to a public host.

ParameterInTypeRequiredDescription
webhook_urlbodystringnoEndpoint to POST the alert to as JSON.
telegram_bot_tokenbodystringnoToken of the bot that sends the alert, from BotFather.
telegram_chat_idbodystringnoChat the bot posts to. Needs the bot token to be set as well.
discord_webhook_urlbodystringnoDiscord channel webhook to post the alert to.
curl -X PUT 'https://5mtrader.com/api/v1/risk/channels' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/risk/channels/test

Send a test alert

  • Operation: risk.channels.test
  • Scope: risk:write
  • MCP tool: risk_channels_test
  • Heavy: counts against the hourly heavy-operation budget.

Delivers a sample risk alert through the configured channels so you can verify the wiring.

ParameterInTypeRequiredDescription
channelbodywebhook | telegram | discord | emailyesWhich channel to exercise.
curl -X POST 'https://5mtrader.com/api/v1/risk/channels/test' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"channel":"webhook"}'
POST /v1/risk/flatten

Close every open position on an account

  • Operation: risk.flatten
  • Scope: risk:execute
  • MCP tool: risk_flatten
  • Heavy: counts against the hourly heavy-operation budget.
  • Destructive: changes real positions, data or billing.

Closes real positions immediately and records the request so it still runs if the bridge is unreachable right now. Masters are closed before their slaves. Irreversible — pass confirm with the account keys joined by commas.

ParameterInTypeRequiredDescription
account_keysbodystring[]yesOne or more account keys (platformserverlogin, as returned in the "key" field of accounts.list). Rules are applied to each of them.
confirmbodystringyesMust equal account_keys joined by commas, as an explicit acknowledgement that real positions are about to be closed.
curl -X POST 'https://5mtrader.com/api/v1/risk/flatten' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"account_keys":[],"confirm":"<confirm>"}'
POST /v1/risk/lockout

Lock an account out of trading

  • Operation: risk.lockout
  • Scope: risk:execute
  • MCP tool: risk_lockout
  • Heavy: counts against the hourly heavy-operation budget.
  • Destructive: changes real positions, data or billing.

Closes open positions, disables copying and refuses further changes until the deadline. Locking a master locks the slaves following it. The deadline is pushed to the bridge, so it survives restarts and server moves, and it cannot be lifted early — pass confirm with the account keys joined by commas.

ParameterInTypeRequiredDescription
account_keysbodystring[]yesOne or more account keys (platformserverlogin, as returned in the "key" field of accounts.list). Rules are applied to each of them.
untilbodyintegeryesUnix milliseconds when the lockout expires. Max 30 days out.
confirmbodystringyesMust equal account_keys joined by commas, as an explicit acknowledgement that real positions are about to be closed.
curl -X POST 'https://5mtrader.com/api/v1/risk/lockout' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"account_keys":[],"until":0,"confirm":"<confirm>"}'

alerts

GET /v1/alerts

List your trading alerts

  • Operation: alerts.list
  • Scope: alerts:read
  • MCP tool: alerts_list

Alerts inform and can never act on an account — that is what risk rules are for. One alert can watch several event types at once; account_key null means it watches all of your accounts.

No parameters.

curl -X GET 'https://5mtrader.com/api/v1/alerts' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/alerts

Create a trading alert

  • Operation: alerts.create
  • Scope: alerts:write
  • MCP tool: alerts_create

Types: trade_placed / trade_modified / trade_closed fire on the account's real activity no matter where the trade came from (API, copier, EA or hand); news warns before economic events; copy_health watches for disconnected accounts; behaviour watches your own trading (overtrading, loss streaks, revenge trading). Alerts only notify — they cannot touch the account.

ParameterInTypeRequiredDescription
typesbodystring[]yesEvent types this alert watches — one alert can watch several at once.
account_keybodystringnoRestrict to one account, as the platformserverlogin key from accounts.list; omit or null to watch all of them.
namebodystringno
enabledbodybooleanno
channelsbodystring[]yes
paramsbodyobjectnoType-specific filters: symbols/minVolume/minChange for trade events, impacts/currencies/minutesBefore for news, offlineMinutes for copier health, detectors and thresholds for behaviour.
cooldown_secondsbodyintegerno
curl -X POST 'https://5mtrader.com/api/v1/alerts' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"types":[],"channels":[]}'
PATCH /v1/alerts/{alertId}

Update a trading alert

  • Operation: alerts.update
  • Scope: alerts:write
  • MCP tool: alerts_update
ParameterInTypeRequiredDescription
alertIdpathintegeryes
typesbodystring[]no
account_keybodystringnoThe account key, as returned in the "key" field of accounts.list: platformserverlogin (for example "mt5ICMarketsSC-Live12345678"). The broker login alone is not enough: the same login can exist on two servers, and on two platforms, so all three parts are required to name one account.
namebodystringno
enabledbodybooleanno
channelsbodystring[]no
paramsbodyobjectnoType-specific filters: symbols/minVolume/minChange for trade events, impacts/currencies/minutesBefore for news, offlineMinutes for copier health, detectors and thresholds for behaviour.
cooldown_secondsbodyintegerno
curl -X PATCH 'https://5mtrader.com/api/v1/alerts/{alertId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
DELETE /v1/alerts/{alertId}

Delete a trading alert

  • Operation: alerts.delete
  • Scope: alerts:write
  • MCP tool: alerts_delete
ParameterInTypeRequiredDescription
alertIdpathintegeryes
curl -X DELETE 'https://5mtrader.com/api/v1/alerts/{alertId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/alerts/{alertId}/enabled

Enable or disable a trading alert

  • Operation: alerts.setEnabled
  • Scope: alerts:write
  • MCP tool: alerts_setEnabled
ParameterInTypeRequiredDescription
alertIdpathintegeryes
enabledbodybooleanyes
curl -X POST 'https://5mtrader.com/api/v1/alerts/{alertId}/enabled' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"enabled":false}'
POST /v1/alerts/{alertId}/test

Send a test notification through this alert's channels

  • Operation: alerts.test
  • Scope: alerts:write
  • MCP tool: alerts_test
  • Heavy: counts against the hourly heavy-operation budget.

Fires a fake event through the alert's configured channels so you can check they are wired up.

ParameterInTypeRequiredDescription
alertIdpathintegeryes
curl -X POST 'https://5mtrader.com/api/v1/alerts/{alertId}/test' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

stream

POST /v1/stream/ticket

One-time ticket for the live stream

  • Operation: stream.ticket
  • Scope: read
  • REST only: this one is not offered as an MCP tool.

Browsers cannot send Authorization headers on an EventSource, so trade your token for a single-use ticket (30s validity) and open GET /v1/stream?ticket=... with it. Server-side clients can skip this and pass the bearer token directly to /v1/stream.

No parameters.

curl -X POST 'https://5mtrader.com/api/v1/stream/ticket' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

history

GET /v1/history

Closed trades

  • Operation: history.deals
  • Scope: read
  • MCP tool: history_deals

Paginated trade history across your accounts, read from the stored history rather than the broker. Call history.sync first if you need it fresher than the last sync.

ParameterInTypeRequiredDescription
account_keysquerystringnoComma-separated account keys (platformserverlogin, from the "key" field of accounts.list). Defaults to all of yours.
fromqueryintegernoStart of range, unix milliseconds.
toqueryintegernoEnd of range, unix milliseconds.
symbolsquerystringnoComma-separated symbols, as the broker names them. Matched case-insensitively.
ticketquerystringnoReturn the single trade carrying this broker ticket.
pagequeryintegerno1-based page number.
page_sizequeryintegernoTrades per page. The response carries the total to page through.
sortquerytime | symbol | profit | volumenoColumn to order by. time is the close time.
dirqueryasc | descnoOrder direction. The default puts the newest trade first.
curl -X GET 'https://5mtrader.com/api/v1/history' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/history/sync

Pull fresh history from the brokers

  • Operation: history.sync
  • Scope: history:sync
  • MCP tool: history_sync
  • Heavy: counts against the hourly heavy-operation budget.

Asks every connected account's bridge for trades it has not stored yet. This talks to remote servers and is charged against the hourly heavy-operation budget.

ParameterInTypeRequiredDescription
account_keysbodystringnoComma-separated account keys (platformserverlogin, from the "key" field of accounts.list). Defaults to all of yours.
forcebodybooleannoIgnore the per-account sync throttle.
curl -X POST 'https://5mtrader.com/api/v1/history/sync' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

stats

GET /v1/stats

Performance statistics

  • Operation: stats.get
  • Scope: read
  • MCP tool: stats_get

Pre-aggregated performance across your accounts: totals, win rate, profit factor, best and worst symbols, and a daily P&L series. Buckets are UTC days, and from/to are snapped to the UTC day they fall in. A filtered range is rebuilt from those daily buckets, where tradesWithTp is not stored and reads 0.

ParameterInTypeRequiredDescription
account_keysquerystringnoComma-separated account keys (platformserverlogin, from the "key" field of accounts.list). Defaults to all of yours.
fromqueryintegernoStart of range, unix milliseconds. Snapped to its UTC day.
toqueryintegernoEnd of range, unix milliseconds. Snapped to its UTC day.
symbol_limitqueryintegernoHow many symbols to return in each of the best/worst lists.
curl -X GET 'https://5mtrader.com/api/v1/stats' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

share

POST /v1/share

Create a public performance link

  • Operation: share.create
  • Scope: share:write
  • MCP tool: share_create

Builds a signed report URL for the accounts and metrics you choose. Anyone holding the link can open it without authenticating, and the link carries its own configuration — there is nothing to revoke, so treat it as public the moment you share it.

ParameterInTypeRequiredDescription
presetbodystringyesTime preset for the report, e.g. the last 30 days.
modebodyprofit | percentnoHeadline figure: money made, or return on the capital you declare.
account_typebodyall | live | demonoRestrict the report to real or demo accounts.
account_keysbodystring[]noAccount keys (platformserverlogin, from accounts.list) to include. Empty means all of yours.
from_msbodyintegernoRange start when the preset is a custom one, unix milliseconds.
to_msbodyintegernoRange end when the preset is a custom one, unix milliseconds.
capitalbodynumbernoCapital the percentage is calculated against.
include_commissionbodybooleannoSubtract commission from the reported profit.
include_swapbodybooleannoSubtract swap from the reported profit.
percent_onlybodybooleannoHide monetary amounts and publish percentages alone.
custom_namebodystringnoTitle shown on the public page instead of your account name.
metricsbodyobjectnoWhich figures the public page shows.
curl -X POST 'https://5mtrader.com/api/v1/share' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"preset":"<preset>"}'

news

GET /v1/news/events

Economic calendar

  • Operation: news.events
  • Scope: read
  • MCP tool: news_events

Scheduled macro events in a time range, with impact, forecast, previous and actual values. The range may not exceed one year.

ParameterInTypeRequiredDescription
fromqueryintegeryesStart of range, unix milliseconds.
toqueryintegeryesEnd of range, unix milliseconds.
impactquerystringnoComma-separated impact levels to keep: high, medium, low or holiday.
currenciesquerystringnoComma-separated currency codes to keep, e.g. USD,EUR.
curl -X GET 'https://5mtrader.com/api/v1/news/events?from=0&to=0' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

billing

GET /v1/billing

Your subscription and its status

  • Operation: billing.get
  • Scope: read
  • MCP tool: billing_get

Current plan, tier, seat count, billing period, renewal or expiry date, and whether it is in trial or scheduled to cancel.

No parameters.

curl -X GET 'https://5mtrader.com/api/v1/billing' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/billing/plans

Available plans and their price ids

  • Operation: billing.plans
  • Scope: read
  • MCP tool: billing_plans

Every purchasable tier with its monthly rate, billing model and the Stripe price ids you pass to billing.changePlan or billing.checkout.

No parameters.

curl -X GET 'https://5mtrader.com/api/v1/billing/plans' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/billing/invoices

Your billing history

  • Operation: billing.invoices
  • Scope: read
  • MCP tool: billing_invoices

Invoices Stripe has issued to you, newest first, with amounts in the currency's minor unit and links to the hosted invoice and its PDF. Empty until you have paid for something.

ParameterInTypeRequiredDescription
limitqueryintegernoHow many invoices to return, newest first.
curl -X GET 'https://5mtrader.com/api/v1/billing/invoices' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/billing/plan

Change your plan or seat count

  • Operation: billing.changePlan
  • Scope: billing:write
  • MCP tool: billing_changePlan
  • Heavy: counts against the hourly heavy-operation budget.
  • Destructive: changes real positions, data or billing.

Switches an existing subscription to another price and/or quantity, invoicing the proration immediately — this charges the payment method on file, and ends a running free trial there and then. Upgrades take effect at once. Requires an active subscription — use billing.checkout to start one. Pass confirm with the price id.

ParameterInTypeRequiredDescription
price_idbodystringyesStripe price id from billing.plans.
confirmbodystringyesMust equal price_id, as an explicit acknowledgement that money moves.
quantitybodyintegernoSeats, for per-account plans.
regionbodystringnoRequired when moving to a private-server tier from a plan that has no region yet. A subscription that already runs in a region keeps it: the region is fixed until the plan is cancelled and bought again.
curl -X POST 'https://5mtrader.com/api/v1/billing/plan' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"price_id":"<price_id>","confirm":"<confirm>"}'
POST /v1/billing/checkout

Start a subscription

  • Operation: billing.checkout
  • Scope: billing:write
  • MCP tool: billing_checkout
  • Heavy: counts against the hourly heavy-operation budget.

Returns a Stripe-hosted checkout URL. Payment details cannot be collected through an API, so open the URL in a browser to finish. Use billing.changePlan if you already subscribe.

ParameterInTypeRequiredDescription
price_idbodystringyesStripe price id from billing.plans.
quantitybodyintegernoSeats to buy on a per-seat plan. Defaults to one.
regionbodystringnoRequired for private-server tiers. The region is fixed for the life of the subscription.
curl -X POST 'https://5mtrader.com/api/v1/billing/checkout' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"price_id":"<price_id>"}'
POST /v1/billing/portal

Open the Stripe billing portal

  • Operation: billing.portal
  • Scope: billing:write
  • MCP tool: billing_portal

Returns a short-lived URL where payment methods can be updated and the subscription cancelled.

ParameterInTypeRequiredDescription
historybodybooleannoOpen the invoice-history view instead of the management view.
curl -X POST 'https://5mtrader.com/api/v1/billing/portal' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

affiliate

GET /v1/affiliate

Your affiliate account

  • Operation: affiliate.get
  • Scope: read
  • MCP tool: affiliate_get

Referral code, link and earnings. Returns enrolled: false if you are not in the programme.

No parameters.

curl -X GET 'https://5mtrader.com/api/v1/affiliate' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/affiliate/referrals

People who signed up through your link

  • Operation: affiliate.referrals
  • Scope: read
  • MCP tool: affiliate_referrals

Every referral attributed to you, newest first, with whether and when they converted into a paying customer. Referrals are other people: their email is masked and their name is not returned, so you can tell two of them apart without being handed their contact details.

ParameterInTypeRequiredDescription
limitqueryintegernoHow many referrals to return, newest first.
curl -X GET 'https://5mtrader.com/api/v1/affiliate/referrals' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/affiliate/earnings

Your commissions and payouts

  • Operation: affiliate.earnings
  • Scope: read
  • MCP tool: affiliate_earnings

Balance by commission status, the individual commissions behind it and the payouts already made to you. Amounts are in the commission's own currency.

ParameterInTypeRequiredDescription
limitqueryintegernoHow many commissions and payouts to return, newest first.
curl -X GET 'https://5mtrader.com/api/v1/affiliate/earnings' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
PATCH /v1/affiliate/code

Change your referral code

  • Operation: affiliate.setCode
  • Scope: profile:write
  • MCP tool: affiliate_setCode

Codes are unique across all affiliates. Old links stop working immediately.

ParameterInTypeRequiredDescription
codebodystringyesNew referral code.
curl -X PATCH 'https://5mtrader.com/api/v1/affiliate/code' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"code":"<code>"}'

ai

GET /v1/ai/chats

List assistant conversations

  • Operation: ai.chats.list
  • Scope: ai
  • REST only: this one is not offered as an MCP tool.
ParameterInTypeRequiredDescription
limitqueryintegernoHow many conversations to return, most recent first.
curl -X GET 'https://5mtrader.com/api/v1/ai/chats' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/ai/chats

Start an assistant conversation

  • Operation: ai.chats.create
  • Scope: ai
  • REST only: this one is not offered as an MCP tool.

Opens an empty chat in the mode you pick: support answers questions about the product, coach-live reasons over your connected accounts and coach-backtest over your simulated ones. The coach modes need a paid plan and draw on a daily allowance. The title is written for you from the first exchange.

ParameterInTypeRequiredDescription
modebodysupport | coach-live | coach-backtestnoAssistant mode for the whole conversation.
curl -X POST 'https://5mtrader.com/api/v1/ai/chats' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
POST /v1/ai/chats/{chatId}/messages

Send a message and get the reply

  • Operation: ai.chats.send
  • Scope: ai
  • REST only: this one is not offered as an MCP tool.
  • Heavy: counts against the hourly heavy-operation budget.

Runs one full turn — including any data the assistant looks up on your behalf — and returns the finished answer. There is no streaming here: the call takes as long as the answer takes. The message and the reply are both stored in the conversation.

ParameterInTypeRequiredDescription
chatIdpathstringyesChat id.
messagebodystringyesWhat to say to the assistant.
localebodystringnoLanguage for the reply. Defaults to English.
curl -X POST 'https://5mtrader.com/api/v1/ai/chats/{chatId}/messages' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"message":"<message>"}'
POST /v1/ai/chats/{chatId}/actions/{actionId}

Approve or reject an action the assistant proposed

  • Operation: ai.chats.decide
  • Scope: ai
  • REST only: this one is not offered as an MCP tool.

The assistant never changes anything on its own: it proposes an operation and waits. Approving runs it under the same scopes as this call — so a token without the operation's scope cannot approve it — and returns what it did; rejecting drops it. Either way the decision is recorded in the conversation.

ParameterInTypeRequiredDescription
chatIdpathstringyesChat id.
actionIdpathstringyesId of the proposed action.
decisionbodyapprove | rejectyesWhether to run the proposed operation.
curl -X POST 'https://5mtrader.com/api/v1/ai/chats/{chatId}/actions/{actionId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"decision":"approve"}'
PATCH /v1/ai/chats/{chatId}

Rename or pin a conversation

  • Operation: ai.chats.update
  • Scope: ai
  • REST only: this one is not offered as an MCP tool.
ParameterInTypeRequiredDescription
chatIdpathstringyesChat id.
titlebodystringnoReplaces the title written automatically from the first exchange.
pinnedbodybooleannoPinned conversations stay on top. At most 3.
curl -X PATCH 'https://5mtrader.com/api/v1/ai/chats/{chatId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
GET /v1/ai/chats/{chatId}

Read one assistant conversation

  • Operation: ai.chats.get
  • Scope: ai
  • REST only: this one is not offered as an MCP tool.
ParameterInTypeRequiredDescription
chatIdpathstringyesChat id.
curl -X GET 'https://5mtrader.com/api/v1/ai/chats/{chatId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'
DELETE /v1/ai/chats/{chatId}

Delete an assistant conversation

  • Operation: ai.chats.delete
  • Scope: ai
  • REST only: this one is not offered as an MCP tool.
ParameterInTypeRequiredDescription
chatIdpathstringyesChat id.
curl -X DELETE 'https://5mtrader.com/api/v1/ai/chats/{chatId}' \
  -H 'Authorization: Bearer 5mt_YOUR_TOKEN'

Pricing

Four plans, same product, same configuration — pick what fits your scale and infrastructure needs. No feature gating, no hidden fees. Annual billing saves 20% on every plan.

Plans

PlanPricingInfrastructureBest for
Shared$5/account/mo (min 4)Shared low-latency cloudMost users, up to ~10 accounts
Shared Unlimited$50/mo flatShared low-latency cloud10+ accounts on shared infra
Private Server$10/account/mo (min 4)Your own dedicated VPSIsolation + dedicated resources
Private Server Unlimited$100/mo flatYour own dedicated VPSMaximum scale on a dedicated VPS

Cost examples (monthly)

AccountsSharedShared UnlimitedPrivate ServerPrivate Unlimited
4$20$50$40$100
5$25$50$50$100
10$50$50$100$100
15$75$50$150$100
50$50$100
  • Free trial — The Shared plan includes a 7-day free trial (card required; no charge during the trial). The trial applies to the Shared per-account plan only — Shared Unlimited and Private Server plans don't include a trial.
  • Annual billing saves 20% on every plan, billed upfront.
  • AI assistant included — Product help is free for every registered user, plan or no plan, and so are the backtester, its TradingView charts and custom indicators. Every paid plan (and the free trial) adds the AI Trading and Backtest coaches, the prop-firm challenge simulator and risk management.
  • Switch plans anytime from the billing portal — upgrades are prorated.
  • Cancel anytime — cancellations take effect at the end of your current billing period.
  • Manage your subscription from the Billing section in the dashboard.

Affiliate program

5MTrader runs an invitation-only affiliate program. If you're invited, you get a personal affiliate link and a dashboard to track everything in real time.

  • Share your link — Your link has the form 5mtrader.com/r/<code>; anyone who opens it is counted as a click and, if they subscribe (through the link or by using your promo code), attributed to you.
  • Pick your own code — The affiliate code is editable from your affiliate dashboard, so your link can carry your brand or handle instead of a random string.
  • Lifetime commission — You earn a commission on every payment your referred customers make: their first invoice and every renewal, for as long as they stay subscribed. The rate is a single program-wide percentage — the same for every affiliate.
  • Give customers a discount — Your link can carry a discount that's applied automatically at checkout on the customer's first invoice.
  • Track and get paid — Your affiliate dashboard shows clicks, referrals, pending and available balances, and payout history. Payouts are processed manually once you reach the minimum threshold.

Example: you refer a trader who subscribes to Shared Unlimited ($50/mo). With a 20% program rate you earn $10 on their first invoice and $10 again on every monthly renewal, for as long as they remain subscribed — no action needed on your side after the first click.

Full terms are in the Affiliate Program Terms. Interested in joining? Email support@5mtrader.com.


FAQ

What is 5MTrader?

5MTrader is a cloud-based copy trading platform for MetaTrader 5 and cTrader. Connect a master account and multiple slave accounts, and trades are copied automatically in real time — no local installation required.

Which platforms does 5MTrader support?

5MTrader supports MetaTrader 5 and cTrader. Connect accounts from either platform — or run both side by side — and copy, monitor and analyze them all from the same dashboard. MetaTrader 5 accounts connect with login, password and server; cTrader accounts connect securely via cTrader's login, with no password ever shared.

How does pricing work?

Four plans: Shared ($5/account/mo, min 4), Shared Unlimited ($50/mo flat), Private Server ($10/account/mo, min 4, dedicated VPS), and Private Server Unlimited ($100/mo flat on a dedicated VPS). No hidden fees, no feature gating — every plan includes the full configuration. Annual billing saves 20% on every plan.

Is there a free trial?

Yes — the Shared plan includes a 7-day free trial. A card is required to start, but you won't be charged during the trial and you can cancel anytime before it ends. The free trial applies to the Shared per-account plan only; Shared Unlimited and Private Server plans don't include a trial.

When should I switch from Shared to Shared Unlimited?

At 10 accounts the math breaks even ($5 × 10 = $50 flat). Past that, every extra account is free on the unlimited plan. If you expect to grow beyond 10 accounts, switch early.

When does Private Server make sense?

Pick Private Server when you want guaranteed isolation — no shared resources, no noisy neighbors — or want predictable performance for a high-volume strategy. Private Server Unlimited ($100/mo flat) is the best fit for traders running many accounts on dedicated infrastructure.

How does the annual discount work?

Choosing annual billing applies a 20% discount across any plan for the year, billed upfront. You can switch between monthly and annual at any time through your billing portal.

How fast are trades copied?

Trades are copied in under 100ms. 5MTrader runs on dedicated cloud infrastructure tuned for low-latency execution, so trades replicate the moment the master fills.

Is my trading data private?

Yes. We never sell or share your trading data with third parties, and you can delete it at any time. We do store your trades and the statistics derived from them — that's what powers your live monitoring, history and analytics — but they're used only to operate the service for you. See our Privacy Policy.

Is 5MTrader safe for prop firms?

Yes. 5MTrader is compatible with prop firms. Trades are copied via cloud infrastructure with no data exposure to third parties.

Is it safe to connect my accounts?

Yes. A trading login can place and read orders — it can never move or withdraw money, which stays inside your broker's own portal. MetaTrader 5 accounts connect with login, password and server; cTrader accounts connect through cTrader's own authorization screen, so no password is ever shared with us. Credentials are never shown back to you or returned by the API, and you can disconnect an account at any time from the Accounts screen.

Where do my trades actually execute?

At your broker, exactly as if you had placed the order yourself — 5MTrader never holds your funds. Our copier servers keep a live session to each connected account and send the copied order straight to the broker, so nothing runs on your computer and there is no VPS to rent or keep online. Shared plans run on our managed fleet; Private Server reserves a dedicated VPS for your accounts alone.

What happens if 5MTrader goes down?

Your positions stay exactly where they are. Open trades, and the stop-loss and take-profit attached to them, live at the broker — not with us — so nothing is closed or changed if a copier server is unreachable. What pauses is copying: new master trades are not mirrored while an account is offline, and copying resumes on its own once the account reconnects, with your copy rules untouched. A copier-health alert tells you the moment an account has been offline longer than your threshold.

Can 5MTrader enforce risk limits, like a prop firm does?

Yes. Risk management puts hard limits on any connected account — daily loss, maximum drawdown, equity floor, profit target, position and lot caps, trading hours and news blackouts — enforced on the server that runs your account, 24/7. When a rule is breached the engine can block new copies, turn copying off (cascading to a master's slaves), close every position, and alert you by email, webhook, Telegram or Discord. One-click presets reproduce the classic 5% daily / 10% drawdown evaluation rules. It requires an active paid plan.

Do risk rules keep working if I close the dashboard?

Yes. Rules are pushed to the server that runs your account and evaluated there on the live price stream — they keep enforcing even if your browser is closed or the website itself is down.

How do I get risk alerts on Telegram or Discord?

Open Risk → Notification channels and configure them once — they're shared by all your accounts. For Telegram, create a bot with @BotFather and paste the bot token plus your chat ID; for Discord, paste a channel webhook URL; you can also set a generic webhook that receives every breach as JSON. Each channel has a Send test button so you can verify it before a real breach ever fires. Then tick the matching action on any rule. See Notification channels.

Can I lock myself out of trading?

Yes — deliberately and irreversibly. The Lock action on the Risk screen closes every position and stops copying until the lock expires: pick 30 minutes to 3 hours, the end of a market session, or any date up to 30 days ahead. There is no early unlock by design, and locking a master locks its slaves too. See Lockout.

Does 5MTrader have an economic calendar?

Yes. The News screen shows scheduled releases for nine major currencies, colour-coded by impact (High/Medium/Low/Holiday), rendered in your timezone, with per-user filters by impact, currency and event type that are remembered across visits. It's the same calendar the risk engine uses for news-window blackouts. See Economic calendar.

Can I monitor my accounts and see analytics in 5MTrader?

Yes. Beyond copying, 5MTrader is a full trading desk. The dashboard gives you live balance, equity and open P&L for every account, a real-time terminal of all open positions and pending orders, a full analytics suite (equity curve, drawdown, 40+ metrics and a 5MTrader Score from S to F), a calendar heatmap and a complete trade history — no third-party tool required. See Monitoring and analytics.

How often do the live numbers update?

Live figures — balance, equity, open P&L and position counts — stream continuously and refresh about once per second, with no manual refresh needed. Statistics, the calendar and trade history are computed from your closed trades and update as new trades settle.

Do I need a paid plan for the AI assistant?

For Product help, no: it is free for every registered user, no subscription required. The Trading coach and Backtest coach modes need an active paid plan and draw on a daily message allowance. The Trading coach also works from a connected account, which needs an active plan too.

Is the backtester free?

Yes. The chart backtester — TradingView charts, bar and tick replay, simulated trading and custom indicators — is free for every registered user, with or without a subscription. What needs a paid plan is the prop-firm challenge simulator and the AI Backtest coach that analyzes your sessions.

Which markets can I backtest, and how far back?

Sessions replay historical data we store for a curated list of instruments — major forex pairs, metals, indices and crypto among them — and each symbol carries its own history depth. When you create a session the form shows the exact Data available range for the symbols you picked and limits the date picker to it, so you always know how far back you can go. See Market data and replay accuracy.

How realistic is the backtester's simulation?

Sessions replay real historical data: recent history tick by tick with the real bid/ask spread, older history in one-minute steps. Fills are idealized — no commission, swap or slippage, and pending orders, stop loss and take profit fill exactly at their price. Replay is forward-only, so the chart can never look ahead. See Market data and replay accuracy.

Can I rewind or restart a backtest session?

You can jump forward to any later date, but never backwards — replay is forward-only by design, so the chart can't reveal what happens next. To trade the same period again, create a new session with the same symbol and dates, or use Try again on a finished prop firm session, which clones its symbol, dates, balance and rules into a fresh numbered attempt. Deleting a session permanently removes it and all its trades.

Can I use my own indicators in the backtester?

Yes. Open Custom indicators from the Backtesting screen (or the </> button on any backtest chart), write or paste Pine source, and it compiles as you type — errors are reported with line numbers, and one click adds the result to your chart next to the full built-in TradingView indicator library. See Custom indicators.

Why did my custom indicator disappear from the chart?

Almost always because the last save didn't compile. The indicator is kept as a draft — flagged in your indicator list — and comes off the chart until it compiles cleanly again: open it in the editor, read the errors in the output log (each carries its line number) and save a working version. Note too that lines, labels and boxes a script draws are redrawn on every recalculation and are not saved with the chart layout.

How does the prop-firm challenge simulator work?

Create a Prop firm session in the backtester, pick a template (two-phase, one-phase, futures trailing or consistency) or set custom rules, and trade the replay while the rules — profit target, daily loss, maximum drawdown, minimum trading days — are enforced in real time. Pass every phase to complete the challenge, or get an instant verdict explaining exactly which rule was broken and when. It needs an active paid plan. See Prop-firm challenge simulator.

Does passing a simulated challenge get me funded?

No. The challenge simulator is a practice tool inside the backtester: it reproduces the rules prop firms typically use so you can rehearse them on historical data. It isn't affiliated with any prop firm, and a simulated pass has no bearing on a real evaluation. What it does give you is an honest read of whether your risk fits those rules — and where you tend to break them — before you pay for a real challenge.

Can I cancel at any time?

Yes. Cancellations take effect at the end of your current billing period. You can manage your subscription from the billing portal inside the dashboard.

Can I reuse a copy configuration across accounts?

Yes. Save any setup as a template — lot type, reverse trading, exact match, prefix/suffix and symbol translations — and apply it to a single account or, in one click, to every slave of a master. See Configuration templates.

Can I share my trading results?

Yes. The Share screen turns any period into a clean, branded image of your P&L. You choose exactly what appears — percent of capital, balance, trade count, win rate, profit factor and best trade — and whether to include your name. Nothing about your strategy, positions or credentials is ever included.

Can people verify that my shared results are real?

Yes. Turn on Include QR code and the card carries a QR that opens a public verification page: a 5MTrader-issued certificate whose figures are recomputed live from your synced history on every visit, showing only the metrics you chose. The link is cryptographically signed (editing it breaks it), blocked from search engines, and never reveals trades, positions, account numbers or brokers.

Can I change the timezone or use dark mode?

Yes. From the Settings screen you can switch between System, Light and Dark themes and set any timezone (or auto-detect from your device). All trade times, the calendar, statistics and history follow the timezone you choose.

Is the dashboard available in my language?

Yes. The 5MTrader dashboard and this documentation are available in multiple languages. Your language preference is remembered across sessions.

Do I need to install anything?

No. 5MTrader is entirely cloud-based. You manage everything from the web dashboard — no downloads, no local software. If you choose a Private Server plan, the dedicated VPS is provisioned and managed by us; you still don't need to install or maintain anything.


Support

Email: support@5mtrader.com

Telegram: A direct Telegram contact is available from the Support screen, both in the dashboard and on the website.

AI assistant: For product questions, the built-in AI assistant answers instantly — product help is free for every registered user, and the Support screen links straight to it.

Dashboard: Log in at 5mtrader.com/dashboard to manage your accounts, billing, and configuration.

Documentation: You're reading it — 5mtrader.com/docs.

Billing: Manage your subscription, payment methods, and invoices from the billing portal in the dashboard.

Policies:

Founder: Joaquin Metayer — LinkedIn

Company: IPTRADE COPIER, LLC — 131 Continental Dr, Suite 305, Newark, Delaware 19713, United States

5MTrader – Documentation