SignalProcessor EA is responsible for processing signals
on the Receiver terminal. Signals are received from the
SignalProvider EA which is
running on the Source terminal(s).

Important: you need to have only one SignalProcessor EA on the
Receiver terminal. Anyway it will process all trades from all currency pairs.

Installation

If you prefer automatic installation
(recommended) then SignalProcessor EA will be attached to
the chart and configured automatically.
If you prefer manual installation and attach SignalProcessor EA to the chart manually
then please make sure that in EA settings window:

Allow DLL imports box is checked

Confirm DLL function calls box is unchecked

Allow live trading box is checked

See the screenshot below:

After the installation we recommend to save the default settings (click Save
button on the “Inputs” tab). It is a useful action in case you close
the chart accidentally, then you will be able to restore the settings from the saved
file.

It is important to enable EA execution in the terminal:

Configuration

Please see the description of SignalProcessor’s settings below:

PriceDifferencePips – defines max price
difference between the Source’s order Execution price and Receiver terminal
market price. Price difference should be entered in points (1 point = 0.0001 for
non – JPY pairs, and 0.01 – for JPY ones).
In other words the position will be opened if the price difference between signal
price and current price (defined in points) is no more than selected. In other case
the signal will not be processed and you will see “Sorry, but price is too
far from requested entry point” message in EA logs.Example:
The Source terminal opened EUR/USD order at 1.3645, the current price on the Receiver
terminal is 1.3656 and PriceDifferencePips = 10.
In this case the difference between the Signal Provider's and the Signal Processor's
prices will be: [1.3645 - 1.3656] = 0.0011 = 11 pips which is bigger than PriceDifferencePips,
so the order will NOT be opened.

Slippage – is used when the signal is sent to the MetaTrader server. Slippage defines maximum difference
between the price which sent to the MetaTrader sever and actual execution price. If slippage
is too small then Copier will have to try opening orders many times. If slippage is too big
then orders on Source and Receiver accounts can be opened with big price difference.
Slippage is defined in pips, 1 pip = 0.0001 for non-JPY pairs and 0.01 for JPY pairs.

ExpirationMinutes–defines max time difference
between provider’s order timestamp and processor’s current time in
minutes;
if this difference is more than the given value, then the order will not be copied.

BoostMode– If this parameter = true (default) then the EA does not have to wait for a new tick to work. If it is set to false
then the software works as usual MT4 EA and checks for changes on every tick (price change in
the terminal). This can cause long delays if the price changes rarely, but this
is how the experts should work in MetaTrader.
Note: If BoostMode=true then you will need to stop experts to open EA properties.

NumberOfTries – a number of consecutive tries to execute the
trading signal. Sometimes you can get requote or server does not respond. Then
the expert will try to execute the trading signal defined number of times.

AutoAdjustLotSizeBasedOnBalance – if this parameter = true
then lot size will be calculated by this formula: Receiver account lot size = Source account lot size * Receiver account balance / Source account balanceNote:
If Source and Receiver accounts have different base currencies then Copier will convert both balances into USD so they will be compared correctly.

LotMultiplier - lot that signal provider opened on his account
will be multiplied on this value. It allows you to decrease or increase
resulting lot to suit your requirements to your account.
Example 1: Signal provider trades on $1000 account, your
account is $50000, if you copy signal provider's trades as is you will get too
small profit (loss). So you can set multiplier 50, and when signal provider
opened position with lot 0.1 you will get position with lot 5.
Example 2: Signal provider trader on account $100000, your
account is $20000. It will be dangerous to your account to open the same lot,
sometimes it will be impossible. So you can set multiplier 0.2 and when signal
provider opened position with lot = 10 you will get position with lot = 2. If
resulting lot is smaller then minimum lot in your MetaTrader then it will be
used minimum lot.

UseFixedLot – If this setting is “true” then
Provider’s lot size will be ignored and the lot size for each order on processor
side will be set according to LotSize property (see below).

LotSize – defines the fixed lot size that will be used in
every trade. This parameter works only when UseFixedLot = “true”.

WaitForOpenPrice – if this setting is enabled and Open price of new market order which comes from Source account differs from the current execution price on this Receiver account for more than PriceDifferencePips pips then Copier will not open such order instantly but will wait for better price.

