Added: When using BBandsEntry and BBUseCandles is set to true it is possible to select an entry condition when the previous candle(s) (selectable with BBCandles) close outside the bands, and the last candle closes inside the bands. 'The bands' includes the extra distance set in BBDistance.

Changed: A minor change in the Holiday routine logic to make back testing faster.

Fixed: A bug where the BE and TP lines were not displayed correctly when a hedge trade was open.

Changed: No trades will be allowed to open or close when Evolution is first run (e.g. after parameter changes).

Changed: The trigger for closing basket trades is now solely based on the TP point.

Changed: All parameters for TimeFrame have been changed to use digits from 0 to 9, so they can be used in the optimization process. Values are: 0:Chart; 1:M1; 2:M5; 3:M15; 4:M30; 5:H1; 6:H4; 7:D1; 8:W1; 9:MN1 (bear in mind that if you load an old set file, the time frame value may be overwritten, but you must still set it between 0 and 9). If timeframes are set incorrectly for any function, Evolution will stop trading with an error message.

Added: When the next grid level entry delay has passed, the next entry point will be shown by a Red Dash-Dot-Dot line.

Fixed: A bug in the SmartScalp and WaveScalp profit allocation if xProfitAlloc is set to 1.

Fixed: A bug in the PCEntry Indicator which would not update the indicator when forward testing.

Added: AllowTrades parameter if set to false will allow Evolution to run all functions, but will not allow trades to open or close - this will allow you to check the overlay before allowing trading. If AllowTrades is false, the Dashboard symbol will display in red.

Added: If your account balance is held in a currency other than USD there is a conversion displayed on screen to inform you of the equivalent USD value being used to calculate the initial lot size.

Fixed: A bug in the Statistics Equity calculation, which added the DD to the balance instead of deducting it.

Fixed: A bug where the POSL could cause a zero divide error if the basket closed before the POSL routine could run.

Changed: The FileSave function will not be called while running backtests, which should increase the speed while testing.

Changed: Setting dShowTrades to true will display the open trades on screen, independently from the Debug Feature, and properly formatted.

Fixed: A bug in the Holiday dates function which could cause the EA to get stuck showing the 'Waiting for next tick' message.

Added: Basket Stop Loss - will close all basket trades at a loss when the price moves SLPips from BE.

Added: Profit Trailing Stop Loss - if TSLPips is a positive number, a stop loss will trail the price once the basket is TSLPips in profit.

Added: Profit Trailing Reducing Stop Loss - if TSLPips is a negative value, a stop loss will trail the price once the basket is TSLPips in profit, but the trailing stop will reduce by 1 pip for each 2 pips additional profit. The trailing stop will not reduce past the value set in TSLPipsMin.

Fixed: A bug where closing a Grid Scalp trade with Contra Trades active could cause a zero divide error.

Fixed: A bug where the Hedge Start % would not update properly when changed in the parameters.

Changed: All Global Variables will now be deleted when Evolution is removed from a chart.

Added: The overlay display will now show the approximate Portion Balance at which lot size increases can be expected.

Added: When EV is first run after a parameter change, the Trade Comment label on the overlay will display a debug of which function is currently being processed, so any hang ups when 'Waiting for next tick...' can be pin pointed.

Changed: MM will now base the initial lot size on the value of Level. Previously if MaxTrades was smaller than Level the initial lot size would be based on MaxTrades, giving an initial lot much higher than normal. This will allow the user to increase MaxTrades after the basket has opened without risking opening very high basket lot sizes.

Added: The DashBoard timer can now be disabled by changing the chart time frame to the period set in DisablePeriod.

Fixed: A bug where entering 0-24 for every days trading would cause the Trade Hours function to get stuck in a loop.

Changed: The MaxOpenLots variable will now actually restrict the number of lots allowed to be open at once, instead of just ensuring that the basket starting lot is small enough to open the number of trades set in Level.

Changed: If other EAs/Indicators remove the labels from the Dashboard they will be automatically recreated, which avoids the problem of ECA and SD calls in each of the charts.

Removed: The toggling of the timer on/off on the dashboard has been removed - the timer can now only be turned off by changing the chart TF to the period set in DisablePeriod.

Fixed: A bug where the LotMultiplier would not be calculated correctly in some cases due to MT4 precision.

Added: The user will get a warning message if Evolution is forward tested on a live or demo account without loading a set file.

Added: The user will get a warning message if NanoAccount is set to true, but the account is not a Nano account.

Changed: The AutoLot calculation will be properly displayed on the screen when SmartGrid and HAMA are not in use.

Added: The Account Balance will now include any value added by the broker as Account Credit.

Added: If any module in Evolution (eg. UseHedge) is not allowed to function because of another setting (eg. AllowHedgeTrades = false) a warning will be printed in the Experts or Journal window.

