Trading Bridge: Setting Up Automated Trading
The SkyAnalyst Trading Bridge connects your AI-generated trade signals to your local trading platform (cTrader today, MetaTrader 5 soon). It is a Windows desktop application that acts as a relay: when your monitored trades trigger entry conditions, the bridge forwards the signal to a bot running inside your trading platform, which places the order.
📥 Download Trading Bridge for Windows — Save the
.exeand follow the Installation section below.
Important: The Trading Bridge is a BETA feature. Always test with demo accounts before enabling automated execution on live capital. The current minimum supported bridge version is v1.46.
What is the Trading Bridge
A desktop application for Windows that:
- Runs on your local machine alongside your trading platform
- Receives trade signals from SkyAnalyst when entry conditions are met
- Forwards signals to your cTrader (or, soon, MetaTrader 5) bot
- Enables fully automated trade execution from AI analysis to platform entry
The bridge itself does not execute trades. It relays signals to a bot that lives inside your trading platform, and the bot handles the actual order placement.
System Requirements
| Requirement | Details |
|---|---|
| Operating System | Windows 10 or later |
| Trading Platform | cTrader (MetaTrader 5 coming soon) |
| Bridge Version | v1.46 or later (heartbeat every 20s, see below) |
| Internet Connection | Required, always-on, wired recommended |
| SkyAnalyst Account | Active subscription with automation access |
Installation
Step 1: Download the Desktop App
- Open Settings in SkyAnalyst AI (gear icon in the sidebar)
- Scroll to the SkyAnalyst Trading Bridge section (marked BETA)
- Click "Download for Windows"
- Save the installer (
SkyAnalyst-Trading-Bridge.exe) to your computer
Step 2: Install on Windows
- Run the downloaded
SkyAnalyst-Trading-Bridge.exe - The first-run wizard detects that the .exe is in your Downloads folder and offers to install it to
%LocalAppData%\SkyAnalystBridge\. Accept the default and check "Create desktop shortcut". - The installer copies the executable, registers the bundled cTrader bot file, creates the shortcut, and relaunches the bridge from its permanent location.
- The bridge starts and waits for a pairing code.
Why this matters: running directly from Downloads is fine, but you will lose the .exe the next time you clear the folder. The wizard's one-click install keeps the bridge in a stable location and prevents Windows from quarantining a "downloaded executable" on every launch.
Pairing Your Device
The pairing process creates a secure connection between your SkyAnalyst web account and your desktop Trading Bridge app.
Step 1: Generate a Pairing Code
- In the SkyAnalyst web app, go to Settings -> Trading Bridge
- Click "Generate Pairing Code"
- A code in
XXXX-YYYYformat appears with a 10-minute countdown timer - Copy the code (click the copy button or select and copy)
Pairing codes use a 32-character alphabet (no ambiguous 0/O or 1/I) and are single-use. There are over a trillion possible codes, but they expire in 10 minutes, so generate fresh ones close to the moment you enter them.
Step 2: Enter the Code in the Bridge App
- Open the SkyAnalyst Trading Bridge desktop application
- Enter the pairing code displayed in your browser (case-insensitive, dashes optional)
- The Bridge app validates the code with the SkyAnalyst relay and establishes the connection
Step 3: Verify Connection
Once paired successfully:
- The web app shows a "Connected" status with your device name
- Last seen timestamp updates in real time
- You can test the connection using the "Test Connection" button, which sends a non-trading
connection_testpayload through the relay and measures round-trip latency
Pro Tip: Pairing codes expire after 10 minutes and can only be used once. If a code expires, simply generate a new one. You can pair up to 3 devices per account.
Installing Trading Bots
Once your Trading Bridge is connected, you need a bot running inside your trading platform that listens for signals from the bridge. The bridge does not place orders directly; it forwards each signal to a bot, and the bot places the order on your broker account.