WaitForClosePrice – if this parameter is "true" and close price on Receiver account differs from current price on this Receiver account then Copier will wait for better Close price.

MaxLosesInPipsWhileWaitForClose – if this option's value is more than 0 then Copier will close that orders which are waiting for better Close price (see WaitForClosePrice setting) which have the loss in pips bigger than the value of this property.

ReverseMode – if you want Copier to
reverse provider’s trades, then you should put “true” into this parameter. In
this case Copier will place orders with type opposite to Provider's order type:

Reverse_SL_TP_InReverseMode – if both Reverse_SL_TP_InReverseMode
= “true” and ReverseMode = “true”, then Receiver’s StopLoss
will be equal to Source’s TakeProfit and vice versa – Receiver’s
TakeProfit will be equal to Source’s StopLoss.

UseSpreadsInReverseMode – if the parameter = “true”,
then in ReverseMode the Pending orders’ entry price will be adjusted according
to the Processor’s spread value. See the table below to get more information:

Provider

Processor (Reverse Mode)

Buy Limit

Sell Stop - Spread

Sell Limit

Buy Stop + Spread

Buy Stop

Sell Limit - Spread

Sell Stop

Buy Limit + Spread

ProcessPendingBuy(Sell)Execution - allows the processing of Pending
Orders executions received from the SignalProvider EA. Set this
parameter to “true” only in case you have the CopyPendingOrders
= “false” on the SignalProvider EA. After that pending
orders will not be copied to the receiver terminal but pending orders executions
will be copied as Market orders.

StopLossPips defines the fixed Stop Loss value for every copied
order, the value should be determined in pips (1 pip = 0.0001 for non - JPY pairs,
and 0.01 for JPY- pairs). If this value is not 0 then Provider’s Stop Loss
level will be ignored and replaced with the fixed level. If this parameter is 0
then provider’s Stop Loss will be taken.

TakeProfitPips defines the fixed Take Profit value for every copied
order, the value should be determined in pips (1 pip = 0.0001 for non - JPY pairs,
and 0.01 for JPY- pairs). If this value is not 0 then Provider’s Take Profit
level will be ignored and replaced with the fixed level. If this parameter is 0
then provider’s Take Profit will be taken.

CopyExactCommentsFromMaster - if this parameter = true then the comment of copied order on Receiver account will be equal to the comment
of the original order on Source account. By default (when CopyExactCommentsFromMaster = false), Copier puts original order ticket into copied order comment.

ReplaceCommentWith - if this parameter isn't empty then the comment of copied order will be replaced with value in this parameter.

AllowedComments –allows filtering orders
according to their comments. Comments should be separated by semicolon, for instance:
comment 1; comment 2; comment 3

AllowedSymbols –allows filtering orders
by symbol name. If this parameter is empty then the program will process orders for all pairs.
If this parameter is not empty then only specified pairs will be processed. Symbols should be separated by semicolon, for instance:
EURUSD;EURGBP;USDJPY;
In this case only orders with these symbols will be copied to the Receiver account. Orders with other symbols will be ignored.

RiskPercentage – is designed for risk management. If you set some value here then the lot size of each copied order will be adjusted
and this order will risk no more than selected % of your account in case the
Stop Loss is hit.
Note that the original order should have the Stop Loss level.

SystemSpecificRiskPercentages – allows you to manage risk
for some specific orders. Orders will be determined by the comments.
Risk percentages should be written in the following format:
<comment 1>:<risk percentage 1>;
<comment 2>:<risk
percentage 2>
Example: You want orders which have “RiskySomething”
comment on Provider side to risk only 1% of equity if the trade closes by Stop Loss.
And all orders which have “SafeSomething” comment on Provider side to
risk 5% of equity
So you need to put “RiskySomething:1;RiskySomething:5” into RiskPercentages
property.
Copier EA will copy the original trade but modify the size of position according
to the percentage risk. Risk management will be applied only to the orders with
certain comments.
Pay attention to that you should not put '%' sign in percentage field, for
example:
comment1:2; comment2:3.5; comment3:4
In this case if
the Signal Processor EA receives an order with "comment2" in the comment
then it will adjust its LotSize according to risk 3.5% of the receiver account size.
And
in case the StopLoss is hit you will lose 3.5% of the whole account size.
Note that the original order should have the Stop Loss level.

