Universal EA Full Function
Universal Multicurrency Trading System with 12 built-in trading strategies
This Expert Advisor includes all the useful functions that have been used in all the Expert Advisors. It also allows using several (up to 12) currency pairs on a single chart and signals from 12 indicators included in MetaTrader 5 package.
The martingale function allows using the standard martingale mode.
Trailing stop, break even, trading time, auto lot, closing by total profit/loss, and more in our Expert Advisor.
You can also download the MetaTrader 4 version The X for MT4
You can version of the system with additional functionality: The X for MT5
You can also purchase separate functionally independent Expert Advisors included in this Expert Advisor:
- Description of the parameters, functions and signals can be found here: Description of parameters and signals systems THE X
- Autolot (calculation of volume based on the current balance), money management;
- Work by time (limitation of trade time for the Expert Advisor);
- Trailing Stop (standard one with the "Only profitable" algorithm);
- MarketWatch ECN (work on the ECN, NDD accounts);
- Functions of error processing for real accounts;
- Block of closing by total profit and loss with the ability to disable all the Expert Advisors on the account;
- Break even (moving Stop Losses to the zero level);
- Martingale (increasing the following lot after an unprofitable position);
- Work by the indicator signals only (Signal for opening, Signal for closing an opposite order and opening);
- Closing opposite orders when signal changes;
- The "REVERSE" function that reverses the signals of your strategies;
The list of indicators and signals
- Moving Average (MA) (Signal 1)
- Moving Average Convergence / Divergence (MACD) (Signal 2)
- Stochastic Oscillator (signal 3)
- The RSI (Signal 4)
- Commodity Channel Index (CCI) (Signal 5)
- Williams Percent Range (WPR) (signal 6)
- Bollinger Bands (Bollinger Bands) (signal 7)
- Indicator Envelopes (signal 8)
- Alligator (signal 9)
- Moving Average of Oscillator (OsMA) (Signal 10)
- Awesome Oscillator (AO) (Signal 11)
Added output of the signal information to the journal when a trade is opened.
Fixed the multi-currency operation mode of the EA.
Operation by time feature
Attention: Trading by time involves only filtering for opening new deals based on new signals.
All other functions: Trailing stop, Breakeven, Averaging, Scaling up along the trend and other works around the clock.
Attention: All parameters for trading by time can be optimized in the tester.
If TradeStartStopbyTime = false, the EA trades around the clock.
If TradeStartStopbyTime = true, the trading by time is activated:
The trading by time period starts on Monday.
The EA starts working on Monday at OpenHourMonday:OpenMinuteMonday if TradeStartbyTimeMonday=true
For example, OpenHourMonday=3 and OpenMinuteMonday=40, then the EA starts trading on Monday at 40:03 server time
(time of your broker, indicated in the Market Watch).
Next, the EA checks the trading time according to the parameters: OpenHour:OpenMinute - trading start and CloseHour:CloseMinute - trading end time for one day.
For example: OpenHour=5 and OpenMinute=0, as well as CloseHour=18 and CloseMinute=59, then the EA will trade every day from 5:00 to 18:59.
To set a trading period from the starting time, set the ClosePeriod_Minute parameter - period in minutes.
For example, OpenHour=6 and OpenMinute=6 and ClosePeriod_Minute=00, then the EA sets the trading time from 0:00 to 180:6(180+9 minutes = 9 hours).
You can also set multiple time intervals for trading in the SeveralTimeWork parameter. Entry format: HH:MM-HH:MM;
where: Hour to start trading:Minute to start trading - Hour to stop trading: Minute to stop trading.
For example, SeveralTimeWork=3:00-5:00;7:30-8:50;12:00-15:00;
then the EA will trade during 3 time intervals. from 3:00 to 5:00, from 7:30 to 8:50 and from 12:00 to 15:00. The EA will not open order during the remaining time.
You can also close all open deals and pending orders outside the trading time, CloseAllTradesByOutOfTime=true.
The EA will trade during the time specified above, and when the trading time ends, the EA will close all open positions and orders.
TradeStartStopbyTimeFriday - Trading time for Friday.
This EA allows the users to set the trading time for the EA on Friday.
Time parameters for Friday: OpenHourFriday:OpenMinuteFriday - CloseHourFriday:CloseMinuteFriday
For example, the EA should not open new deals on Friday after 18:00, set:
OpenHourFriday=0:OpenMinuteFriday=0 - CloseHourFriday=18:CloseMinuteFriday=0
In this case, the EA will not open new deals after 18:00
It is also possible to close all open deals and pending orders on Friday at the specified time - 18:00, CloseFriday=true.
The block for operation by time allows to set the trading days: TradeByDays
For example, TradeByDays=true Days=1,2,3 - in this case, the EA will trade only on Monday, Tuesday and Wednesday during the time specified above. Or it will trade around the clock those 3 days, if the time is not specified.
If you set Days=1,2,3,4,5 but with TradeStartStopbyTimeFriday=false, the EA will not trade on Friday.
It is also possible to set 1 day for optimization in the DayForOptimization parameter.
This option is useful to determine the most profitable days in optimization.
For example, DayForOptimization = 3, then the EA will trade only on Wednesdays.
You can set the trading to start on Monday and to stop on Friday, while the EA trades around the clock on the remaining days.
You can set the start on Monday and specific hours on other days.
-Added parameter TrailingStopSAR_TimeFrame - Timeframe of the SAR indicator for the trailing stop.
-To the МТ5 version: Added Parabolic SAR based trailing stop
TrailingStopSAR (true - false) step and maximum (parameters of the Parabolic SAR)
These parameters allow the modification of stop loss based on the specified Parabolic
The stop loss will be modified at every new value of the Parabolic SAR.
Accordingly, Buy is modified when the Parabolic SAR is below the price, Sell is modified when the Parabolic is above the price.
Block of signals
-Added parameter Signal_Reverse,Filter1_Reverse,Filter2_Reverse - they allow to inverse signals
based on specific indicators (Main signal, Filter 1 and Filter 2)
-Changed the MinuteToOpenNextPosition parameter (Allow opening the next signal after the last opened position),
if there are no open positions, the EA considers the time since the last closed position.
The time is considered for the same type. If the signal is BUY, the time is calculated from the last opened \ closed BUY....
-Changed the function for receiving signal when using signal inversion.
*If you use WPR as signal source, with the levels:
WPRLowLevel = -80;
Buy is opened, if WPR crosses WPRLowLevel (-80) upwards
SELL is opened, if WPR crosses WPRHighLevel (-20) downwards
*If you enable the option: Signal_Reverse=true
SELL is opened, if WPR crosses WPRLowLevel (-80) upwards
Buy is opened, if WPR crosses WPRHighLevel (-20) downwards
*If you enable the option: Signal_Reverse=true and set the parameters:
WPRLowLevel = -20;
Buy is opened, if WPR crosses WPRHighLevel (-80) downwards
SELL is opened, if WPR crosses WPRLowLevel (-20) upwards
- added parameters for the MACD signal
Which are involved in determining the signal.
for example: MACD_BUYLEVEL=3,MACD_SELLLEVEL=-3
For the long trade, the signal crosses the MACD line and at the end of that candle the MACD is greater than 0 and MACD is less than 3,0 (the signal line and MACD line must be both above the origin and less than 3.0).
For the short trade, the signal crosses the MACD line and at the end of that candle the MACD is less than 0 and MACD is greater than -3,0 (the signal line and MACD line must be both below the origin and greater than 3.0).
-Added automatic checking and normalization for all stops to tick size on the current currency pair.
For example, if the tick size on the WING17 symbol is 5 points, then all stop loss and take profit values will be normalized.
For example, the contract price is 58840 and the automatic stop loss calculation resulted in 1211 points, the final stop loss will be normalized to 1210 points.
Automated calculation of commission and swap has been added to the Trailing Stop and Breakeven functions.
Now trailing stop only triggers after a position covers the commission amount.
Limiting loss and profit per 1 day/week/month
Limiting LimitFor - Limitation type day/week/month
LimitForLosses - Limit by profit
LimitForProfits- Limit by loss
LimitType - Limit by USD, points, percentage of the deposit
ClosebyLIMITING - Close deals of the EA when the limit is exceeded
UseCurrentProfit - Consider the current profit/loss in calculation of limit
This function is capable of disabling the EA operation in case the EA accumulates certain profit/loss in deposit currency per day/week/month The EA will be reactivated the next day/week/month
For example, LimitFor=DAY LimitForProfits=1 Close by total profit = 10 USD
You can also select the limit type (LimitType) for calculations. In the USD, points, percentage of the account balance.
If you need to close and delete all deals using this EA once the limits are exceeded, you can set ClosebyLIMITING = true
The UseCurrentProfit parameter prohibits or allows considering the current floating profit/loss for this EA
Added new signals:
AC - signal principle is the same as in the АО indicator
Ichimoku - operation principle based on intersection of the TENKANSEN and KIJUNSEN lines,
If TENKANSEN is greater than KIJUNSEN - BUY signal
If TENKANSEN is less than KIJUNSEN - BUY signal
Bar - Work in the direction of the bar
If the candle Close is above the candle Open (Bullish candle) - BUY signal
If the candle Close is below the candle Open (Bearish candle) - SELL signal
Added new filters
AC - signal principle is the same as in the АО indicator
Ichimoku - operation principle based on location of the TENKANSEN and KIJUNSEN lines,
Bar - Work in the direction of the bar
Bar relatively MA - The EA signals are filtered based on the values of bar Close and Fast\Slow MA
If the bar Close is above MAfast and MAslow - only BUY signals
If the bar Close is below MAfast and MAslow - only SELL signals
Performed code optimization in order to reduce the CPU load.
Added support of the EA in the Brazilian market.
Added a new variable:
SeveralTimeWork = the EA operation time through listing,
start hour:start minute-end hour:end minute;start hour:start minute-end hour:end minute;
means that the EA will work from 9:00 to 10:00, also from 12:00 to 13:00, and also from 15:00 to 17:30
Fixed error when testing with the AutoTrading button enabled
Fixed working with long tickets
- Added the EAPADPRO information panel
Details on the panel in our blog:
The following data has been moved to the Strategy Info block:
OWN Signal = Name of the signal + Timeframe of the signal + Reverse
Current Signal = Current signal from the main indicator
Filter 1/2 - Name of the filter 1/2
Current Filter - Current signal from filters 1/2
BUY Average/Lot - Next averaging in points for BUY / Next averaging lot
SELL Average/Lot - Next averaging in points for SELL / Next averaging lot
Buy Additional/Lot - Next additional opening in points for BUY / Next lot for additional opening
Sell Additional/Lot - Next additional opening in points for SELL / Next lot for additional opening
Average Price Buy - Average price for BUY deals
Price Sell - Average price for SELL deals
Added Magic number.
Fixed balance calculation error in the unit of profit based closure, for the accounts tradfed in daytrading and equal to 0
New functions have been added to the Profit or Loss section:
TrailOptions - Number of profit "units", after which trailing will be activated;
TrailOptionsStep - Trailing step in "units";
Profit trailing at closure
The new profit trailing function was introduced by demand of our customers. This function enables profit trailing. I.e. instead of closing a fixed profit, the profit is closed with a correction. Once profit reaches the specified value, the EA remembers the current profit position and starts to trail this position following the profit. If you set to close at a profit of $10:
CloseProfit - close with profit.
prifitessss - amount of profit to close.
TrailOptions - distance from prifitessss, reaching which profit trailing will be enabled.
If prifitesss is set to 10, and TrailOptions is set to 5, the profit trailing line is set to $5. After reaching the $10 limit, the EA will activate the profit trailing function and will start to trail the closure label following the profit. Current profit position will be recorder to he journal.
Once the total profit gets down below the last recorded TrailOptions levle, the EA will close all deals.
New parameter OnePosPerDirection: opening 1 trade in one direction
If OnePosPerDirection=true and ONlyOnePosbySignal = false
the EA can open one Buy trade at a signal and one Sell trade at a signal
If OnePosPerDirection=false and ONlyOnePosbySignal = true
the EA can only open one trade at a signal, either Buy or Sell
If OnePosPerDirection=false and ONlyOnePosbySignal = false
The EA can open any trades at each signal of theindicator
New parameter OnlyOnePositionPerMagic: Opening 1 position per one magic.
The EA checks if there are open positions on other currency pairs for this magic. If there are no positions, the EA will open a trade at a signal, and other EAs will wait till the trade is closed.
New parameter CloseChangeOnlyInProfit - closing trades at an opposite signal only when the current position is in profit.
Alert: This EA may not work on hedge account.
Added the SetMinStops variable:
In case of AutoSetMinLevel, stop levels are reduced to the minimum possible levels allowed on the server;
In case of ManualSet, a user receives a message that stop levels in the EA are less than the minimum allowed ones, and the EA stops operation.
Increases the last lot of the open position according to the last trade.
Fixed the time calculation for VPS.
Added Rounding parameter:
Without rounding - place stop orders without rounding
To 1 digit - rounding to 1 digit. For example, if Stoploss= 1.23456, the trade will be opened with a stop loss of 1.23450
To 2 digits - rounding to 2 digits. For example, if Stoploss= 1.23456, the trade will be opened with a stop loss of 1.23400
- Fixed the error in the determination of the last lot, if the position was closed by several requests.
Before: A trade opens only when the two signals match at the same time.
Now: If the IndSigToTrade signal appeared, then the FILTER_IndSigToTrade2 and FILTER_IndSigToTrade3 indicators are checked. If their signals go on, the trade is opened.
I.e. If the IndSigToTrade is selected as the main signal, then the FILTER_IndSigToTrade2 and FILTER_IndSigToTrade3 parameters only trigger as filters.
Added automatic detection of the order filling type.
When using the resolution of trade:
input int OpenHour = 0;
input int OpenMinute = 0;
input int CloseHour = 23;
input int CloseMinute = 59;
When time is up, and has open positions CloseAllTradesByOutOfTime - closes all the positions.
This execution policy means that an order can be executed only in the specified volume. If the market does not have enough volume of the financial symbol at the given moment, the order will not be executed. The desired volume can be made up of several available offers.
Confirmation of performing a trade by maximum volume available in the market within the volume specified in the order. If full order execution is impossible, the order will be executed within available volume, and unexecuted volume will be canceled.
This mode is used for market, limit and stop limit orders and only in Market Execution and Exchange Execution modes. In case of partial execution, a market or limit order with residual volume stays active.
A corresponding limit order with Return execution type is created for activated stop limit orders.
When using initial trailing stop and a set of signals for modifying the stop loss, the initial stop loss is reset and the TrailingStop function starts working instead.
The EA is best suited for working at VPS server.