Signal providers · Click-to-trade

Click-to-trade for signal providers. One tap, their own MT5 account.

Your members connect their MetaTrader 5 account inside your app. You publish a signal. Each member approves it with one tap, and the trade executes on their account — at their broker, at the size they chose. No VPS, no Expert Advisor and no copier for anyone to install.

  • Members keep control of every trade
  • Nothing to install on their side
  • Works with their own broker
Gold Desk · VIPjust now
XAUUSD
BUY
Volume
0.05
Stop loss
2338.50
Take profit
2371.00
  1. Your MT5 account is online
  2. Ready to trade on your account
Filledon your account · see it in MT5 too
Illustration: a signal inside your app. The member's account comes online while they read; one tap places the trade on it.
The gap

Signals are easy to send. Hard to take.

A signal in a Telegram or Discord group asks every member to do the same thing by hand: open MetaTrader, find the symbol, type the size, the stop and the target, and press buy — quickly, before the price runs.

Most members take signals that way, and it shows. Entries arrive seconds or minutes late, a decimal slips on the lot size, a stop loss is forgotten. The result a member gets drifts away from the result you published, and your signals get the blame.

The usual fix is automation on the member's side: a trade copier or an Expert Advisor running on a VPS around the clock. That works for the few members willing to rent a server and configure software — and it takes away the thing many members want most, which is to decide on each trade themselves.

Click-to-trade sits in between. The member still decides, one signal at a time. But the decision is a single tap in your app, and the order that follows is exact: your symbol, your stop, your target, their chosen size, on their own account.

For you it means members who actually take your signals, results that match what you published, and a product people use inside your own app and brand — not a link out to someone else's platform.

How it works

Four calls, from your backend.

Every call is an ordinary HTTPS request made with your API key, from your server — never from the member's phone or browser. The click-to-trade guide walks through each one with code in cURL, Python and Node.js.

  1. 01

    Member connects, once

    They enter their MT5 account number, trading password and broker server in your app. You pass them to us and keep only the account id we return.
    POST /v1/accounts
  2. 02

    You publish a signal

    Send it to your group as you do today. Nothing happens on anyone's account yet, and nothing is spent on members who never look.
    — no call —
  3. 03

    Member opens it

    You prepare that member's account. It comes online while they read — about 10 seconds in our measurements.
    POST /v1/accounts/prepare
  4. 04

    Member approves

    One tap places the order on their account, with one idempotency key for that signal and member. You get a recorded result back; an unclear one is confirmed with the broker, not guessed.
    POST …/orders/market
Prepare on view

Online when they look. Offline when they don't.

Keeping every member's account online all day, just in case, is wasteful. Waiting to bring it online until the member taps approve adds a pause at the worst moment. Click-to-trade does neither.

When a member opens a signal, your backend calls POST /v1/accounts/prepare for their account. It answers at once, and the account signs in at the broker while the member reads the signal. By the time they tap approve it is online, and the order goes straight through.

Members who never open the signal cost nothing. Accounts connected in on-demand mode go offline again on their own after 15 quiet minutes, and come back the next time they are needed. For a broadcast you expect most of the group to act on, prepare accepts up to 200 accounts in one call.

One key per signal and member

Two taps. One trade.

Phones double-tap. Mobile connections drop halfway through a request. Your own code retries after a timeout. On a trading account, any of these can mean two positions where the member wanted one.

Send every approval with an Idempotency-Key made from the signal and the member — signal_9931:member_4821. The first request places the order; any repeat within 24 hours gets the same answer back and places nothing. The member sees one trade, whatever happened to the network.

And when the network fails at the worst moment, the answer is never a guess. An order whose outcome is unclear is reported as unresolved, with an instruction not to resend it, and is then confirmed against the broker's own records. See the three failures for how to handle each one.

The code

The whole approve flow, in one screen.

Two handlers in your backend: one when a member opens a signal, one when they approve it. The same request works in any language — the API reference has it in 13.

Python · your backend
import os, requests

API = "https://api.fxapis.com"
fx = requests.Session()
fx.headers["Authorization"] = f"Bearer {os.environ['FXAPIS_KEY']}"

def on_signal_opened(member):
    # The member opened the signal: bring their account online while they read.
    # Answers 202 at once; do not make the member wait for it.
    fx.post(f"{API}/v1/accounts/prepare",
            json={"accountIds": [member.fxapis_account_id]})

def on_approve(signal, member):
    r = fx.post(
        f"{API}/v1/accounts/{member.fxapis_account_id}/orders/market",
        # One key per signal and member: a double tap never opens two trades.
        headers={"Idempotency-Key": f"signal_{signal.id}:member_{member.id}"},
        json={
            "symbol": signal.symbol,          # "XAUUSD"
            "side": signal.side,              # "buy"
            "volume": member.lot_size,        # a string: "0.05"
            "stopLoss": signal.stop_loss,     # absolute prices, not pips
            "takeProfit": signal.take_profit,
            "clientOrderId": f"signal_{signal.id}",
        },
    )
    if r.status_code == 201:
        return r.json()["data"]               # state "filled", filledPrice, …
    error = r.json()["error"]
    if error["code"] == "ORDER_UNRESOLVED":
        return confirming(error)              # never resend: poll the order
    raise TradeNotPlaced(error["message"])