SystemSpecificLotMultiplier – allows you to manage lot
multiplier for some specific orders. Orders will be determined by the comments.
Lot multipliers should be written in the following format:
<comment 1>:<lot multiplier 1>;
<comment 2>:<lot
multiplier 2>
Example: You want orders which have “Large Lot”
comment on Provider side to set smaller lot size.
And all orders which have “Small Lot” comment on Provider side to
set bigger lot size.
So you need to put “LargeLot:0.1;SmallLot:5” ” into SystemSpecificLotMultiplier
property.
Copier EA will copy the original trade but modify the size of position according
to the LotMultiplier. Specific lot multiplier will be applied only to the orders with
certain comments.

Ignore_SL_TP_ForMarketOrders
If this setting is set to “true” then StopLoss and TakeProfit levels are ignored for market orders so each new market order will be opened with StopLoss=0 and TakeProfit=0 on the Receiver account.

MaxNumberOfOrders - Defines the maximum number of orders allowed on the Receiver
terminal, if the number of orders on this terminal is more or equal to this
parameter then all new tasks from the Provider will be ignored.
So for example:

You set MaxNumberOfOrders = 5.

Currently there are 2 BUY orders and 2 BUY STOP orders on Receiver terminal.

After that you get the new task from
the Provider (let's say SELL order). This order will be processed.

So you'll have 2 BUY + 1 SELL + 2 BUY
STOP = 5 tasks in total.

After that you get another task from
the Provider (let's say SELL LIMIT order) this task will NOT be processed
because the total number of orders on the Receiver terminal is 5 so the task
will be ignored.

MaxNumberOfOrdersPerSymbol - Defines the maximum number of orders allowed for
one Symbol on the Receiver terminal, if the number of orders on this terminal
for this Symbol is more or equal to this parameter then all new tasks from the
Provider will be ignored.
So for example:

You set MaxNumberOfOrdersPerSymbol = 2.

Currently there are 2 BUY EURUSD orders and 2 BUY STOP GBPUSD orders on Receiver terminal.

After that you get the new task from
the Provider (let's say SELL USDJPY order). This order will be processed, so
you'll have 2 EURUSD orders + 2 GBPUSD orders + 1 USDJPY order.

After that you get another task from
the Provider (let's say BUY STOP EURUSD order) this task will NOT be processed
because the total number of orders for EURUSD = 2.

AddSymbolPrefix - If your broker has some Prefix in currency pair
name (like “aEURUSD”) then you need to enter this prefix (“a”
in example) into this setting.

AddSymbolSuffix- If your broker has some Suffix in currency pair
name (like “EURUSDfx”) then you need to enter this suffix (“fx”
in example) into this setting.

AllowAutoAdjustingSymbolName – if this setting is enabled (set to "true") then you will allow the
Copier to adjust the currency pair names automatically. Note, that AddSymbolPrefix and AddSymbolSuffix
fields should be empty in this case. For example, if source and receiver accounts brokers have differences
in currency pair suffixes then Copier will adjust currency pairs names automatically
(like “EURUSD”->”EURUSDfx”, “EURUSD.”->”EURUSD” or “EURUSDfxf”->”EURUSDa”, etc.).

OpenOrderSound –defines the sound to be played when the new
market order is opened (for example, OpenSnd.wav). Sound files
should be placed to "<MetaTrader>\Sounds\" folder. Sound files should
have *.wav format.

CloseOrderSound – defines the sound to be played when some
order is closed. Sound files should be placed to "<MetaTrader>\Sounds\"
folder. Sound files should have *.wav format.

OpenPendingOrderSound – defines the sound to be played when
the new pending order is placed. Sound files should be placed to "<MetaTrader>\Sounds\"
folder. Sound files should have *.wav format.

ModifyOrderSound – defines the sound to be played when some
order is modified. Sound files should be placed to "<MetaTrader>\Sounds\"
folder. Sound files should have *.wav format.

StopTradingWhenEquityIsLessThan – When this option is enabled
Copier will stop processing "Open order" signals from Source terminal in case when Equity level of this Receiver account is less than some value.
"0.0" value disables this option.

StopTradingOnDrawdownPercent –
When this option is enabled Copier will stop processing "Open order" signals from Source terminal in case when Drawdown percent of this Receiver account is less than some value.
Drawdown is calculated as the difference between current Equity and maximum historical Equity in percentage.
"0.0" value disables this option.

CloseAllPositionsOnStopTrading – if this opetion is enabled then Copier will close all orders on this Receiver account when the trading is stopped due to low Equity level or too big Drawdown level (see
StopTradingWhenEquityIsLessThan and StopTradingOnDrawdownPercent options).
In other case (when CloseAllPositionsOnStopTrading=false) Copier will leave the orders alive until they are closed by SL/TP levels.

AddPipsToSLTP – If this parameter is "true" then StopLoss and TakeProfit levels of the order will be shifted on Receiver account if the execution price on Receiver account differs from the execution price on Source account.
For example:

Source account sends Buy order with execution price at 1.0000, SL at 0.9900, TP at 1.0010.

Current price on Receiver account is 1.0005, so the execution price on Source account differs from execution price on Receiver account for 5 pips and the order will be executed at 1.0005.

TopExecutionPriceBorderLong – with the help of this setting you can set the
top border of the range within which the order on Receiver account should be opened. The range is pip-based and is calculated based on the Source order entry price.
This setting is valid only for long orders (Buy, Buy Stop, Buy Limit).
For example you want each Buy order on Receiver account to be opened 5 or 6 pips above the execution price of the order on Source account.
In this case you should set TopExecutionPriceBorderLong=6 and BottomExecutionPriceBorderLong=5.

BottomExecutionPriceBorderLong – with the help of this setting you can set the
bottom border of the range within which the order on Receiver account should be opened. The range is pip-based and is calculated based on the Source order entry price.
This setting is valid only for long orders (Buy, Buy Stop, Buy Limit).
For example you want each Buy order on Receiver account to be opened 5 or 6 pips above the execution price of the order on Source account.
In this case you should set TopExecutionPriceBorderLong=6 and BottomExecutionPriceBorderLong=5.

TopExecutionPriceBorderShort – with the help of this setting you can set the
top border of the range within which the order on Receiver account should be opened. The range is pip-based and is calculated based on the Source order entry price.
This setting is valid only for short orders (Sell, Sell Stop, Sell Limit).
For example you want each Sell order on Receiver account to be opened 5 or 6 pips above the execution price of the order on Source account.
In this case you should set TopExecutionPriceBorderShort=6 and BottomExecutionPriceBorderShort=5.

BottomExecutionPriceBorderShort – with the help of this setting you can set the
bottom border of the range within which the order on Receiver account should be opened. The range is pip-based and is calculated based on the Source order entry price.
This setting is valid only for short orders (Sell, Sell Stop, Sell Limit).
For example you want each Sell order on Receiver account to be opened 5 or 6 pips above the execution price of the order on Source account.
In this case you should set TopExecutionPriceBorderShort=6 and BottomExecutionPriceBorderShort=5.

EnableExecutionPriceBorders – if this setting is enabled (set to "true")
then you will be able to set borders within which the order will be opened on the receiver account.
For example you want each Buy order on Receiver account to be opened 5 or 6 pips above the execution price of the order on Source account.
Borders are set with the help of the following parameters and these parameters will not take effect when EnableExecutionPriceBorders is set to "false":

TopExecutionPriceBorderLong

BottomExecutionPriceBorderLong

TopExecutionPriceBorderShort

BottomExecutionPriceBorderShort

DontCloseLosingBuy – If this parameter is set to
"true" then Copier will not process "Close order" commands from the Source account for Buy orders with negative profit value.

DontCloseLosingSell – If this parameter is set to
"true" then Copier will not process "Close order"
commands from the Source account for Sell orders with negative profit value.

SetBreakEvenForNonClosed – If this parameter is set to
"true" then Copier
will move Stop Loss to Break Even for the orders which were not closed due to DontCloseLosingBuy or DontCloseLosingSell rules after the Source account closed original orders.

SkipLotsLessThan – receiver account will not open orders if lot size of order on source account is less than the number in this option.

ShowInfoLabels – if this parameter is "true" then Copier will show the information labels in the left-top corner of the chart.

ShowAdvancedLogs – if this parameter is "true" then Copier will write more information into log files, this parameter is used for debug purposes.

RegKey – Registration key, without this key Copier will work
in Demo Mode.