The Internet Trade Mirror duplicates orders over the internet between copies of MT4 and MT5 on different computers. Senders can control which trades are broadcast. Receivers can control which trades are copied, and can change the lot sizing and risk settings.
The Internet Trade Mirror duplicates trades over the internet between copies of MT4 or MT5 running on different computers. You place trades in one copy of MT4/5, and these are replicated almost instantly in the receiver copies of MT4/5. The Mirror duplicates both manual and automated trading.
The Trade Mirror uses the same fundamental copying technology as FX Blue's hugely popular Personal Trade Copier.
Subscribers can control lot sizing and risk, can restrict the trading to particular symbols, and can even invert the original direction of your sender's trades.
The speed of copying depends almost entirely on network latency, and is therefore principally determined by geographical location and the speed of light. Slippage will usually be minimal - allowing, of course, for any differences in price and spread between the sending and receiving brokers - and slippage can in fact often be positive as well as negative.
The Trade Mirror is currently available as a free service for a limited number of subscribers. Please contact us for an increased limit, or for a version of the software which you can run from your own server rather than using FX Blue's shared message hub.
Unless otherwise specified in writing by FX Blue, this software is licensed for personal use only. You are not allowed to distribute it to other people, regardless of whether or not money is changing hands. You only have a licence to use the software if you, personally, downloaded it from our website.
Therefore: you are not allowed to distribute the Receiver EA to your subscribers. They must register with FX Blue themselves, and download the EA themselves.
The software is provided entirely at the user's risk, and you should check it thoroughly before deploying it on computers trading real money. FX Blue accepts no responsibility whatsoever for any loss of any kind caused by installation or use of the software.
As a sender of signals, you are responsible for providing support to other people who are using the Trade Mirror to copy your trades. FX Blue cannot answer queries from subscribers about your trading activity.
You should ensure that you are familiar with the Receiver EA and its settings, particularly those for controlling lot sizing and risk.
If necessary, you can give subscribers your recommended settings for the Receiver EA by creating an MT4/5 .set file.
If you control all the accounts which are receiving trades, then you should generally use the Personal Trade Copier instead of this Trade Mirror. The Personal Trade Copier is easier to set up, and it copies trades faster because it does not need to send signals over the internet.
But please also bear in mind the licence conditions for the Personal Trade Copier. You are not allowed to use the Personal Trade Copier as part of a commercial service. You must use the Trade Mirror instead.
Yes, you can trade from your phone provided that you are also simultaneously running the Sender EA in a desktop installation of MT4/5. Any trades which you place from your phone will then be seen by the desktop version of MT4/5, and copied to subscribers.
Yes, your sender account can be logged in to MT4/5 using the read-only "investor" password, because the Sender EA does not place trades.
(Subscriber accounts obviously cannot be logged in using the read-only "investor" password. The Receiver EA obviously needs to place trades, and so MT4/5 must be logged in using the master account password.)
Yes, you can use either a demo account or a real-money account, and each of your subscribers can also use either a demo account or a real-money account.
Yes, you can copy between any MT4/5 accounts with any MT4/5 brokers.
However, if you are sending signals to subscribers who use other brokers then it increases the probability that the subscribers will need to change two settings in their Receiver EA:
The slippage tolerance, because of price differences between the brokers.
Add translations for different symbol names on the two brokers.
To install the Sender EA, run the setup program. You can choose one or more copies of MT4/5 where you want to install the EA. If any copies of MT4/5 are not shown, you can add them to the list using the "Find MetaTrader" button.
You need to restart MT4/5 in order for its Navigator list to update - or right-click over the Navigator and use the "Refresh" option.
You need an account with FX Blue in order to send trades through the Mirror. Your subscribers also need their own accounts with FX Blue.
N.B. In future, you may need an "active" FX Blue account in order to use the Trade Mirror. Signal broadcasting may be disabled if you are not actively publishing your trading results to the FX Blue website.
You control who is allowed to copy your trades by configuring the list of subscribers on the FX Blue website:
N.B. If you remove a subscriber from the list, then they will immediately lose their ability to receive any further messages from your Sender EA. This may leave them with open positions which are no longer being managed.
You open a new chart for any symbol and add the "FX Blue - InternetMirror Sender" EA to the chart, by double-clicking on it in the Navigator list or dragging it onto the chart.
The EA's "Allow DLL imports" setting must be turned on.
You do not need to run multiple copies of the EA on charts for each symbol which you trade. You should only run one copy of the Sender EA, on any chart. This will broadcast all trades for all symbols.
The Sender EA does not need the ability to place orders. Therefore, it can be running on an account which is logged in using the read-only MT4/5 "investor" password.
You need to fill in your FX Blue username and password as parameters for the EA.
All the other parameters can normally be left at their default values, though you may want to choose a specific message hub.
Communication between the Sender and Receiver EAs takes place via a message hub. In future FX Blue will offer a choice of hubs in different locations. For example, a hub in Australia will offer faster trade copying if you and (most of) your subscribers are located in Australia.
You can choose which hub to use via the MessageServer parameter in the Sender EA. Subscribers must use the same setting in their Receiver EAs. If you and your subscribers are using different hubs then no heartbeats or trading messages will be received.
If you have more than one account on FX Blue you can run multiple copies of the Sender EA, broadcasting your trades to different subscribers, using different sets of parameters (e.g. different lot size).
If you are running multiple instances of the EA, then you can make it easier to distinguish between them by giving them different chart background colours and a different description.
The following screenshot is an example of the Sender running successfully.
(The full-chart background is designed to reduce support queries from new MT4/5 users who otherwise try to run more than one EA on the same chart. The colour can be changed using the BackgroundColour setting.)
Shortly after receiving the first tick on its chart, the Sender EA should connect to FX Blue's message hub and send a "heartbeat" message.
The EA displays its current status in the top-left of the chart. If no status is visible, please see the diagnostic information.
The Sender EA sends a message as soon as it detects that there is a new open order in its copy of MT4/5. Receiver EAs will then attempt to place the same trade.
The same applies to trade closure. As soon as it spots that a previously open order has been closed, the Sender EA tells the Receiver EAs to close their trades.
Messages are sent to the subscribers via FX Blue's message hub. The speed of copying depends almost entirely on the latency to the message hub and to your broker. Differences in price between you and the subscribers can be caused both by the latency in receiving signals and also price differentials between different brokers. Subscribers may need to adjust their AllowSlippagePips parameter in order to trade successfully, or even to turn on TradeAllOrdersAtMarket.
Once a receiver gets a signal from your sender, it should make a request to its own broker almost immediately. The speed of trade copying on the receiver is controlled almost entirely by the speed of trade placement by the broker (including network latency to the broker), not by the internal speed of the copier.
The copier's logs will show where any delays are occurring. The copier will record the following process:
Message arriving in the receiver from your sender
Instruction by the receiver to its broker
Confirmation of the new trade on the receiver by the broker
However, there is a special consideration in MT4 (only, not in MT5). Unless your subscribers use the optional Receiver-Worker EA, MT4 can only carry out one trading action at a time, and the receiver EA cannot do anything else while it is waiting for the broker to accept or reject an instruction. If two new signals arrive in the MT4 receiver simultaneously, the receiver EA cannot start working on the second one until its broker accepts/rejects the first one.
The stop-loss and take-profit on a subscriber's trade are only a safeguard in case the connection with your Sender is lost. Under normal circumstances, the subscriber's trade will be closed as soon as your trade is closed. The Receiver EA's s/l and t/p are only used if either (a) the connection with the sender is lost and no close instruction is received, or (b) price differences between brokers mean that the subscriber's s/l or t/p is hit before your s/l or t/p.
By default, there is a limit on the price difference which the Receiver EA will accept between your sender's price versus the receiver's price - controlled by the AllowSlippagePips setting.
If the price difference between your sender and the receiver is larger than this, the receiver will try to get your sender's price by placing a pending limit order instead of buying or selling at market. Note: the broker can have a restriction on the minimum distance between a pending entry and the current market price. A trade can be rejected (MT4 error #130) if the price difference is larger than AllowSlippagePips but smaller than the broker's stop-level.
You can turn off the slippage check by turning on the setting BroadcastAllOrdersAtMarket. This tells receivers to copy your trades regardless of any price difference.
The Sender EA sends a periodic "heartbeat" message, every 30 seconds by default. This states which orders should still be open. If a Receiver misses a trade-closure instruction, e.g. because its copy of MT4/5 is not running at the time, then it should close the order when it next receives a heartbeat from the sender.
Changes to a trade's s/l or t/p are also sent in the heartbeat message. Therefore, there may be a delay of up to 30 seconds between the s/l or t/p changing in your sender's copy of MT4/5 and the Receiver making the change. However, if the trade is closed out on the sender within those 30 seconds because the s/l or t/p is hit, that should lead to an immediate close instruction being sent to the Receiver.
Changes to the entry price on a pending order are also sent in the heartbeat, and therefore updated within 30 seconds.
By default the Sender EA does not send pending orders. It only sends a message to Receivers once a pending order is filled and turns into a buy or sell order.
Copying pending orders is potentially very dangerous. Let's say that you are trading the breakout of yesterday's range, and you have a buy-stop at yesterday's high. This could get triggered on a Receiver without being triggered on the sender, because of slight price differences between the two accounts. If the price then retraces, the sending copy of MT4 will be unaware that the Receiver has a trade which needs to be managed, but the Receiver will have an ever-increasing loss and will not be receiving any instructions to close the position.
However, you can configure the Trade Mirror to send pending orders by turning on the optional IncludePendingOrders parameter. Subscribers can then use the RequireSenderFillWithinMinutes parameter to limit the risk at their end. If the subscriber's order is filled, but your sender's order remains pending, then the Receiver EA can be configured to close its order after this number of minutes (ignored if zero).
Subscribers can use several different modes for determining what lot size to trade:
Risk-based: trade sizes are adjusted based on the subscriber's account equity compared to your equity
Multiple: a simple multiple of your trade size (regardless of different account equity, and therefore % of risk)
Fixed: a fixed lot size per trade
Cash-risk: a fixed cash risk per trade, or a % of account equity or balance
For more information about the options available to subscribers, please see the Receiver EA user guide.
However, in addition to the options which are available to each subscriber, you can also alter the lot size which is issued by the Sender. For example, you can configure the Sender EA's parameters to give subscribers a fixed lot size rather than the actual volume you are trading.
Symbol names are not standardised and can vary between broker accounts. For example, the EUR/USD fx pair may be EURUSD on one account and EURUSD.xyz on another. An equity index such as the DAX may be referred to as DE30, GER30, .DAX, .DE30, [GER30] etc.
In addition, some accounts may contain more than one version of each market on their symbol list - for example, both EURUSD and EURUSD+. When it receives a trade for EUR/USD, the copier needs to know which symbol it should use - and which version, if there is more than one.
The Receiver EA should almost always be able to handle fx pairs without manual overrides to its settings
The Receiver EA will often be able to handle metals, oil, and equity indices, but may require manual overrides to its settings
Other markets, particularly individual equities such as Apple or Google, will almost always require manual overrides to the Receiver EA settings
(Legacy information: some brokers use "market execution" where, in the past, it was necessary for an EA to send a trade and then send a separate instruction to add any s/l and t/p. However, in all recent releases of MT4 and MT5, EAs should now be allowed to send the s/l and t/p as part of their order-open. As a result, the old CloseOrdersImmediatelyIfSLFails setting has been removed from the copier.)
The copier can be used with both hedging and netting accounts on MT5. However, netting accounts require an extra setting to be turned on in the copier.
The copier cannot be fully used with FIFO/non-hedging accounts on MT4, because MT4 does not have proper netting accounts. If your sender opens a buy ticket and then a sell ticket (or vice versa), the first trade will be successfully copied on a FIFO/non-hedging account but the hedged trade will fail.
The Receiver EA uses an order's magic number to identify which orders belong to it, versus which orders are from manual trading or other EAs running on the account. Therefore, magic numbers are also not copied from the sender account.
The Receiver EA uses the same magic number for all orders which it processes. By default, it automatically selects a magic number based on the channel name. Subscribers can choose their own magic number by setting the MagicNumber parameter in the Receiver EA to something other than zero.
The sender and receiver EAs are capable of handling partial closes.
However, this relies on brokers using the standard functionality of MT4/5. Partial closes will not be processed properly by the copier if the broker deviates from standard MT4/5 functionality:
On MT4, the copier expects a partial close to be identified by the order comment (e.g. "from #12345678")
On MT5, the copier expects the ticket number of a position to be unchanged following a partial close (i.e. ticket number remains the same, with reduced volume).
The Receiver EA can be configured to invert the sender's trade direction, turning buys into sells and vice versa. (This feature has been included at user request; we are not aware of any loss-making trading system which can be made profitable by inverting it.)
In order to use this feature, a subscriber needs to turn on the Receiver EA's InvertTrades parameter, and will also need to do one of the following:
By default, the Receiver EA uses the MT4/5 order comment to track the ticket numbers on the sender account. The subscriber can change this behaviour, and get the Receiver EA to use the original comments from the orders on the sender account, by turning on the UseOriginalOrderComments parameter in the receiver.
Alternatively, the subscriber can use the UseCustomOrderComment parameter to use a fixed comment for all orders.
However, please note that these parameters have implications for disaster-recovery. If a subscriber turns on UseOriginalOrderComments or UseCustomOrderComment, then the ticket numbers on the sender account are tracked using a file on disk (in MT4/5's MQL\files directory). If this file is deleted - or is unavailable for some other reason, e.g. because the subscriber is starting up MT4/5 on a new computer in an emergency - then the Receiver EA will close all its orders because it can no longer link them to the sender's heartbeat.
You can block the Sender from placing new trades using a Global Variable in MT4/5 (press F3, or choose Tools / Global Variables).
You can use this either as a way of controlling the Sender manually, by creating and removing the Global Variable yourself, or you can have an automated system which uses the Global Variable to turn the copying on and off based on something such as account equity or performance.
The Sender is controlled by a Global Variable called Suspend-X, where X is the channel name. For example: Suspend-MySender. If a variable exists with this name, regardless of its value (zero/non-zero) then the Sender EA will not issue a message to subscribers when a new trade is placed.
Your FX Blue username
Your FX Blue password
The message hub to use. Subscribers must use the same setting which you use.
The number of seconds to wait between sending each heartbeat message
Orders to include
If not blank, a comma-separated list of symbols to include in the messages to the receiver. This must exactly match the broker's names, including upper/lower case such as EURUSDfx,GBPUSDfx. Trades for symbols which are not on this list are not included.
If not blank, a comma-separated list of EA magic numbers to include in the messages to the receiver. For example, 0,1234,6789 will include manual orders (which have magic number 0), plus orders from the EA(s) which use the magic numbers 1234 and 6789.
You can also start the list with ! to mean "all magic numbers are permitted except the following". For example: !1234,6789
A further option is that you can set IncludeMagicNumbers to file:X, such as file:mylist.txt. The Copier will then read a list of magic numbers from a file in the MQL\Files directory, such as mylist.txt. This file can use several formats to specify the permitted magic numbers: one entry per line, entries separated by spaces, entries separated by commas. You can also include ranges of permitted magic numbers such 100-799
If not blank, a comma-separated list of order comments to include. For example, pivot,breakout will only include orders whose comment includes either "pivot" or "breakout". The match is case-sensitive. You can also match an exact order comment using quotes. For example, pivot,"breakout" will match an order whose comment includes "pivot" (e.g. pivot123), or an order whose comment is the exact text "breakout".
You can also start the list with ! to mean "all comments are permitted except the following". For example:
Determines whether pending orders are sent, or whether the broadcaster only sends messages when trades are filled.
If turned on, the sender will ignore orders until/unless they have a stop-loss. If you open a trade and then add a stop-loss later, the Sender will copy the trade after that delay - but the delay may mean that you need to change the slippage tolerance.
MT5 only: copies requests for buy and sell trades as soon as they are sent by MT5 to the broker, without waiting for confirmation of a new filled trade. Can speed up the copying of orders. However, it is then possible for the sender's order to be rejected and for the receiver to have a trade of its own without a matching position on the sender. The receiver's trade will then be closed at the next heartbeat. Slippage comparisons are made against the current/requested price on the sender, which can be different to the price at which the sender's request is later filled by the broker.
Lot sizing and pricing
(Lot sizing can also be changed using the settings in the Receiver EA)
If not zero, the EA will send this fixed lot size instead of the number of lots actually traded.
Ignored if UseFixedLotSize is turned on (i.e. non-zero). Otherwise, modifies the message so that the EA reports this multiple of the actual lot size (e.g. 0.1 to divide lot sizes by 10).
If not blank, a comma-separated list of multipliers for individual symbols which override the main LotSizeMultiplier setting. The symbol names in this list should exactly match the names on the sender account including any suffix used by the broker. For example: GBPUSD=2,USDCHF=0.5
If turned on, the Receiver EA is instructed to buy/sell at the current market price, regardless of the entry price for the sender's position. Equivalent to the Receiver EA turning on the TradeAllOrdersAtMarket setting in the receiving EA.
If turned on, the s/l and t/p on trades are not broadcast to the Receiver EA.
Hides the true s/l on each trade by adding this number of pips to it (i.e. moving it further away from the open price). This setting is ignored if HideSLandTP is turned on.
Hides the true t/p on each trade by adding this number of pips to it (i.e. moving it further away from the open price). This setting is ignored if HideSLandTP is turned on.
If an order has no stop-loss, the system will broadcast the stop-loss as this number of pips from entry.
Delays transmission of a new order to the receiver until it is in profit by the specified number of pips. The delay can lead to large price differences between sender and receiver, and you will need to change the slippage tolerance.
Delays transmission of a new order for a specified number of seconds. The delay can lead to large price differences between sender and receiver, and you will need to change the slippage tolerance.
Number of times to retry if unable to send an order open/close message. (Not used with "heartbeat" messages because they are quickly resent anyway.)
Controls the description which is displayed in the top-right of the chart, making it easier to distinguish between multiple copies of the EA with different settings. (This setting has no effect on trading behaviour.)
Chart background colour which the EA uses. This can be altered to make it easier to distinguish between multiple copies of the EA with different settings.
Colour of the EA's text labels (may need to be changed if you alter the background colour)
Any issues which require user attention are always displayed on screen. If this setting is turned on, they are also sent by email (using the details configured in MT4's Tools/Options/Email)
If SendWarningsByEmail is turned on, the subject line to use for any warning emails
MT4: Controls how often the sender checks to see if a new order has been opened, or if an order has been closed. The figure is in milliseconds, and can be set as low as 10. However, values below 25 will typically cause MT4/5 to start using large amounts of processor power without any real improvement in trade placement. The median delay in the sender spotting a new trade will be half the value of this parameter; a value of 50 will typically lead to new trades being detected after 25 milliseconds.
MT5: this setting is largely redundant because, unlike MT4, MT5 notifies EAs when new orders are opened. The MT5 Sender EA does not need to do a scan of the account, and the TradeWatchFrequencyMS setting only acts as a backup in case MT5 fails to issue a new-order notification.
If turned off, then this prevents the EA from sending the comment for each order to the Receiver EA. In effect, it will turn off the UseOriginalOrderComments parameter in the Receiver EA.
If either your Sender EA or a subscriber's Receiver EA is unable to connect to the FX Blue hub then it will display a communication error message and number on its chart.
If both the Sender EA and a Receiver EA are successfully connected, then the Sender should be issuing heartbeat messages and the Receiver should be displaying the last-heartbeat time on its chart.
Full information about diagnosing problems on a subscriber computer is contained in the separate user guide for the Receiver EA.
If your Sender EA is not displaying an updating last-hearbeat time on its chart, then please check for problems in the MT4/5 Experts log on your sending computer.
If the heartbeat time in your Sender EA is updating, but a subscriber is not receiving the updating heartbeat, please check the following:
The subscriber has configured the Receiver EA to use the same message hub which you are using
The Receiver EA is not displaying a warning about a communication error with the hub
There are no errors in the subscriber's MT4/5 Experts log which have caused the Receiver EA to terminate
If a subscriber is successfully receiving an updating last-heartbeat time in their Receiver EA, but no trades are copied, then there are three possible explanations:
Your Sender EA is ignoring the new trades. Please check the MT4/5 Experts log on your computer. This will confirm whether the Sender EA is seeing the new trades, and any reason why they are not being sent to subscribers.
The subscriber's Receiver EA is rejecting the trade signals. The MT4/5 Experts log on the subscriber's computer will confirm receipt of messages, and any reason why the Receiver EA is not trading them. Please see the further information in the user guide for the Receiver EA.
The subscriber's broker is rejecting trading instructions. Any rejections from the broker will be recorded in the MT4/5 Experts log (and also in the MT4/5 Journal). Please see the further information in the user guide for the Receiver EA.
The following list shows possible error messages which the Sender and Receiver EAs can display in their status indicator on the chart, and whether each message can apply to senders or receivers (or both).
Microsoft WinHttp error. Either the Microsoft WinHttp library is missing or damaged, or the computer is critically low on resources such as free memory
2 - 4
Failed to connect to the FX Blue message hub - check your internet connection and proxy server settings
5 - 11
No response from the FX Blue message hub - check the reliability of your internet connection
You are already using the same receiver details in another copy of the receiver EA
13 - 14
Corrupt response from the FX Blue message hub - check the reliability of your internet connection
Your FX Blue account is inactive, and is no longer allowed to send messages through the Trade Mirror
You have not set up any subscribers
Your FX Blue account is configured to receive signals from one or more users, and cannot also be used as a sending account
Your FX Blue account is inactive, and is no longer allowed to receive messages through the Trade Mirror
The copy of the sender/receiver EA is out of date - you need a new version of the software
Your FX Blue account has not been set up as a subscriber for the specified sender (or has been removed from the subscriber list)
Incorrect FX Blue password
There are too many users already connected to the sender's trades
Your FX Blue account is already being used on another computer to receive trades from this sender
Your computer has been blacklisted because of abuse
The sender's FX Blue account has been disabled from using the Trade Mirror
You may need to verify your email address with FX Blue before you can send/receive signals. Please go to https://www.fxblue.com/validate/email.aspx
You may need to verify your phone number with FX Blue before you can send/receive signals. Please go to https://www.fxblue.com/validate/phone.aspx
This section only applies to MT5, not MT4, and it only applies to netting accounts in MT5 (where there is a single position per symbol, rather than hedging accounts which have separate tickets for each buy and sell).
The copier can be used on MT5 netting accounts, but there are additional considerations which you need to bear in mind. To use the copier on a netting account, you need to turn on the AllowMT5NettingAccount setting in the Advanced section of the EA's options, to indicate that you have read this part of the user guide.
On an MT5 netting account, the Sender will maintain a list of "virtual" tickets corresponding to your current net position on your account. For example: you buy 0.20 lots EUR/USD and then buy a further 0.10 lots. The MT5 account will show a single position of 0.30 lots. But the Sender will broadcast separate virtual tickets of 0.20 lots and 0.10 lots, allowing hedging accounts (in MT4 or MT5) to match the Sender's activity.
The Sender will then process closes on a FIFO basis. Continuing the same example, let's say that you sell 0.25 lots, leaving you with a net position in MT5 of 0.05 lots. The Sender will treat this as a complete close of the 0.20 virtual ticket, and a partial close of the 0.10 ticket.
There are two special things you need to bear in mind about using the Sender on an MT5 netting account:
You cannot use IncludePendingOrders on a netting account. You can only send changes to your open positions.
The Sender has to track its virtual tickets using a file on disk (in MQL5\Files). If you move the Sender to another computer, you need to transfer this file, or else the Sender will lose its memory of the virtual tickets which it has open.
You can make your own modifications to the copier using MQL code libraries in MT4/5.
Before describing the libraries, there are two important notes about re-installing the copier if you use these external filters:
If you re-run the copier's installer program, this will overwrite any changes which you have made to the custom code libraries described below. If you make changes, you should keep copies of your modified files, and re-install them into MT4/5 after you re-run the copier's setup program.
In future versions of the copier, there may be additions to the functions/hooks in the external filter libraries. When a new version of the copier is released, you may need to update your modified code with new functions which the copier expects to find in the external MQL library.
The Sender has an MQL code library called CopierSenderFilter. This is used by the EA if you turn on the UseExternalFilters setting in the Advanced section of the sender options. You can modify and recompile this library to create your own rules for the following:
Prevent the sender copying specific trades
Modify the list of trades which the sender "sees" on the account
For information on how the filters work, simply open the .mq4/.mq5 file in MT4/5's MQL\Libraries directory. You can add your own rules to this file, recompile the .ex4/.ex5 library, turn on UseExternalFilters, and then reload the copier. Please remember to take a backup of your modified files - as described above.