Response 201 Created
{
  "data": {
    "id": "b1c7…9e2a",
    "clientOrderId": "signal_9931",
    "symbol": "XAUUSD",
    "side": "buy",
    "volume": "0.05",
    "state": "filled",
    "filledPrice": "2352.18",
    "brokerOrderId": "2104837096"
  }
}
For your members

Nothing to install. Nothing to leave running.

Just your app

Members connect their MT5 account in your app, once. There is no VPS to rent, no Expert Advisor to attach and no copier to configure.

Their decision, every time

Every trade is a tap they chose to make. Nothing opens on their account unless they approve it — or opt in to automatic execution.

Their broker, their account

Trades land on the member's own account at their own broker, and show in their own MetaTrader app like any other trade.

Passwords handled properly

Encrypted on arrival with a key unique to that account, never returned or logged, and erased when the member disconnects.

A clear answer

Filled, rejected with the broker's reason, or confirming — never a silent failure, and never a guess about what happened.

Sized for them

Your app decides each member's volume — a fixed lot, their own choice, or a size worked out from their balance.
Compared

Click-to-trade, copiers and MQL5 Signals.

Each approach suits a different member. Copiers and MQL5 Signals copy every trade automatically; click-to-trade lets each member decide. Many providers offer both: click-to-trade for most of the group, automatic execution for members who opt in.

Click-to-trade on fxapis compared with manual copying, trade copiers and MQL5 Signals
AspectClick-to-trade on fxapisCopying by handTrade copierMQL5 Signals
Who decides each tradeThe member, with one tapThe memberNobody — trades are copied automaticallyNobody — trades are copied automatically
What the member runsNothing but your appMetaTrader, and their full attentionDesktop copiers run in MetaTrader on the member's PC or a VPS (source); cloud copiers need no VPS but are a separate subscription (source)Their own MetaTrader terminal, always connected — or a rented VPS, from $10 a month on MQL5 (source, VPS)
Accuracy of entryExact: your symbol, stop and targetDepends on typing, and on speedExact, once configuredExact, copied from your signal account
Where it livesInside your app, under your brandYour channelThe copier vendor's softwareMQL5.com and the member's terminal
Setup for the memberConnect their account once, in your appNoneInstall or sign up, then configure each accountSubscribe in MetaTrader; one signal per account
How you chargeHowever you like — it is your productHowever you likeHowever you like; the member also pays the copierA monthly fee you set, less MQL5's 20% commission (source)
Third-party details as published on 30 September 2026: MQL5 signal service rules, MQL5 virtual hosting, Local Trade Copier, Duplikium. Terms change; check theirs before deciding.

Want members who opt in to copy automatically as well? See copy trading on multi-account orders. Generating signals from TradingView? Send them straight to MT5 with TradingView alerts.

Who does what

You run the community. We run MetaTrader.

You build

  • Your app or bot, and how members sign in to it
  • The connect screen, and where you keep each member's account id
  • Your signals, and how members see them
  • Each member's lot size and your risk rules
  • Your terms, disclaimers and any licensing your market requires

fxapis runs

  • The MetaTrader 5 terminals, hosted in our EU cloud
  • Signing each account in at its broker, and keeping it healthy
  • Placing, closing and modifying orders on each account
  • Confirming any unclear outcome against the broker's records
  • Encrypted storage of members' MT5 passwords

Every member who connects an account counts as one connected account on your plan, whether it is online or not. A group of a few dozen members fits the Scale plan; larger groups are arranged on Enterprise. Closing a position is never blocked for billing, even if your plan runs out. See pricing for the numbers.

FAQ

Signal providers ask

Do my members need a VPS, an Expert Advisor or MetaTrader open?

No. MetaTrader 5 runs on our side, so a member only connects their account once inside your app and taps to approve trades. They can still open their own MT5 app at any time and will see the same positions there, because the trades are placed on their own account.

Which brokers can members use?

Any broker whose MT5 accounts sign in with an account number, trading password and server name. Each member connects their own account at their own broker. Accounts that need two-factor sign-in or a broker certificate are flagged at connection time, so you can tell the member straight away.

Can each member trade a different lot size?

Yes. Your backend decides the volume of each member's order — a fixed lot, a size they chose in your app, or one you work out from their balance. The signal is the same; the order on each account is its own.

What if a member taps approve twice, or their connection drops?

Use the signal id and the member id together as the order's idempotency key. A second tap, a retry from a flaky mobile connection or a retry from your own code gets the first order's answer back instead of opening a second trade. Keys are honoured for 24 hours.

What happens if the price has moved since the signal went out?

The order executes at the market price when the member approves, within the deviation you allow. If the broker refuses it because the price moved, the API says so and marks the rejection as retryable, so your app can show the new price and let the member decide again.

Do stop loss and take profit keep working when the account is offline?

Yes. Stop loss and take profit are sent with the order and live at the broker, so they fire whether or not the account is online with us. On-demand accounts go offline by themselves after 15 idle minutes and come back online the next time the member trades.

Can members who opt in have signals executed automatically?

Yes. For members who choose automatic execution, place one multi-account order across all of their accounts, sized per account, and keep click-to-trade for everyone else. The two work side by side in the same app.

Does fxapis give trading advice or generate signals?

No. fxapis is infrastructure: it executes the orders your app sends and never generates signals or advice. Whether your signal service needs a licence depends on where you and your members are, so take local advice before you launch.

> Signal → tap → filled

Give your members one-tap trading.

Create a workspace, issue an API key and run the whole flow on demo accounts today.