Build 1.3.34

Evolution v1.4

Build 1.4.35

Added: ConfirmButtons, if set to true, will promp you to confirm your action whenever you use one of the on-screen buttons. If set to false then the button will be actioned with no confirmation.

Added: dButtonFontSize will allow you to change the font size of the text of the on-screen buttons

Removed: The UseStopLoss setting has been removed to reduce confusion as it related to both the Stop Loss and Trailing Stop functions. Both functions can now be individually turned off by setting SLPips and TSLPips to 0.

Any set files loaded from a previous version will have values in the default settings for both of these parameters. If you do not intend to use a Stop Loss and/or a Trailing Stop then you must set SLPips and/or TSLPips to 0.

No official release.

Build 1.4.36

Added: An option to allow any Contra Trade to close automatically if the corresponding grid level is closed by GridScalp. Will be active if cCloseWithGS is set to true.

Added: An option to select where the Trailing Stop will start if TSLPips is used. Select one of the following options for TSLStartAt:

0 (BE) to start trailing when the PA reaches Break Even (BE). This setting may cause the basket to close at a loss because the trailing stop will start TSLPips below the BE point.

1 (BE+) to start trailing when the trailing stop is at BreakEven. This method will start trailing when the PA is TSLPips above the BE point, and will normally ensure that the basket closes at a profit.

2 (TP) to start trailing when the PA reaches the Take Profit (TP) point. This method will normally produce a profit, as long as TSLPips is smaller than the expected TP.

3 (TP+) to start trailing when the trailing stop is at the TP point. This method will start trailing when the PA is TSLPips above the TP point.

Note that any mentions of 'Above' and 'Below' relate to Buy trades, and the reverse should be read for Sell trades.

Changed: All Trailing Stop settings will allow the PA to go beyond the set TP point without automatically closing the basket.

Changed: If you have MaximizeProfit set to true and the value of TSLPips is not 0, then the MaximizeProfit Stop Loss will be ignored and a trailing stop will be used instead, which will start at TSLPips below the MaximizeProfit trigger point. This trailing stop will act in exactly the same manner as the normal trailing stop.

Build 1.4.37

Changed: The default setting for StatsInitialise is now False to allow continuous stats collection when forward testing. It will be automatically changed to True when backtesting.

Added: AutoLotStart will allow you to set at which basket trade you would like the AutoLot function to start.

Added: AutoGMTOffset, if set to true, will automatically calculate the GMT offset for your broker, and adjust the trading times as required. Note that all trading times must be entered as GMT times. If set to false, then you can set the BrokerTimeOffset manually, and the trading times can be entered for any time zone you like, with the BrokerTimeOffset being set to the time difference between the broker's time zone and your trading times time zone.

Changed: Positioning of the Scalp Gravy and Closed P/L labels on the chart overlay.

Changed: Debug info on the chart overlay improved.

No official release.

Build 1.4.38

Fixed: Zero Divide error which may occur if trades are opened or closed manually.

Added: AutoLotIgnoreWarning, if set to true, will bypass the AutoLot warning message when the EA is started.

Changed: If the trade stop time is entered as 24 it will now show as 00:00 on the following day rather than 23:59.

Fixed: A bug where trade sessions for the following day could be missed if they started less than 24 hours after the current broker time.

Added: If DisplayBrokerTimes is set to true then all display and debug start and stop times will be shown at the broker's time zone. If left at the default of false the times will be displayed as the users input times, as they were previously.

No official release.

Build 1.4.39

Fixed: A bug in the Manual BUY and SELL buttons which would not place a trade against the basket if UseHedge was set to false.

Added: If MaximizeProfit is off, but TSLPips is greater than 0 the overlay will now display that the Trailing Stop is on, with the number of pips. If both functions are off then that will be reflected in the overlay display.

Fixed: A zero divide error caused when a manual trade was placed against the direction of the basket and UseHedge was set to false.

Fixed: A bug where the Start and Stop trading times may not display correctly if the Broker's clock is incorrect.

Added: The Debug information on the overlay will also show the actual EA Build number, and not the value in the UserComment which may be overwritten when loading an older set file.

Released 11th June, 2012.

Build 1.4.40

Fixed: A bug where the TP calculation would loop when BreakEvenTrade was reached.

Released 11th June, 2012

Build 1.4.041

Fixed: A bug where the profit/loss on closed hedge trades would be lost when restarting the EA if UseHedge was set to false.

Changed: If a Trailing Stop is active and the value of TSLPips is set to 0 then the TS will be removed.

Fixed: A bug in the SmartScalp function which would not reset the Trailing Stop value after closing a trade.

Fixed: A bug in the WaveScalp function which would not reset any variables after closing a trade.

Fixed: A bug where EV did not stop trading during the Holiday period.

