MT5 Auto-Trading
MT5 Auto-Trading Setup
The SignalWhisper Expert Advisor runs on your own MetaTrader 5 terminal and places pending orders from your active signals. SignalWhisper never holds your broker credentials and never places orders for you β the EA does everything locally, under your control.
Create or copy your API key
Download the Expert Advisor
Download the SignalWhisper EA β a single MQL5 source file you compile inside MetaTrader 5.
Download SignalWhisper.mq5Install & configure in MetaTrader 5
- In MT5, open File β Open Data Folder, then drop
SignalWhisper.mq5intoMQL5/Experts. - Back in MT5, open the Navigator, right-click the EA and choose Modify to open MetaEditor, then press Compile (F7).
- Allow the EA to reach the feed: Tools β Options β Expert Advisors β Allow WebRequest for listed URL and add
https://signalwhisper.com. - Drag the EA onto any chart and turn on AutoTrading in the toolbar. Set the inputs below, then click OK.
| Input | Default | What it does |
|---|---|---|
| InpApiKey | "" | Your sw_live_β¦ API key from Step 1. The EA refuses to start without it. |
| InpBaseUrl | https://signalwhisper.com | Base URL (no trailing slash). The EA appends /api/mt5/signals itself. |
| InpMarketFilter | forex | Which signals to pull: forex | stock | crypto | nonforex | all. |
| InpLots | 0.01 | Fixed lot size when the server sends no risk amount (stock/crypto signals). Forex orders are sized from your equity β see InpRiskSizing. |
| InpRiskSizing | true | Forex: size each order so a stop-out loses the risk amount the server sends (0.5% of your equity by default), using your broker's own tick value. Skips the trade if even the minimum lot would risk far more. |
| InpMovingStop | true | Forex: target TP3 and move the stop up the TP ladder on every price change β at TP1 to 20% of the way to TP3, at TP2 to 50%, at 90% to 75%. The stop never loosens. |
| InpResetPeak | false | Set true once to reset the equity peak after an 8% drawdown pause, then set it back to false. (A 3% daily-loss pause clears by itself at 00:00 UTC.) |
| InpPollSeconds | 60 | How often the EA polls the feed, in seconds (minimum 15). Higher = fewer requests. |
| InpMagicNumber | 90210001 | Identifies and de-duplicates the EA's own orders. Leave as-is unless it clashes. |
| InpExpiryHours | 24 | Pending-order expiry in hours (0 = good-till-cancelled). |
| InpDryRun | true | TRUE = log only, place NO orders. Keep it ON until you have watched a few polls. |
| InpSymbolMap | "" | Optional. The EA finds broker names like META.US, #META or NEARUSD by itself; use this only when it can't, e.g. NEAR=NEARUSDT;META=#Meta. |
| InpMaxPriceGapPct | 20 | Skips a signal when the broker's price is this many percent away from the entry, which means the symbol matched the wrong instrument. |
| InpCloseOnSignalClose | true | When SignalWhisper closes a signal, the EA closes the position it opened for it. Pending orders for closed signals are always cancelled. Set false to manage open positions yourself. |
The signals endpoint is https://signalwhisper.com/api/mt5/signals. The EA builds this from InpBaseUrl, so you only set the base URL and paste your key.
Leave InpDryRun on true and watch the Experts log for a few polls before you let it place real orders. Test on a demo account first.
Risk disclaimer
The EA runs on your own MetaTrader 5 terminal, on your own machine, against your own broker account. It fetches your active signals over an authenticated webhook and places pending orders locally.
- SignalWhisper never holds your broker credentials.
- SignalWhisper never places orders on your behalf.
- Every order is placed by the EA running under your control β execution is your decision on your own terminal, at your own risk.
SignalWhisper provides signals β not execution, portfolio management, or financial advice. Signals are informational only and are not a recommendation to trade. Trading carries risk of loss. Test on a demo account first.
How the feed works
The EA polls GET /api/mt5/signals with your key as a Bearer token. The key must resolve to an active or trialing subscription, and the feed is rate-limited to 60 requests per minute. An optional ?market=forex|stock|crypto query filters the rows. The response is JSON:
{
"success": true,
"count": 1,
"signals": [
{
"id": "forex:1234", // globally-unique key (used for idempotency)
"market": "forex", // "forex" | "stock" | "crypto"
"ticker": "EURUSD", // symbol / pair
"direction": "BUY", // "BUY" | "SELL"
"entry": 1.0850, // entry price (number)
"stop_loss": 1.0800, // number, or null
"take_profit": 1.0950, // number, or null (forex: TP1)
"issued_at": "2026-09-28T12:00:00.000Z",
// forex only, EA v2.00+:
"expires_at": "2026-09-29T12:00:00.000Z",
"tp1": 1.0890, "tp2": 1.0920, "tp3": 1.0950,
"ladder_trigger1": 1.0890, "ladder_lock1": 1.0870, // ...trigger2/lock2, trigger3/lock3
"allow_entry": true, // false = no NEW order (caps, kill switch, news, spread/drift)
"skip_reason": "",
"risk_amount": 50.0 // account currency lost at the stop
}
]
}Raw signal facts only β no win-rate, no performance figures. The EA reads this JSON and decides, based on your inputs, whether to place a pending order locally.
Runs on your terminal: the EA executes on your machine under your control. SignalWhisper never touches your broker.
Risk: trading carries risk of loss. You are solely responsible for the orders the EA places. Test on a demo account first.
Not financial advice: SignalWhisper publishes signals, not execution or advice, and makes no promise of any outcome.