cTrader workspace with the SkyAnalyst Automated Trader bot in the Active state
cTrader Bot Installation
The cTrader bot is bundled with the desktop bridge and installed in one click.
Prerequisites
- cTrader Desktop installed and signed in to your broker account.
- A broker that supports cTrader Algo (cBot) automated trading. Pepperstone is the reference broker used in the bundled defaults; IC Markets, FP Markets, and other cTrader brokers also work. Check that your broker allows API/cBot trading on the account type you are using.
- An account with sufficient balance and the right leverage for the lot sizes you plan to trade. The bot computes lot size from the AI's recommended risk percentage, not from a fixed lot.
- "Allow automated trading" enabled in cTrader (one-time toggle in the platform's preferences).
Step 1: Locate the bot file
When you installed the bridge, the bundled bot file was copied alongside the executable:
%LocalAppData%\SkyAnalystBridge\SkyAnalyst Automated Trader.algo
You can also re-install it from the bridge dashboard at any time via the Install Automated Trader -> Install in cTrader button. That button extracts the .algo file from the bridge installation and opens it with cTrader.
Step 2: Import the bot into cTrader
- Double-click
SkyAnalyst Automated Trader.algo, OR click Install in cTrader in the bridge dashboard. - cTrader opens an import dialog: confirm the import.
- The bot appears in the cTrader Algo tab under cBots -> SkyAnalyst Automated Trader.
If Windows shows "How would you like to open this file?", cTrader is not yet installed or not associated with .algo files. Open cTrader first, then re-run the install.
Step 3: Attach the bot to a chart per instrument
Each running bot instance listens on its own local port and handles one instrument. The bridge ships with bundled default ports, one per instrument:
| Port | Instrument (cTrader) | Routing Key |
|---|---|---|
| 8050 | US30 (Pepperstone) | US30-Pepperstone |
| 8051 | NAS100 (Pepperstone) | NAS100-Pepperstone |
| 8052 | US500 (Pepperstone) | US500-Pepperstone |
| 8053 | XAUUSD (Pepperstone) | XAUUSD-Pepperstone |
| 8054 | EURUSD (Pepperstone) | EURUSD-Pepperstone |
| 8055 | USDJPY (Pepperstone) | USDJPY-Pepperstone |
| 8056 | BTCUSD (Pepperstone) | BTCUSD-Pepperstone |
| 8057 | AUDUSD (Pepperstone) | AUDUSD-Pepperstone |
| 8058 | USDCAD (Pepperstone) | USDCAD-Pepperstone |
| 8059 | GBPUSD (Pepperstone) | GBPUSD-Pepperstone |
| 8060 | US30_CASH_FTMO | US30_CASH_FTMO |
| 8061 | US500_CASH_FTMO | US500_CASH_FTMO |
| 8062 | US100_CASH_FTMO | US100_CASH_FTMO |
For each instrument you want to automate:
- Open the cTrader chart for that exact symbol (e.g., US30 on your Pepperstone account).
- Drag SkyAnalyst Automated Trader from the cBots panel onto the chart.
- In the bot's parameters, set the Listening Port to the matching port from the table above (e.g.,
8050for US30). - Click Start. The bot status flips to Running (green).
You can run multiple instances of the bot in parallel, each on its own chart and its own port.
Step 4: Confirm the bridge route is configured
Open the bridge dashboard, go to the Routes view, and confirm that the destination for the port you just attached is Enabled and has the correct Routing Key. The bundled defaults are already wired up, but verifying matters because a missing or wrong routing key silently drops the signal.
MetaTrader 5 EA Installation
Detailed installation guide coming soon.
What to expect when it ships:
- The MT5 Expert Advisor (EA) will accept the same JSON payload schema the cTrader bot accepts today (instrument, direction, entry zone, stop, take-profit ladder, position size percent).
- Each EA instance listens on its own port, just like the cBot, and you configure that port via EA inputs (default candidates: ports
8000-8006for the same instrument set). - The bridge routes a signal to the EA using the same
<SYMBOL>-<BROKER>routing key. For example, attaching the EA to a Pepperstone MT5 US30 chart with port8000and routing keyUS30-Pepperstonemakes that EA the destination for any US30 signal SkyAnalyst dispatches to your account. - Installation will be one click from the bridge dashboard (Install in MT5 button) once the EA file is bundled.
In the meantime, MT5 destinations in the bridge already accept the same configuration. Contact support if you need an early build of the EA.
Routing: How Signals Find the Right Bot
The bridge supports running many bots on one machine, one per instrument. Routing makes sure each signal reaches exactly one bot.
Routing Key Format
Every destination in the bridge has a Routing Key in the form:
<SYMBOL>-<BROKER>
Examples: US30-Pepperstone, NAS100-Pepperstone, XAUUSD-Pepperstone. The _CASH_FTMO instruments are an exception — the broker hint is already inside the symbol, so the routing key stays as US30_CASH_FTMO.
Why the broker suffix matters
The same symbol can mean different contracts at different brokers. US30 on Pepperstone is a CFD on the Dow Jones; US30 on a different broker may price differently, have a different tick size, or behave differently on news. By appending the broker name, the bridge can have multiple US30 destinations on the same machine — one per broker — without ambiguity.
Fail-closed behavior
The bridge will refuse to forward a signal if:
- The destination has no Routing Key, OR
- The Routing Key is empty or set to a wildcard, OR
- The signal's instrument does not exactly match any enabled destination's Routing Key (case-insensitive)
This is deliberate. A wildcard or missing key would mean "send this signal everywhere," and that is exactly how an automated US30 trade ends up entering on a XAUUSD chart. No routing key, no execution. You will see the dropped signal logged in the bridge dashboard so you can fix the configuration and re-trigger.
Worked example: US30 alert -> cTrader fill
- SkyAnalyst Analysis Agent posts a US30 setup with grade 8.4 (Grade-A Fast Track-eligible).
- Price enters the entry zone. The Entry Evaluator validates and flips the trade to
triggered. - Alert-dispatcher sends a webhook to your relay device URL with
Data.instrument = "US30-Pepperstone"and the full trade details. - Your bridge receives the webhook over SignalR, extracts the instrument, and finds the destination with Routing Key
US30-Pepperstone(port 8050). - The bridge POSTs the payload to
http://localhost:8050, where the cTrader bot is listening. - The cTrader bot reads
position_size_pct, computes the lot size from your account balance, places a market or pending order with the bot's stop-loss and take-profit configuration, and reports success.
The whole loop typically completes in well under a second.
Bot Behavior: Lot Sizing, SL/TP, Order Placement
The bot inside cTrader (or MT5, when shipped) reads each incoming payload and decides exactly how to place the order. The bridge does not interpret the payload — it just hands it over.
How the bot computes lot size
The payload includes position_size_pct, the AI's recommended risk percentage (e.g., 0.5 means risk 0.5% of equity on this trade). The bot:
- Reads your current account balance from cTrader.
- Multiplies by
position_size_pctto get the dollar risk for this trade. - Measures the distance from entry to the chosen stop-loss in pips/points.
- Computes the lot size that makes (risk per pip) × (distance) equal the dollar risk.
- Rounds to the broker's minimum lot increment, applies your configured per-trade lot cap, and submits the order.
If position_size_pct is missing or the bot has been configured with a fixed override lot, the bot falls back to that fixed lot.
Stop loss and take-profit placement
The payload contains:
entry_min/entry_max: the entry zone boundariessl_tight/sl_wide: two stop-loss options the AI considered acceptabletp1/tp2/tp3: take-profit ladder
The bot uses the SL/TP variant you configured in its inputs (default: sl_wide for safety, tp1 as the primary target, with the broker's partial-close feature handling tp2 and tp3). All distances are converted to broker pips/points by the bot using the instrument's contract spec.
Testing the loop end-to-end
Before going live:
- In SkyAnalyst, enable Demo Trading on your account (or use a separate demo subscription).
- Pair the bridge with the demo profile and attach the cTrader bot to a demo account chart in cTrader.
- Manually trigger a low-grade signal from the AI (or wait for one) and watch:
- The signal arrives in the bridge's webhook log.
- The bridge forwards to
http://localhost:<port>. - The bot logs
Order placedand you see a position open in cTrader.
- Let the trade run to either TP1 or SL and confirm the bot closes/manages it as you expect.
- Only then switch the bridge profile to your live account and live cTrader bot.
Enabling Automated Trading
Per-Trade Automation
Once your Trading Bridge is connected and a bot is running:
- Navigate to your Monitored Trades in the AI Trading Agents hub
- Find the trade you want to automate
- Click the "Automate" button on the trade card
- In the connection modal, click "ENABLE AUTOMATED TRADING"
- The button changes color to indicate automation is active (orange = active, purple = inactive)
When enabled, the following happens automatically:
- The AI monitors the trade as usual (entry zone alerts, condition evaluation)
- When entry conditions are met, instead of only alerting you, the signal is also sent to your Trading Bridge
- The bridge forwards the complete trade details to the bot matching the trade's instrument
- The bot places the order in your trading platform

The connection modal with auto-trade active — the orange button confirms signals will be forwarded
Wizard-level Automation (AutomatedTradingCard)
Inside the Generate Trade Ideas wizard (Step 6) you can flip auto-execute on for every trade an agent produces, without having to enable per-trade. This lives in the AutomatedTradingCard in the AI Trading Agents wizard.
- The card is disabled until you have paired a bridge device.
- Once paired, the toggle becomes available. An AutomatedTradingConfirmDialog asks you to confirm the risk before enabling.
- The toggle's state is per-agent: a Smart Scan US30 agent with auto-execute on will forward every triggered setup; a different agent on the same account can remain manual.
For the full wizard walkthrough, see the AI Trading Agents chapter of this guide -> The Wizards -> Step 6: Automated Trading.
Grade-A Fast Track
The GradeAFastTrackCard (same wizard step) opts your agent into a faster execution path for Grade-A setups (confidence ≥ 8 (eight or above)):
- Step-1 conditions (the bullet list of evidence the AI required) are skipped.
- The zone gate still applies: price must enter the AI's entry zone before the signal fires.
- The AI Entry Evaluator still runs as a safety veto — it can reject a Grade-A setup if the live read disagrees, and the four hard gates (open-position guard, news-blocking window, recent-loss gate, same-direction loss gate) can still block the alert.
Use Grade-A Fast Track when you want speed on the AI's highest-confidence ideas; leave it off when you want the full conditions check on every trade. See the AI Trading Agents chapter for the full rationale and risk discussion.
What the Signal Contains
Each automated signal includes:
- Instrument: the routing key (e.g.,
US30-Pepperstone) - Direction: LONG or SHORT
- Entry zone: minimum, maximum, aggressive, and conservative levels
- Stop loss: tight and wide options
- Take profit levels: TP1, TP2, TP3 with ranges
- AI confidence score and grade
position_size_pct: the AI's recommended risk percentage- AI decision notes (machine-readable rationale)
The bot uses this information to place orders according to its configuration.
Fill confirmation gap (important): SkyAnalyst marks a trade as "entered" based on its own price feed crossing the entry zone, not on a confirmation from your broker. The bot's actual fill may differ slightly (or fail entirely if the broker rejects the order). Always cross-check the position in cTrader, especially during news or thin liquidity, and treat the SkyAnalyst "entered" badge as a signal-side state, not a broker-side state.
Monitoring & Troubleshooting
Connection Status
The bridge sends an application-level heartbeat every 20 seconds (v1.46+; earlier versions used 30 s). The web app interprets this as follows:
- Green WiFi icon: bridge is connected and the last heartbeat arrived inside the expected window
- Amber WifiOff icon: the bridge was recently connected but has missed one or more heartbeats — typically this means SignalR is reconnecting after an idle disconnect, or the bridge process is paused (laptop sleep, app minimized to tray, network hiccup). The web app still shows your device as "Last seen X ago." If you see amber for more than ~30 s, check that the bridge tray icon shows "Connected."
- Disconnected: bridge app is not running or has lost connectivity for longer than the timeout.
The 20-second cadence (down from 30 s) is tighter than every documented edge-proxy idle timeout, so transient amber states on a stable wired connection are usually a sign of a real network blip, not a heartbeat-tuning issue.

The three bridge connection states — green, amber, and disconnected — as they appear in Settings
Latency Interpretation
When you click Test Connection, the relay returns a round-trip latency in milliseconds.
| Reading | Color | Meaning |
|---|---|---|
| < 200 ms | Green | Healthy. Order-routing latency is well below human reaction time. |
| 200-500 ms | Amber | Tolerable, but investigate. Check that the bridge is on wired ethernet and that no VPN is in the path. |
| > 500 ms | Red | Investigate immediately. Auto-trading at this latency can mean a meaningful slippage gap between AI signal and broker fill. |
Device Management
- View all paired devices in Settings -> Trading Bridge
- See the last seen timestamp and latency for each device
- Disconnect a device if you no longer need it
- Maximum 3 active devices per account
Common Issues
| Issue | Likely cause | Solution |
|---|---|---|
| Pairing code expired | Code older than 10 min | Generate a new code |
| "Maximum devices reached" | Already paired with 3 devices | Disconnect an unused device in Settings first |
| Bridge shows connected but no signals | Auto-trade off on the specific trade or agent | Enable auto-trade on the trade card or in the wizard's AutomatedTradingCard |
| Signals sent but no orders placed | Bot not attached to chart, bot not Running, wrong port | Verify the bot is Running on the matching chart and the listening port matches the bridge's Routing Key port |
| Signals dropped with "no matching destination" | Routing key mismatch (case is fine; the symbol or broker suffix differs) | Confirm Routing Key is <SYMBOL>-<BROKER> exactly matching what the relay sends |
| "Connected" but amber WifiOff | One or more heartbeats missed | Wait 30 s; check tray icon; if persistent, check Wi-Fi / Ethernet stability |
| High latency warnings | Wi-Fi, VPN, or saturated link | Move to wired ethernet, disable VPN, close large uploads |
| Bot logs "Order rejected" | Broker rules (margin, leverage, news block, market closed) | Check cTrader's journal for the broker error message and adjust risk or timing |
Webhook Security
When you (or an agent) configure webhook delivery from SkyAnalyst — either to your bridge device URL or to an external endpoint — there are a few canonical safeguards to know:
- Per-device webhook URLs: every paired bridge has a unique URL of the form
https://skyanalyst-relay-production.up.railway.app/<deviceId>/webhook. The device ID is a UUID — treat it as a secret. Anyone with the URL can push payloads at your bridge. - Relay-side validation: the relay only forwards if the payload has the required envelope fields (
EventId,Timestamp,Type,UserId,AccountId,Data). Connection tests use a separatetype: "connection_test"payload that is forwarded without ACK tracking. - Bridge-side fail-closed routing: as covered above, no routing key means no forward.
- Custom security headers: for external webhooks (alerting your own backend, Telegram bots, custom dashboards), you can configure custom security headers in Settings -> Webhook Security. The SkyAnalyst dispatcher will add those headers to every outbound webhook so your endpoint can verify the request is genuinely from SkyAnalyst.
For the per-alert webhook security note that appears inline in the wizards (Monitoring Alerts, Trade Setup Alerts, Analysis Notifications), the canonical link is the same: Settings -> Webhook Security.
Operational rule: rotate the device pairing (disconnect + re-pair) if you ever leak the device URL. Codes are cheap; a compromised bridge URL means a third party could send arbitrary payloads to your bot.
Safety & Limits
| Safety Feature | Details |
|---|---|
| Pairing code expiry | Codes valid for 10 minutes only |
| One-time use codes | Each code can only be used once |
| Rate limiting | Maximum 5 pairing codes per hour |
| Device limit | Maximum 3 active devices per account |
| Per-trade toggle | Automation must be enabled per trade or per agent (wizard) |
| Authentication | Relay secret required for bridge-to-server pairing validation |
| Fail-closed routing | Missing or wildcard Routing Key drops the signal rather than broadcasting it |
| Heartbeat 20 s | Tighter than any documented edge-proxy idle timeout |
Critical Safety Rule: Always test automated execution on a demo account first. Start with the smallest possible position size. Monitor the first several automated trades closely before trusting the system to operate unattended. You remain responsible for all trades executed through the Trading Bridge.