Fixed: A bug where turning off the SD button during a holiday period would cause the wrong overlay to display.

Fixed: A bug where the EA would not start trading the following day when the DailyTarget had been reached.

Fixed: A bug where the hedge trades would not display on the overlay if the hedge was started manually and UseHedge was false.

Fixed: A bug where the reason for closing a trade when the MaximizeProfit function hit the stop loss was given as 'No Reason Given'.

Fixed: A bug where SmartScalp would close a trade when sHAMA reversed no matter whether sHAMACloseOnReverse was set to true or false.

Fixed: A bug where the closing of a basket of trades would not be stopped if the spread or slippage maximums were exceeded.

Added: The Debug overlay will now show the Functions file build number.

Changed: The check for whether the broker allows trading has been moved from the init() routine to the start() routine.

Added: F, M and P buttons which will open the Forum, Manual or Parameter pages in your default browser.

Released 19th July, 2012.

Build 1.4.042

Fixed: A bug where the Stop Loss and Trailing Stop functions could close trades even if AllowTrades was set to false.

Fixed: A bug where an incorrect start trading time was calculated if NFP trading hours was left blank.

Fixed: A bug where the Closed Profit reported the cumulative figure instead of the profit for the current basket.

Changed: The trade close routine to reduce the number of rejected executions because of slippage.

Added: Code to prevent URL Links to display on SkyDesks and IamFX versions.

Released 17th August, 2012

Build 1.4.043

Changed: Enhanced the number of reasons for the non-trading message.

Fixed: A bug where the SmartScalp and WaveScalp functions could open trades on the first tick.

Added: Timeframe settings for the HAMA basket entry filter.

Changed: Refined NFP Friday calculation to take account of New Year's Day delay and Independence Day Holiday early release.

Fixed: A bug where running an optimisation on an account which has the JTA_Dashboard running would cause the DashBoard to malfunction.

Fixed: A bug where a basket of trades could close incorrectly during the first tick when the Trailing Stop is in use.

Fixed: A bug where the Dashboard colours for the total Buy and Sell trades did not display in the correct colours once BreakEven/Max trades has been reached.

Changed: The Trailing Stop as used by the MaximizeProfit function has been changed so that it will work in the same manner as the normal trailing stop, except that the TSLStartAt options 2 and 3 are based on the ProfitSet point rather than the TP point. The TS will now start at BE/BE+ if TSLStartAt is set to 0 or 1. If you only want the TS to start at the ProfitSet point, as it did previously, then you should set TSLStartAt to 2, which will start the TS at ProfitSet +/- TSLPips. If you set TSLStartAt to 3 then the trailing stop will start when the PA is TSLPips above / below the ProfitSet point.

Changed: If SaveStats is set to true, the stats file name will now be UserComment.csv and not based on the EA name etc., which will allow you to choose your own stats file name.

Changed: Demo Test versions no longer check that the EA is being run on a demo account, as this produces false information when being run offline.

Fixed: A bug where the EA would ShutDown if there were no basket trades, but a SmartScalp or WaveScalp trade was open.

Added: EA name and version number to Overlay.

Released 9th December, 2012

Build 1.4.044

Fixed: A bug where adding manual pending trades could trigger GridScalp to close them because it thought that the profit target had been reached.

Build 1.5.058

Evolution v1.6

Build 1.6.050

Added: If UseGridLot is set to true then it will allow you to 'skip' certain levels in the basket but still place the lot size of the trade according to the grid position. It will only come into effect when the normal grid level is delayed by either SmartGrid or HAMA, and will be overridden by AutoLot if triggered.

Changed: The AutoCal function has been changed so that you can define the ATR multiplier for each block of grid levels instead of having values fixed by the EA. The new Grid and TakeProfit multiplier values are set in the GridSetArray and TP_SetArray in the same manner as the usual grid settings - to reproduce the same default settings you need to set: GridSetArray = 1,2,4,8,12 (Note that the original AutoCal had a maximum of 5 grid level blocks, but you can now set as many or as few as you like). TP_SetArray = 2,4,8,12,18

Added: The Debug overlay display will show the next AutoUpdate time.

Internal beta release 7th November, 2013. (Released as 1.5.050)

Build 1.6.051

Changed: Hard coded the HAMA indicator and improved the SmartGrid/HAMA code to increase back testing speed.

Internal beta release 12th November 2013. (Released as 1.5.051)

Build 1.6.052

Added: BackTestSpread parameter to allow optimization of the spread while backtesting.

Added: A HAMA indicator to complement the SmartGrid indicator when waiting for new grid trades to open.

Internal beta release 28th November, 2013. (Released as 1.5.052)

Build 1.6.053

Fixed: A bug in the HAMA indicator when using a HAMATF of 0 (i.e. the same period as the chart).

Changed: Streamlined the code for faster back testing.

