PropMirror setup guide: two terminals, one channel name, ten minutes
After this guide you have two MetaTrader 5 terminals on one computer or VPS, one sending its trades and one following them, and you know which journal lines tell you it works. Time needed: about ten minutes including the checks.
What you need
- Two MT5 terminals on the same Windows computer or Windows VPS, each logged in to one of your own accounts. Demo accounts are fine for the first run.
- Both accounts in hedging mode. PropMirror refuses netting accounts at start and says so in the journal.
- PropMirror installed in both terminals. After purchase it appears under Market in the Navigator of the terminal you bought it in; in the second terminal log in with the same MQL5 account and it appears there too, or download it again from your purchases.
- Algo Trading switched on in both terminals (the button in the toolbar).
Step 1: the master
- Open any chart in the terminal that will send trades.
- Drag PropMirror onto the chart.
- Set Role of this terminal to Master.
- Enter a Channel name. Any word without spaces works, for example mirror1 . If you leave it empty, PropMirror uses the account number, which also works but is harder to type on the other side.
- Optional: Risk % per trade on the MASTER account. Enter the risk you actually use, for example 2.0. This is only an announcement; it does not change your trading. It is needed for risk equivalent sizing on the slave.
- Click OK. The journal shows one line: [PropMirror] MASTER v1.10 started | channel 'mirror1' -> Common\Files\PropMirror\mirror1.txt ...
Step 2: the slave
- Open any chart in the terminal that will follow.
- Drag PropMirror onto the chart.
- Set Role of this terminal to Slave.
- Enter the same channel name as on the master.
- Choose the sizing (see the table below). The default, equity proportional, is a sensible start.
- Click OK. The journal shows: [PropMirror] SLAVE v1.10 started | channel 'mirror1' | lots: equity-ratio | ...
If the slave instead reports no valid snapshot for 30 s ... is the master running on channel 'mirror1'? , the channel names differ, the master is not running, or the two terminals do not share the Common folder (see the portable section below).
Step 3: the first check
Open a small position by hand on the master. Within a second the slave journal shows:
[PropMirror] Copy opened: master 123456 -> own 234567 | GER40 BUY 0.20 lots (master 0.10 x equity-ratio) | latency 87 ms
Now move the stop loss on the master. The slave modifies its stop and logs it. Close the master position. The slave logs Orphan close: master 123456 gone -> copy 234567 closed . If you see these three lines, the pair works.
The inputs that matter
| Input | Default | What it does |
|---|---|---|
| Role of this terminal | Slave | Master sends, Slave follows. One file for both. |
| Channel name | empty | Must be identical on master and slave. Empty means the account number. |
| Sync interval (ms) | 50 | How often the master writes and the slave reads. 50 is fine on a normal PC; do not go below 25. |
| Lot scaling mode | Equity-proportional | Slave lots = master lots × (slave equity / master equity). Alternative: fixed multiplier. |
| Fixed multiplier | 1.0 | Used only in multiplier mode. 0.5 halves every copy. |
| Risk % per trade on THIS account | 0 | Slave side of risk equivalent sizing. With master 2.0 and slave 0.25 every copy is scaled by 0.125 on top of the mode above. Both sides must be above 0 or it stays off. A ratio above 1 is clamped to 1: PropMirror never sizes the copy larger than the master. |
| Copy SL/TP | true | Copies stop loss and take profit levels. Switch off when the two brokers quote different prices. |
| Close copy when the master position is gone | true | The core of the mirror. Leave on unless you want to manage exits yourself. |
| Copy only these master magics / Never copy these | empty | Comma separated magic numbers. Empty copies everything including manual trades. |
| Magic number of copied positions | 777001 | So you can tell copies from your own trades on the slave. |
| Freeze if master heartbeat is older (seconds) | 10 | The slave stops acting when the master file is older than this. One journal line and one push, no closes. |
| Symbol mapping | empty | GER40>DE40;US30>DJ30 when broker symbol names differ. |
| Risk lock: name of a global variable | empty | Copying pauses while this variable is 0.05 or lower. With PropGuardian enter PropGuardian_<your login>_State . Enter the name, not a number. |
| Privacy mode | false | Masks account and channel numbers on the chart and in the journal, useful for screenshots and streams. |
| Built-in demo cycle in the strategy tester | true | Only affects the tester. Set to false to test your own inputs there. |
Portable terminals and VPS
PropMirror passes the position list through the shared folder Common\Files\PropMirror\ . Two normally installed terminals on the same Windows user share it automatically.
A terminal started with /portable keeps its own data folder and does not see the shared one. Create a junction once, with the portable terminal closed:
mklink /J "C:\path\to\PortableTerminal\Common" "%APPDATA%\MetaQuotes\Terminal\Common"
Run this in a command prompt as the same Windows user that runs the terminals. After that both terminals read and write the same folder.
On a Windows VPS run both terminals under the same Windows user and it works like on a PC. The MQL5 hosted VPS (the one you rent inside the terminal) runs each terminal in its own environment without a shared folder, so it cannot be used for the pair.
Typical journal lines and what they mean
- master 123456: copy was opened once and closed externally -> NO re-open (one-shot) : you, your stop or your guardian closed the copy. PropMirror leaves it closed on purpose until the master opens a new trade.
- scaled lots below broker minimum -> master 123456 NOT mirrored : the slave account is too small for this size at this scaling. The trade is skipped, nothing is inflated.
- not enough free margin for 0.50 GER40 (free 120.00) -> NOT mirrored, no request sent : same idea for margin.
- Open for master 123456 failed 3x (retcode 10027) -> 60 s pause : the broker rejected the request three times. 10027 usually means Algo Trading is off in that terminal.
- risk lock variable 'PropGuardian_12345_State' does not exist yet : the guardian has not written its variable yet, usually because it is not attached in this terminal. No lock until it exists.
- WARNING: risk lock setting '0' looks like a NUMBER : the input wants the variable name, not its value.
Links
PropMirror on the Market | PropGuardian for the risk lock | All my products
Questions go in the Comments tab of the product page or by message. Please include the journal lines from both terminals, they answer most questions on their own.


