Account Protector For MetaTrader
Account Protector For MetaTrader
Account Protector
Contents
INTERFACE
USAGE
INPUT PARAMETERS
DOWNLOADS
DISCUSSION
Show more
The Account Protector is a MetaTrader expert advisor that lets you manage trades and control your
profit and loss across multiple currency pairs using a number of parameters and settings. Here are some
examples of the things you can accomplish with the Account Protector:
Delete all EUR/USD pending orders once floating profit on EUR/USD trades reaches $500.
Email you the current account state and disable autotrading once free margin drops below $1,000.
Close all positions and exit MetaTrader once total floating profit on trades with magic number "1000"
reaches 50 points.
Close 50% of the position's volume when profit reaches 100 points.
Close all losing trades when total floating loss falls down to $100.
Search for brokers, tools, books, education, ets EN
Close all trades when the current chart's price reaches a given level.
Disable autotrading when the account margin level falls below a certain level.
Close all other charts based on deviation from equity snapshot captured by another instance of the
Account Protector.
You can close, minimize, and move the panel freely across the chart.
Settings can be adjusted inside the panel with just a few mouse clicks.
You can apply mass breakeven and trailing stop mechanism to secure your profit.
You can choose whether to count swaps and commission when calculating profit/loss.
Two snapshots (free margin and equity) are available for advanced trigger conditions.
You can filter trades by magic numbers, instrument, and order commentaries.
The panel can inform you about its actions via email and mobile push-notifications.
The panel automatically saves and loads its settings on timeframe change or platform restart,
preserving your configuration efforts.
It uses only one standard Windows DLL (to disable autotrading) — the EA can work without DLLs if
you do not need it to disable autotrading.
You can use it in MetaTrader 4 and MetaTrader 5 (both hedging and netting modes).
To turn on the timer, you need to set the checkbox and the time (trading server or local PC time) when
you want expert advisor's actions to be executed (not the time until those actions get triggered). You
can also set the day of the week for the timer to set off.
Trailing stop and breakeven are set similarly — by clicking the checkbox and setting the relevant value
in the input field:
The first trailing input allows you to set the profit level in points when the trailing stop is first
activated. For example, 100 points; when position will reach at least 100 points profit, the trailing
stop will be appliedSearch
using the
forstop distance
brokers, tools,from the education,
books, next input ets
field. EN
The actual trailing stop distance to be used.
The first breakeven input field is the target number of profitable points (or currency units) when the
stop-loss is moved to breakeven.
The input field below lets you enter the number of extra points to add to the breakeven level if you
want to capture some minimum profit with the trade. This value is useless if the main breakeven
value is not set.
The final input field lets you set the equity trailing stop value in account currency. When there is an
active equity stop-loss value, it is displayed under the checkbox and there is also a button to reset
it. You can choose whether to get an alert on equity trailing stop triggering and whether to disable
the trailing mechanism after it had triggered.
Filters tab
This tab lets you restrict which trades are monitored and managed by the Account Protector using
magic numbers, order symbol, and order commentary.
The magic number field lets you input several numeric values and either force the EA to work with the
trades associated with these numbers or exclude such trades from being processed by the EA. Symbol
filtering is organized as a group of radio buttons with explicitly described choices. Order commentary
filtering is based on a textual input field and a choice of whether to look for exact match, comments
containing the text, comments not containing the text, or comments not equal the entered text.
Conditions tab
Search for brokers, tools, books, education, ets EN
In this tab, you can set the conditions to trigger the EA's actions.
The first 12 conditions involve floating profit/loss and they trigger if:
Search for brokers, tools, books, education, ets EN
Floating loss rises to a given percentage of the balance. E.g., paper loss becomes greater or equal to
20% of the balance.
Floating loss falls to a given percentage of the balance. E.g., paper loss becomes less or equal to
20% of the balance.
Floating loss rises to a number of currency units. E.g., paper loss becomes greater or equal to $100.
Floating loss falls to a number of currency units. E.g., paper loss becomes less or equal to $100.
Floating loss rises to a number of points. E.g., paper loss becomes greater or equal to 50 points.
Floating loss falls to a number of points. E.g., paper loss becomes less or equal to 50 points.
Floating profit rises to a given percentage of the balance. E.g., paper profit becomes greater or
equal to 40% of the balance.
Floating profit falls to a given percentage of the balance. E.g., paper profit becomes less or equal to
40% of the balance.
Floating profit rises to a number of currency units. E.g., paper profit becomes greater or equal to
$200.
Floating profit falls to a number of currency units. E.g., paper profit becomes less or equal to $200.
Floating profit rises to a number of points. E.g., paper profit becomes greater or equal to 100 points.
Floating profit falls to a number of points. E.g., paper profit becomes less or equal to 100 points.
Any of these 12 conditions can be disabled and hidden via the EA's input parameters.
The next two conditions compare account equity to a given amount of money:
Equity becomes less or equal to a given number of currency units. E.g., equity falls to or below $800.
Equity becomes greater or equal to a given number of currency units. E.g., equity rises to or above
$1200.
Then, there are four conditions that compare account equity to the previously captured snapshot:
Equity becomes less or equal to a given percentage of snapshot. E.g., equity falls to or below 90% of
the previously captured snapshot.
Equity becomes greater or equal to a given percentage of snapshot. E.g., equity rises to or above
115% of the previously captured snapshot.
Search for brokers, tools, books, education, ets EN
Equity minus snapshot becomes greater or equal to a number of currency units. E.g., equity
becomes $100 higher than the previously captured snapshot.
Snapshot minus equity becomes greater or equal to a number of currency units. E.g., equity
becomes $150 lower than the previously captured snapshot.
Similar conditions exist for free margin. The first two conditions compare it to some amount of money:
Free margin becomes less or equal to a given number of currency units. E.g., free margin falls to or
below $500.
Free margin becomes greater or equal to a given number of currency units. E.g., free margin rises to
or above $750.
Free margin becomes less or equal to a given percentage of snapshot. E.g., free margin falls to or
below 80% of the previously captured snapshot.
Free margin becomes greater or equal to a given percentage of snapshot. E.g., free margin rises to
or above 130% of the previously captured snapshot.
The current price becomes greater or equal to a given value. E.g., the current EUR/USD chart's price
goes to 1.2000 or above.
The current price becomes less or equal to a given value. E.g., the current EUR/USD chart's price
goes to 1.1000 or below.
Then follow two conditions that work with the margin level (that is, account's equity divided by used
margin):
Margin level becomes greater or equal to a given percentage value. E.g., margin level rises to or
above 110%.
Margin level becomes less or equal to a given percentage value. E.g., margin level falls to or below
55%.
Then there are two conditions for the current instrument's spread:
Spread becomes greater or equal to a given number of points. E.g., spread goes up to 100 points.
Search for brokers, tools, books, education, ets EN
Spread becomes less or equal to a given number of points. E.g., spread falls to 10 points.
The final group consists of six conditions that analyze the account's daily profit or loss. You can enter
negative values for loss comparison and positive values for profit comparison. The Account Protector
uses server time to determine the start of the day for these conditions and includes the floating
profit/loss in its calculations:
Daily profit/loss greater or equal to a given number of currency units. E.g., total daily profit goes to
100 USD or above.
Daily profit/loss less or equal to a given number of currency units. E.g., total daily profit falls to -100
USD or below.
Daily profit/loss greater or equal to a given number of points. E.g., total daily profit goes to 250
points or above.
Daily profit/loss less or equal to a given number of points. E.g., total daily profit falls to -300 points or
below.
Daily profit/loss greater or equal to a percentage value of the daily starting account balance. E.g.,
total daily profit goes to 5% or higher.
Daily profit/loss less or equal to a percentage value of the daily starting account balance. E.g., total
daily profit falls to -3% or less.
After a condition is triggered, its checkbox will be unchecked unless DoNotDisableConditions is set to
true.
Actions tab
This tab lets you select the actions that should be executed if your chosen conditions are met.
Close % of positions will close (fully or partially) selected active trades (all, losing, or profitable) in all
trading instruments that are not filtered out (using the Filters tab) and where trading is enabled.
Delete all pending orders will remove all stop, limit, and stop-limit orders in all trading instruments
that are not filtered out (using the Filters tab) and where trading is enabled.
Disable autotrading will turn off the platform's AutoTrading button preventing further operation of all
expert advisors. The Account Protector uses a call to one of user32.dll functions to emulate the
button press. The action will not work if DLLs are disabled.
Send e-mail will notify you using an e-mail if there are correct settings under Tools->Options->Email
menu. One e-mail message will be sent with brief description of what condition has been met and
what actions have been taken.
Send push notifications will inform you using mobile push notifications if there are correct settings
under Tools->Options->Notifications menu. Two notifications will be sent with brief description of
what condition has been met and what actions have been taken.
Close platform will close the MetaTrader platform. This will prevent any further operation of the
attached expert advisors.
Enable autotrading will turn on the platform's AutoTrading button, enabling other expert advisors to
function properly. The Account Protector uses a call to one of user32.dll functions to emulate the
button press. The action will not work if DLLs are disabled.
Close all other charts will close all charts in the platform except for the current chart where the
current instance of Search
the Account Protector
for brokers, is operating.
tools, books, education, ets EN
After some action is taken, its checkbox will be unchecked unless DoNotDisableActions is set to true.
Usage
The aim of the Account Protector (AP) is to help you preserve your account balance. AP works based on
the conditions and actions you set. The actions are applied at the moment when at least one of the
conditions is triggered. The graphic panel helps you operate the expert advisor.
You can ensure proper operation of AP by turning on AutoTrading button in MetaTrader terminal.
Allowing DLL imports enables AP to automatically disable (or enable) autotrading when you configure it
to do so. The expert advisor will alert you if either AutoTrading button or DLL imports are off but will
continue operating in a restricted mode.
The EA will apply trailing stop-loss and breakeven stops if you configure it via the Main tab and enable
autotrading.
If you set Enable emergency button input parameter to Yes, a big red emergency button will appear at
the bottom of the Main tab. You can press it to close all positions, delete all pending orders, and disable
autotrading immediately. The emergency button respects all filters set via the Filters tab.
Status
You can monitor the status of the Account Protector by looking at the panel's top line. It shows the
current status as one of the five possible values:
Autotrading is disabled — the expert advisor will not be able to perform any trading operations until
autotrading is enabled.
No condition is set — you need to set some condition in the Conditions tab for the EA to trigger and
to take some actions.
No action is set — you need to set some action in the Actions tab for AP to do anything when a
condition triggers.
OK — AP is fully operational and will take some actions when at least one of the given conditions is
met.
When some condition is triggered, AP logs the name of that condition, current account information,
and all the panel settings.
When some action is taken, AP logs the name of that action and the detailed list of all the closed
positions and deleted pending orders.
It is possible to see most of the log messages inside the Experts tab of the MT4/MT5 terminal.
When you remove AP from the chart, it again logs all the relevant trading account information and its
own input values.
Each line of the log file is accompanied by a timestamp based on the platform's local time.
Input parameters
Slippage (default = 2) — slippage value given in broker's points to be used when closing positions.
Log file name (default = "log.txt") — if given, the Account Protector will log its settings and events
into that file.
Enable emergency button (default = No) — if Yes, the emergency button will be present on the panel
for quick removal of all trades and disabling of autotrading.
PanelOnTopOfChart (default = true) — if true, the panel will be drawn on foreground, and the chart
will be drawn as background. Setting it to false will uncover the chart behind the panel.
DoNotDisableConditions (default = false) — if true, the triggered condition's checkbox will not get
unchecked on the Conditions tab.
DoNotDisableActions (default = false) — if true, the triggered action's checkbox will not get
unchecked on the Actions tab. It is not recommended to set this parameter to true unless you are
completely certain in what you are doing.
DoNotDisableEquityTS (default = false) — if true, the equity trailing stop will remain active after
triggering and new trades will continue get their stop trailed by the Account Protector.
Search for brokers, tools, books, education, ets EN
DoNotDisableTimer (default = false) — if true, the timer will continue running after it triggers and will
trigger again at the same time next day (or week).
AlertOnEquityTS (default = false) — if true, a pop-up alert will be displayed when the hidden equity
trailing stop is triggered.
DisableFloatLossRisePerc (default = false) — if true, the "Floating loss rises to %" condition is
disabled.
DisableFloatLossFallPerc (default = true) — if true, the "Floating loss falls to %" condition is disabled.
DisableFloatLossRiseCurr (default = false) — if true, the "Floating loss rises to currency units"
condition is disabled.
DisableFloatLossFallCurr (default = true) — if true, the "Floating loss falls to currency units" condition
is disabled.
DisableFloatLossRisePoints (default = false) — if true, the "Floating loss rises to points" condition is
disabled.
DisableFloatLossFallPoints (default = true) — if true, the "Floating loss falls to points" condition is
disabled.
DisableFloatProfitRisePerc (default = false) — if true, the "Floating profit rises to %" condition is
disabled.
DisableFloatProfitFallPerc (default = true) — if true, the "Floating profit falls to %" condition is
disabled.
DisableFloatProfitRiseCurr (default = false) — if true, the "Floating profit rises to currency units"
condition is disabled.
DisableFloatProfitFallCurr (default = true) — if true, the "Floating profit falls to currency units"
condition is disabled.
DisableFloatProfitRisePoints (default = false) — if true, the "Floating profit rises to points" condition is
disabled.
DisableFloatProfitFallPoints (default = true) — if true, the "Floating profit falls to points" condition is
disabled.
DisableCurrentPriceGE (default = true) — if true, the "Current price greater or equal" condition is
disabled.
DisableCurrentPriceLE (default = true) — if true, the "Current price less or equal" condition is
disabled.
DisableMarginLevelGE (default = true) — if true, the "Margin level greater or equal" condition is
disabled.
DisableMarginLevelLE (default = true) — if true, the "Margin level less or equal" condition is disabled.
DisableSpreadGE (default = true) — if true, the "Spread greater or equal" condition is disabled.
DisableSpreadLE (default = true) — if true, the "Spread less or equal" condition is disabled.
DisableDailyProfitLossUnitsGE (default = true) — if true, the "Daily profit/loss greater or equal units"
condition is disabled.
DisableDailyProfitLossUnitsLE (default = true) — if true, the "Daily profit/loss level less or equal units"
condition is disabled.
DisableDailyProfitLossPointsLE (default = true) — if true, the "Daily profit/loss level less or equal
points" condition is disabled.
DisableDailyProfitLossPercGE (default = true) — if true, the "Daily profit/loss greater or equal %"
condition is disabled.
DisableDailyProfitLossPercLE (default = true) — if true, the "Daily profit/loss level less or equal %"
condition is disabled.
DelayOrderClose (default = 0) — a delay in milliseconds between closing orders. This parameter can
help with not spamming your broker's trading server with orders.
UseTotalVolume (default = false) — if true, the Account Protector will consider the total volume it has
already closed when partial closure is set up. This is particularly useful when trading with multiple
low-volume positions.
AdditionalFunds (default = 0) — additional funds will be added to account balance, equity, and free
margin. This can be useful if you want the Account Protector to act as if you have more (or less)
money in your account than there really is.
Instruments (default = "") — the default list of trading instruments to use with the trade filter.
CloseMostDistantFirst (default = false) — if true, the Account Protector will sort and close trades
Search for brokers, tools, books, education, ets EN
starting from the most distant (from its open price) ones. This will work irrespective of which
condition is triggered.
BreakEvenProfitInCurrencyUnits (default = false) — if true, the breakeven distance on the Main tab is
set in currency units rather than points.
GlobalSnapshots (default = false) — if true, all the Account Protector instances in the platform will
share their equity and margin snapshots between each other. The latest snapshot update will get
propagated to all the AP instances that have this input parameter set to true.
To install — unzip and copy the entire Account Protector folder to MQL4/Experts/ or MQL5/Experts/ (if
you are on MetaTrader 5) of your terminal's data folder. When compiling the Account Protector in
MetaEditor, make sure you are compiling either AccountProtector.mq4 or AccountProtector.mq5 and
NOT AccountProtector.mqh.
Discussion
Do you have any suggestions or questions regarding this expert
advisor?
Discuss the Account Protector with other traders and MQL coders on the forum.
Added an input parameter (GlobalSnapshots) to let two or more Account Protector instances running
in the same platform share their equity and margin snapshots with each other.
Added an input parameter (DoNotDisableTimer) to enable a persistent timer with recurring action
triggering.
Added the Close all other charts action to enable smart disabling of all other expert advisors.
Fixed a potential division by zero error when a daily profit/loss condition is enabled.
Fixed erroneous triggering of the margin level condition when there are no open trades.
Fixed a bug (MT4 only) when the panel didn't properly remember its selected tab.
Clarified the daily profit/loss percentage condition levels by adding that they are based on the
account balance.
1.08 — 2022-06-15
Added an input parameter (DoNotDisableEquityTS) to not disable equity trailing stop upon
triggering.
Added an input parameter (AlertOnEquityTS) for an optional alert upon equity trailing stop
triggering.
Added an input parameter (CloseMostDistantFirst) to specify for the expert advisor to close trades
starting from the most distant one (open price minus current price as distance).
Fixed a critical bug that prevented position closing when log file was set to empty.
Search for brokers, tools, books, education, ets EN
Fixed a bug that prevented log file from working properly even when there was no error opening it.
1.07 — 2022-02-16
Fixed equity trailing stop to actually close trades when a trailing stop is hit.
1.06 — 2022-02-08
Added a condition based on the current trading instrument's spread.
Fixed a bug that prevented the Emergency Button from closing positions.
Fixed a bug that caused the AP to apply the "Breakeven extra profit value (points)" even when the
respective checkbox was unchecked.
Converted pips to points throughout the expert advisor's interface for clarity.
1.05 — 2021-08-04
Added "Equity − snapshot" and "Snapshot − equity" conditions.
Added an option (UseTotalVolume input parameter) to use total volume for close percentage
calculation when closing multiple small orders (e.g., 0.01 lot).
Changed the Close percentage field in the Actions tab to accept non-integer values.
Removed the alert about DLL Imports being disabled. A status line warning should be enough.
Fixed the removal of a leftover panel when re-attaching the Account Protector after a critical error.
Fixed handling of closed markets in MT5. Now, if a trade should be closed (based on a triggered
condition and an action) while its market hours are off, the Account Protector will close it when the
market re-opens without flooding the log with error messages.
1.04 — 2020-04-17
Added "Enable autotrading" action.
Added reverse conditions for loss and profit reaching certain values. This can be used to trigger
actions on loss and profit decreasing instead of increasing.
Added input parameters to reduce the number of conditions displayed in the tab.
1.03 — 2019-09-30
Added partial close percentage to Actions tab.
Added support for 8 decimal places in position sizes (MT5 version of the EA only).
Changed how panel fields behave — inputs can be changed even when the respective checkbox is
off; no special EMPTY value to simplify things.
Search for brokers, tools, books, education, ets EN
1.02 — 2019-02-12
Fixed a bug when Account Protector failed to close positions in MT5 with Immediate or Cancel order
filling type.
1.01 — 2017-11-20
Added hidden equity trailing stop.
Fixed duplicate chart objects appearing when saving and loading a chart template with Account
Protector.
Forex — the foreign exchange (currency or FOREX, or FX) market is the biggest and the most liquid financial
market in the world. It boasts a daily volume of more than $6.6 trillion. Trading in this market involves buying and
selling world currencies, taking profit from the exchange rates difference. FX trading can yield high profits but is
also a very risky endeavor.
COMMUNITY ABOUT
Forex trading bears intrinsic risks of loss. You must understand that Forex trading, while potentially profitable,
can make you lose your money. Never trade with the money that you cannot afford to lose! Trading with
leverage can wipe your account even faster. CFDs are leveraged products and as such loses may be more than
the initial invested capital. Trading in CFDs carry a high level of risk thus may not be appropriate for all investors.
Search for brokers, tools, books, education, ets EN
Developed by
Developed by