Fixed: A bug in the StopTrade percent function.

Internal beta release 2nd December, 2013. (Released as 1.5.053)

Build 1.6.054

Fixed: A bug in the GridLot function where the lot sizes were not always increased at the next level.

Changed: The logic when using AutoCal with GridLot to ensure that the correct grid sizes are used.

Fixed: A bug where the opening of a Contra Trade was based on the number of open trades in the basket and did not take CloseOldest trades into account.

Added: ForceCloseOldest will force a close of the oldest trade even if it can contribute to the basket's profit.

Fixed: A bug in the HAMA function if the HAMA timeframe was smaller than the chart time frame.

Changed: The formula for calculating the HAMA bar placement on the overlay because MT4 would occasionally not display them.

Build 1.6.059

Added: PortionChange to determine whether the Portion Balance is allowed to change when the Account Balance changes.

Released 6th April, 2014.

Build 1.6.060

Fixed: A bug which did not take Close Oldest trades into account when retrieving the first trade lot size after restarting the EA.

Changed: The Debug display of the Account Leverage will be updated every tick to cater for accounts with a variable leverage.

Not Yet Released.

Evolution v2.0

Build 2.0.047

Fixed: A bug where the Gravy Profit was not taken into account when the basket closes at a loss, resulting in the EA shutting down because of the Stop Trade Percent.

Added: When gravy profit has been earned the Experts log will now show how it has been used when the basket closes: either banked or offset against the basket losses.

Changed: The installer file will now require you to close the MT4 application before installation of the files to ensure that any upgrades to dll files can be installed.

Changed: All buttons now use the official FX1 copy of mt4gui.dll instead of the previous beta release. The two dlls are not compatible because of changes to the function names, so if you are running different EAs on one account then you will need to upgrade them all.

Fixed: A bug where the Order Open function showed the previously selected order's ticket number in the log file instead of the new ticket number.

Added: The ability to base MM on the Portion Equity instead of the Portion Balance if BaseMMOnEquity is set to true.

Added: LotLevels and LotSizes allows you to define different lot size progressions for every level of the grid and replaces the Multiplier setting.

Added: MTFES - the Multi-Time-Frame-Entry-System allows you to set as many entry conditions for each of the entry methods as you like, using whatever time frames you like. Enter the different time frames and corresponding settings as values separated by a comma.

Added: PendingGridSize allows you to set a grid size for the pending orders completely independently of the usual grid size setting, if the value entered is greater than 0 and FirstTrade is set to P.

Added: PendingTrailPA if set to true will allow the first pending trades of a basket to move with the PA, meaning that a smaller retrace is required to trigger the trade.

Added: PendingToMarket if set to true will change all pending orders into minstant market orders if the order open price is too close to the actual price, ie. it is within the broker's Stop Level.

Added: FlexGrid can now have the ATR timeframe set independently with FlexATRTF.

Added: The Trend based on MA settings are now completely separate from the MAEntry parameters.

Added: The basket reducing trailing stop feature has a parameter called TSLMaxMinDist to determine over what distance the trailing stop should be reduced.

Added: The hedge function can now have a fixed SL instead of it trailing the price if hFixedSL is set to true.

Added: GridScalp now has a trailing stop feature.

Added: A news filter which can be used to restrict trading if UseNewsFilter is set to true, and/or to display news details on the chart as Lines, Text or Details.

Added: All error messages which stop the EA from running now have a button which will take you to the error's description and solution on the Error Messages page of the Wiki.

Added: New basket trade restriction based on Max Open Charts and Max DD.

Added: All trailing stops can now be set to start at a set percentage of the TP - BE distance by setting the TSLStartAt parameter to a value between 4 and 100.

Changed: The Lot per $ balance calculation can now be forced to a specific value by entering the amount as a negative value in the Aggression parameter - so a value of -5,000 will result in a lot size of 0.01 lots per $5,000.

Added: AllowBasketTrades allows you to decide whether further basket trades are allowed to open outside of normal trading times.

Added: STLeavingZone if set to true will only allow the Stoch entry method to permit trades when the main Stoch line is leaving the OverBought/OverSold zone.

Internal Beta release 2nd August, 2013. (Released as 1.5.047)

Build 2.0.048

Changed: The MaxSpreadOpen and MaxSpreadClose have been replaced with MaxSpreadIncOpen and MaxSpreadIncClose, and it will restrict trading if the Spread is greater than the Spread Average plus the value entered in the parameter, unless the parameter is set to 0 when the feature will be turned off. The Spread Average is recalculated every tick, but can be restricted to the most recent number of ticks entered in AvgSpreadTicks.

Changed: The Maximum Spread restriction will only affect trades using the Ask price (Open a Buy trade or close a Sell trade) because trade executions using the Bid price are not affected by the spread.