Multi pair grid overlap Forex Robot
Platform : MT4 (soon will be also available in MT5 multipair tester optimisation for clients)
Minimal Start Balance: a) 30 000 USCents at Cent Account at Roboforex Broker ; b) $10 000 at ECN account Type any Broker
Minimal leverage: 1:500 and higher
Average Monthly Profit : from 25% up to 100%
MaxDrawdown: up to 30% in Grid Strategy and up to 10% in Scalping Mode
Automated & Semi-Automated Modes for more profit
Parameters of EA MPGO
PairsForTrading=EURGBP;EURAUD;EURNZD;EURUSD;EURCAD …. etc up to 28 FX pairs and XAUUSD (do noy work at GOLD or DAX ! Only PAIRS XXX/YYY)
Robot can work from 1 chart at all pairs ! [1-28] but its not nessesary to use all 28. You may enter from 1 up to 28 pairs and each pair will share the same EA settings. Please input all required pairs and separate them using symbol [ ; ] as above, and at the end of last pair do not input anything. Add also Suffix for your pairs if broker have them: EURUSDx;GBPUSDx; or EURUSD.m;GBPUSD.m;…If you wish to trade any pairs with separate EA settings then open a separate chart and enter alternative settings as required.(*Note – For XAUUSD – latest version support trading at XAUUSD from 1 chart with all pairs with same pips parameters. In strategy Tester of MT4 please use Only 1 Pair in this parameter and use 1 pair Indicator type of entry! MT4 tester cannot open orders in Tester more then at 1 pair !!! MT4 tester cannot analyse Mutipair indicators!!! Dont try to run multipair IndexAll entry or robots in tester of MT4 – you will have ZeroDivide Error! Multi-pair Tester Metaquotes coded only in MT5). In version v3.1.4.0 to use signal Index_all need to entry all 28 pairs in PairsForTrading parameter (indicator use all 28 pairs to build 8 indexes and signals) there you can copy 28 pairs if need : EURGBP ; EURAUD ; EURNZD ; EURUSD ; EURCAD ; EURCHF ; EURJPY ; GBPAUD ; GBPNZD ; GBPUSD ; GBPCAD ; GBPCHF ; GBPJPY ; AUDNZD ; AUDUSD ; AUDCAD ; AUDCHF ; AUDJPY ; NZDUSD ; NZDCAD ; NZDCHF ; NZDJPY ; USDCAD ; USDCHF ; USDJPY ; CADCHF ; CHFJPY ; CADJPY
LoadHistoricalData = True // EA will update your all MarketWatch tick data and all TimeFrames once per 1 hour automatically for indicators correct work. Also EA will do same first time when you attach it on chart (patience – it can take up to 5 minutes and will not open any trades until not finish it process )
TimeStartEnd = True // Use Trading Time Filter – Yes/No
HourStart = 0; // Time for EA start work if all orders are Closed
HourEnd = 20 // Time for EA start work if all orders are Closed
HourEnd = 20 // Time of Trading for EA based at MaxEquityProfit! If you entry HourStart=8 and HourEnd=20 (by your broker server time) it means EA will trade between this time and try to reach MaxEquityProfit MANY TIMES ! If after HourEnd=20 robot see that at account Equity StartDepo(Depo0) – robot will Close all orders at account to fix even Little Profit Today and Depo0 EA will rewrite to Current balance! If You dont like to use new Daily Time of trading! Make like this: HourStart=0 and HourEnd=25 (its impossible parameters).
VisualButton = true // show control panel buttons or not. This software is designed not only for Automated trading type but also to perform in semi-automated mode for bigger profit (user control and help EA from time to time, i.e. close current profits reached, add trend orders in hedge of global direction, additional pending orders for News trading across the price, change temporary Equity Targets to start OverLap function … etc) . TurnOff this parametr in Tester and Optimisation – Ea will work faster, also TurnOff if you work in Total Automated mode
NoNewTrade = false // if true – after EA reach Target Equity and close all orders att Account (including your manual and other EAs orders) EA will not open any new order in any direction . But if Before EA reaching target – it can open new orders in serials that already exist to try reach target equity and will not open any new Serials (or Start orders of new Serial). This parameter for thous who need only daily target+ EA Stop and no new Serials or orders today. To make EA working one more cycle and reach new TargetEquity just make NoNewTrade = false (EA Start to trade) and after EA just opened orders – you can make again NoNewTrade = true if you like EA Stopped after its reached Target Equity (at same time you can control EquityTarget % from EA buttons if you like). If activate this parameter in True – so EA not entry at NEW PAIRS even if signal coming, its only continue work at existed pairs that have already orders to finish current serial till TargetEquity, or EA will use LastTp at every order if all orders goes profit…
TradeBuy = true // if false – ea will not open any Buy order
PairsOnlyTradeBuy = EURUSD ; GBPUSD; NZDUSD // enter there pairs that you would like to trade only Buy (enter also this pairs in 1st parameter called PairsForTrading!!! All Signals Must be OFF to use this option of separame SELL and BUY direction in 1 Set at all pairs!!! )
TradeSell = true // if false – ea will not open any sell order
PairsOnlyTradeSell = EURJPY ; GBPJPY; CADJPY //enter there pairs that you would like to trade only Sell (enter also this pairs in 1st parameter called PairsForTrading!!! All Signals Must be OFF to use this option of separame SELL and BUY direction in 1 Set at all pairs!!! )
NewSerialBuy = true // if false – EA will not open new buy Grid serial trades. It will finish any/all existing buy serial trades
NewSerialSell = true // if false – EA will not open new sell Grid serial trades. It will finish any/all existing sell serial trades
NewLevelBuy = true // if false – no new level grid order in buy serials (level = Next Grid order in Grid serial)
NewLevelSell = true // if false – no new level grid order in sell serials
RISK & LOT SIZE ————
StartLot = 0.0 // Use in Default 0 . EA dedicate Minimal Start lot of any broker automatically
ReverseStartLot = false // multiplier for only first (start) level of the grid based at Hedge % from opposite serial. It can effect also next grid levels after reversed order in his serial, all lot multiplier will use this order lots to calculate next levels in same direction. Example: EA have 0.1+ 0.1+ 0.1+ 0.2+ 0.3+ 0.4 (sum total 1.2 lot) already opened in Sell direction and will try to open reverse start order in buy using the settings of CoefReverseStartLot below; (he have no buy orders yet) with CoefReveseStartLot = 0.3 (means 30% from 1.2 of sell sum lots) 0.3*1.2= 0.3 lots will be start lot of buy serial. After this ea will continue buy serial like this 0.3 0.3 0.3 0.5 0.7…means it will effect at next orders – they will be bigger than opposite sell serial levels (comparing with FirstLotExp below parameter – that change only 1 start order and all serial think that nothing happened)
CoefReverseStratLot = 0.3 // portion of reverse start lot. if sum sell lots = 1.5 lots ea will try to open 0.3=30% (1.5*0.3=0.5 lots) start order of buy grid serial
FirstLotExp = 1.0 // [1.0-3.0] multiplier only for 1st level of grid that not effect next levels. If FirstLotExp=2 then EA will use multiplier only for 1st level of grid 0.2 0.1 0.1…and will not effect next grid levels. if =1 then ea will open 0.1 0.1 0.1…as usual
Risk = 0.01 // Use 1 time parameter to trade same Risk at all pairs in one Set. To use separate Risks at different pairs in one set entry separate Risks using comma 0.01;0.02;0.01;0.05 …. The number and order of risks should correspond to the number of pairs that you entered in the PairsForTrading parameter
MaxLotRisk = 20.0 // this is max lot for your start deposit in 10 000 that robot can open based at Risk. If your balance grows to 20 000 the EA will understand that 20 max lot was for 10 000 and will automatically adjust this setting for 20 000 will hold MaxLotRisk=40 (as double from MaxLotRisk=20 because start deposit doubled also from 10 000 to 20 000). No need to change it manually from 20 to 40. More balance – m?re MaxLotRisk ea will use based at proportion of 10 000 balance. this is why its called MaxLotRisk – based at risk calculation from current balance in proportion for 10 000 Balance.
MaxTrades = 15 // [1-30] how many levels of grid the EA can open in 1 direction at 1 pair. If = 15 it means the EA can open up to 15 sell and 15 buy grid levels per pair (total 30 per 1 pair, no more)
GRID ———
TypeOfOrders = 0 // [0 1 2] 0 – all market orders, 1 – only start orders of serials will be pending orders that follow the price, 2 – all pending orders
TrendStep = 100000 // ea will use only start lot order of serial and continue this in trend every TrendStep pips 0.1 0.1 0.1 0.1 …it some kind of pyramid hedging in trend but with constant same order based at start order of serial. If price retrace after trend – possible this orders will have some minus and need to manage them manually if you used this function. (Also if profit – this orders can be used in VirtualTrailingStop below parameter to trail them)
PIPsStep = 10 // minimal step between 2 market type grid levels (orders) 0.1-PipsStep-0.1-PipsStep-0.1-PipsStep-0.2 . Ea will use this distance between levels only if you use non-indicator modes and only Market Types of orders (pending orders type can filter bigger distance because of trail pending orders in trends). Otherwise there will be bigger step<10 because of indicator and pending orders filtering and New function AutoPipStep. In version v3.1.3.3 – once AutoPIPSTEP AutoPipstepADR=True // True = Turn on AutoPipStep , False = Turn Of AutoPipStep. EA can calculate separate AutoPipStep for different pairs based at their HighLow bars at any TF per any candles. If use D1 – it will be ADR – Average Daily Range / divided by some value
AutoPipstepADRTF=1440 // what TF use to calculate Average High-Low ? 0-Current, 1-M1, 5-M5, 15-M15, 30-M30, 60-H1, 240-H4, 1440-D1
AutoPipstepBars=20 // how many bars back EA take to calculate AutoPipStep at AutoPipstepADRTF(including Current Bar that not closed yet)
AutoPipstepADRdivider=6 // EA will look at 19 bars back + 1 bar (current bar) and will calculate “Averages of their High-Low-s”, and will divide it to 6 (AutoPipstepADRdivider). The found value will be AutoPipStep for Current pair (for all pairs will be different personal AutoPipStep in this case)
PendingFollowDistance = 22 // [10-50] If you use TypeOfOrders = 1 or 2, the EA will start to use pending Stop orders to filter price. If price go up – the EA will follow current price (like a trailing stop) with sell stop order at a distance of 22 pips under the price. A good filter to not open many orders opposite the trend direction or price spikes and can be used also as additional temporary filter at news trading (this parameter will be used only in TypeOfOrders = 1 & 2)
PendingFollowStep = 2 // [1-5] if price runaway from pending stop order ea will replace every 2 pips PendingFollowDistance to follow the price if its become > then 22 pips (PendingFollowDistance = 22). Similar to trailing stop working – we can call it trail of Pending Stop orders (this parameter will be used only in TypeOfOrders = 1 & 2)
FirstLotExponent = 1.0 // [1.0-3.0] multiplier for next levels of the grid after Start Orders of Serial up to level NumberOfLevel2ndLE = 5 . if FirstLotExponent= 1 ea will open 5 first orders of grid like this : 0.1 0.1 0.1 0.1 0.1 . If =2 ea will open 5 next orders with lot sizes : 0.1 0.2 0.4 0.8 1.6 . If = 1.4 ea will open next : 0.1 0.14 0.19 0.27 0.38 . (every next order = previous * FirstLotExponent till SecondLotExponent that can have different value and calculation method)
SecondLotExponent = 1.5 // [1.0-3.0] this lot exponent start working after NumberOfLevel2ndLE = 6 (for example) and use total average lots of current serial * SecondLotExponent . Example : Second lotexp will start work only after #6 level and we opened serial like this 0.1 0.15 0.22 0.33 0.50. Lets calculate #6 level using SecondLE = 1.5; (0.1 0.15 0.22 0.33 0.50)/5 = 0.24 is average lot of current serial. So lot size of #6 level is 0.24 x SecondLotExponent (1.5) = 0.36. So you see that by smart use of two types of lot exponents can give us serial like this; 0.1 0.15 0.22 0.33 0.50 0.36 (last order even less than previous). It is therefore possible to create serials like this: 0.1 0.1 0.1 0.15 0.22 0.33 0.50 to help you survive in non-retrace trends of price movement using this parameters of 2 exponents.
NumberOfLevel2ndLE = 6 // at what level of the grid ea stop using FirstLotExponent and start use SeconLotExponent
STOP LOSS ————
VirtualStopLossPips = 100 // Virtual Stop Loss for every grid order in pips. Brokers do not see physical StopLoss – the EA keep SL pips in memory and closes each order once it reach this value in pips
VSLLevel = 3 // before this level of grid VirtualStopLossPips not working and will start working for grid orders that will be opened after and at this level
LOCK ————
OpenLock = false // if true EA will lock current grid serial with hedge order and drop this serial. EA will not open any new grid order after locking of this serial
LockPercentFromSummary = 0.8 // portion of Hedging . For example you have sell serial 0.1 0.2 0.4 0.8 1.6 = 3.1 summ lot. 0.8 means 80% from 3.1 must be opened in buy to hedge this serial in 80% : 3.1*0.8 = 2.48 lot ea will open in Buy and drop this serial until user will not back to comp and will not decide what to do with that and how to help it. Some kind of protection. recommended only for traders who can open lock in positive. Otherwise better do not use this function at all because it temporary hedge or lock only minus equity, not plus and need knowledge and experience to open negative lock. Good thing that it will not let blow your acc if you use nonindicator mode without limitation in MaxTrades
LockDraw = 15 // what drawdown ea must dedicate at 1 pair to start hedge it with Lock order ?
VIRTUAL TAKE PROFIT “LASTTP” + OVERLAP ———————-
LastTP = true // if true – ea use Virtual Take Profit for last biggest order in grid serial to close it in profit. Broker do not see (VTP) take profits of this EA
TypeOverLap = 3 // [0 1 2 3] 0 – EA does not use new profit to cancel out old orders to minimise DrawDown (eat pieces of old orders with Cross-Closing by using New Profit = OverLap); 1- EA will cancel out older orders to minimise DrawDown starting with the oldest or the very first order; 2- EA will start cancelling out the most recent trade; 3- EA will start cancelling out starting from the second last order. TypeOverlap fixed in New version v3.1.4.0.5 – if EA cannot use TypeOverlap=3 (when serial do not have 3 orders) it will try use TypeOverlap=2 for 2 orders ! if not possible use TypeOverlap=2 ea will use TypeOverlap=1
CoefLast = 1.0 // portion, how much EA can use from lastTP profit in OverLap function. 1=100% , 0.3 = 30% to eat pieces of old orders by profit/loss in proportion
LastTPPips = 10 // Virtual Take Profit (VTP) of last order of grid. Broker do not see this TP – ea hold this in memory and check every tick. How much pips last order must go in profit to close it by LastTP function of robot. Ea can reopen several times this order and close them to VTP – in flat ea doing lots of profit and rebates. LastTPPips after version 3.1.3.1 always = AutoPopstep at your separate pair! Also in Fumction of Autopipstep added protection from low pipstep in Flat
LevelStartLastTP = 1 // [1..10] at what level of grid ea start use LastTP (or VTP) function . (cannot equal = 0 or ea will show Error. First minimal level of Grid =1
LastTPFixedPips = False // if True – EA will always use constant LastTPPips for Take Profit that disconnected from Autopipstep. If False – EA use LastTPPips = AutoPipstep, but LastTPPips cannot be < PipStep (protection from low AutoPipstep and low LastTPPips) VIRTUAL TRAILING STOP ——————— TrailGo = true // use virtual trailing stop (VTS) ? it make sense use in True only if you use LevelStartLastTP > 1 [2-3] and you need to trail sometimes start orders
Tak = 30 // Profit in pips to start using VTS in Grid Ordes
StepTak = 2 // step to move VTS for profit order to follow current price with distance TrailDistance
TrailDistance = 10 // minimal Trail Stop from current price where ea follow SL in profit for order. ( Learn your broker StopLevels for SL! )
MAGIC NUMBERS ————
BuyGridMagicNumbers = 1000 // Start order of Buy serial will have 1000 magic number. All next levels +1. 1000 1001 1002 1003 …
SellGridMagicNumbers = 4000 // Start order of Sell serial will have 4000 magic number. All next levels +1. 4001 4001 4002 4003 …
TAKE PROFIT IN PIPS FROM BREAKEVEN FOR 1 PAIR ————
CloseTP = True // If true we use function Virtual TP from BreakEven + some pips called TakeProfit
ColCloseTP = 3 // ea take 1 pair (sell or buy separate) breakeven level and add TakeProfit=10 pips to close this serial. ColCloseTP means from what level of grid it will start to work. If ColCloseTP = 3 it means after 3 level of grid EA will close all orders at Sell or Buy if they not closed by LastTP or Trailing Stop once this 3 or more orders are in profit pips now = BreakEven+TakeProfit
TakeProfit = 10 // how many pips form break even in pluss ea must see to cloase all serial ( in buy or sell ) if CloseTP activated and we already have ColCloseTP = 3 orders in this separate direction serial
CLOSE % OF DEPOSIT ————
CloseEquity = true // Robot will create in memory of MT4 Global Variables (GV) called Depo0 that equal to your Start Balance when at account No orders (press F3 is MT4 to see Global Variables). It will be Start point for calculation % of profit from StartBalance. EA take Depo0 and add MaxEquityProfit = 5 %. That will be Target in Equity to Close All Orders at Account (including your manual or other EAs orders too). Once you attached EA at EURUSD chart – and EA created Depo0 in GV it will start collect new Balance untill we reach TargetEquity value by current balance. But at same time our Current Equity will be less then current balance because of drawdown at old orders! Next what EA will do – it continue collect new balance profit in LastTP function, but every new additional balance, that more TargetEquity value, EA will use in OverLap Function to EAT pieces of orders from old drawdown.
MaxEquityProfit = 5 // how much current equity most be bigger in % then Depo0 or StartDepo (when serial started). After ea will finish current serial and close all orders he will change (rewrite) Depo0 = as CurrentBalance for new future serial. If you have opned ordes at account and you like to Deposit more Money – turn off EA, change Depo0 (in Global varialbe) to new expected Balance or balance where you like to start Function OverLap. Check if all Correct. Turn On EA after Deposit. During Updates at New Version – if you have opened orders at acc please do not Delete Global Variable (New version will use old version GV) because you can loose part of balance.
INDICATORS SIGNALS ON/OFF ? —————
FirstGridOrderSignal = false // use activated indicators as Signal in EA at grid start orders in New Serials ?
AllOtherGridOrdersSignal = false // use activated indicators as Signal n EA at Next grid levels after StartOrders ?
OnlyOneTypeOrders = False; // If True – opposite signal will close current signal orders (if EA traded into Buy signal and Sell signal coming EA will close all Buy orders at this pair and start trade Sell signal)