Quick start
BORO 90 is ready to trade the moment you attach it: the default inputs are the exact settings running on my own live account.
- Open an XAUUSD chart on the M5 timeframe. A hedging account is required: S3 and S4 hold buys and sells at the same time, and BORO refuses to start on a netting account with them enabled.
- Drag BORO 90 onto the chart and tick Allow Algo Trading.
- Choose your mode in the BORO - Strategies group (see the next section). On accounts under $10,000, set InpEnableS3 to false.
- Optional: set InpShowPanel to true to see the per-strategy P/L and drawdown panel.
- Press OK. The Experts tab prints one start-up line listing which strategies are ON and their magic numbers, plus a "BORO account check" line with your balance, leverage and the margin needed for the minimum lot.
If that account-check line shows a WARNING, your account cannot carry the minimum lot. Read the FAQ before going further.
Choosing your mode
Pick the mode by account size: under $10,000 run S1 + S2 + S4; at $10,000 or more you can add S3.
| Mode | Balance | Strategies | Inputs to set | Risk profile |
|---|---|---|---|---|
| Standard | $1,000+ | S1, S2, S4 | InpEnableS3 = false | Every trade has a stop loss; no recovery logic |
| Full | $10,000+ | S1, S2, S3, S4 | All four InpEnable… = true (default) | Adds S3 recovery; deeper floating drawdown possible |
The S3 10K rule. S3 opens new sets only while the account balance is at least 10,000 in account currency. Below that it alerts you and waits. A set that is already open keeps being managed until it closes. S1, S2 and S4 are not affected.
You can switch any strategy on or off at any time. Each strategy has its own magic number, so turning one off never touches another strategy's trades.
Strategy settings
Most buyers only need to change the risk inputs below; everything else is already set to my live values.
S1 – Multi-timeframe trend (magic 888)
S1 enters when trend alignment across timeframes agrees with a structure signal (break of structure, change of character, reversal or breakout). It runs on the chart timeframe and supports Renko charts.
| Input | Default | What it does |
|---|---|---|
| InpLotMode | % risk | Fixed lot or % of balance risked at the stop |
| InpRiskPercent | 1.00 | Risk per trade, % of balance |
| InpStopMode | Structure | Initial stop: structure zone, ATR multiple, or the trend line |
| InpMaxTrades | 2 | Max S1 positions open at once |
| InpUseBreakeven / InpBreakevenR | on / 0.5 R | Moves the stop to entry after 0.5 R profit |
| InpUseRTrail | on | Trails the stop in 0.25 R steps from 0.5 R |
| InpDdThrottlePct | 8 % | Halves the risk while S1's drawdown is above 8 % |
| InpDailyLossPct | 0 (off) | Stops S1 for the day after this loss % |
S1 has no fixed take profit by default. Trades exit on the trailing stop, a trend flip, or an opposite signal.
S2 – EMA trend pullback (magic 20260420)
S2 reads the EMA stack on a higher timeframe (H1 by default), skips choppy markets with an ADX filter, then enters on a strong candle after price touches the EMAs.
| Input | Default | What it does |
|---|---|---|
| InpS2RiskPercent | 1.0 | Risk per trade, % of balance |
| InpMaxDailyLoss | 5.0 | Stops S2 for the day after a 5 % loss |
| InpTP1_R / InpClosePct_TP1 | 1.75 R / 50 % | First target: closes half and moves the stop to breakeven |
| InpTP2_R / InpTP3_R | 4.0 R / 3.0 R | Further partial closes (30 % and 10 %) |
| InpUseNews | on | Blocks entries 10 min before to 15 min after high-impact news |
| InpUseEMA100Trail | off | Trails the stop along EMA100 after breakeven |
| InpUseTelegram | off | Sends entry and exit alerts to your Telegram bot |
S3 – Balanced recovery (magic 1, needs $10K)
S3 opens a buy and a sell together on a time, session, candle, RSI or volatility trigger. When one side hits its target, the other side becomes the balancer. S3 then adds positions at larger lot sizes until the whole set closes at its profit target. It trades through high-impact news on purpose, using a 50 ms timer for fast fills.
| Input | Default | What it does |
|---|---|---|
| InpS3InitialLot | 0.02 | First lot of each pair |
| InpS3TradeDistance | 3000 pts | Distance between recovery steps |
| InpS3BalancerLotMult | 2.0 | Lot multiplier for each balancer step |
| InpS3BalancerTargetPct | 2.0 | Profit target that closes the whole set |
| InpS3EquityProtectPct | 0 (off) | Closes S3 when its floating loss reaches this % of balance |
| InpS3MaxLossPerDay | 0 (off) | Stops S3 for the day after this loss amount |
Each balancer step doubles the lot size. Set InpS3EquityProtectPct to a level you can accept before running S3 live.
S4 – Swing breakout orders (magics 647871–647879)
S4 places a buy stop above the last valid swing high and a sell stop below the last swing low. It runs nine sets, S4.1–S4.9, each optimised separately so they enter at different prices. Stop loss and take profit are a % of price, so they scale with the gold price. Each trade gets breakeven, a trailing stop and a "salvage" exit that closes a losing trade early on a small bounce.
| Input | Default | What it does |
|---|---|---|
| InpS4_1 … InpS4_9 | all on | Turns each of the nine sets on or off |
| InpS4UseMaxTO / InpS4MaxTO | on / 1 | Caps all sets together at 1 open trade + 1 buy stop + 1 sell stop |
| InpS4CloseExtraTrade | on | Closes a new fill if the cap is already reached |
| InpS4LotMethod | Risk % | Fixed lot, tiered risk meter, or % of balance |
| InpS4RiskScaling | 1 | % of balance lost at the stop, per set |
| InpS4MinLotFallback | on | Uses the broker's minimum lot when the risk lot is smaller |
On a reload, S4 checks its existing pending orders against the current settings and replaces any that don't match.
Protection settings
These guards are on by default and apply across the whole EA.
Weekend close (S1, S2, S4 only). On Friday at InpFriCloseTime (22:00 server time by default), BORO closes every S1/S2/S4 trade that is in profit and deletes their pending orders. Losing trades stay open with their normal stops. No new S1/S2/S4 entries are taken until Monday at InpMonResumeTime (02:00). S3 is never affected. Turn it off with InpFriClose = false .
Isolated risk gates. With InpIsolateRiskGates on (default), each strategy's daily-loss and drawdown limits read only that strategy's own profit and loss. This stops a deep S3 floating loss from shutting down S1 and S2. Turn it off if you want the limits to read whole-account equity instead.
Margin checks. Before every order, BORO checks free margin and keeps InpMarginReservePct (10 %) unused. If the lot doesn't fit, it is cut down or the trade is skipped with a logged reason. After a "not enough money" refusal, S3 waits InpNoMoneyCooldownSec (300 s) before sending again.
Broker limits. BORO respects the broker's stop level, freeze level and per-side volume limit. Changes that fall inside the freeze level are retried on a later tick instead of being rejected.
The panel
The panel is off by default; set InpShowPanel = true to show it.
It shows one row per strategy and one row for each S4 set, plus a combined total:
- ON / OFF — whether the strategy or set is running
- p — open positions
- t — trades closed so far
- Net — closed plus floating profit, green when positive and red when negative
- DD — the maximum drawdown reached, in %
Drawdown is tracked tick by tick on each strategy's own equity curve, so dips during a trade count too. During the weekend pause, a line at the top shows when entries resume.
Useful panel inputs: InpPanelCorner and InpPanelX / InpPanelY set the position. InpStatsFrom counts history from a chosen date. InpResetStats clears the stored max drawdown when you re-attach.
Broker, VPS and backtesting
Use a low-spread hedging account on a VPS, and backtest with real ticks.
- Account: ECN or Raw spread, hedging mode, at least 1:100 leverage. S3 also needs "Close By" for its fastest close-all; if your broker doesn't allow it, BORO falls back to market closes and says so in the log.
- VPS: S3 and S4 rely on timers and pending orders, so the EA must run 24/5. Use a VPS close to your broker's server.
- Server time: the weekend close and S2's trading hours use broker server time, not your local time.
- Backtesting: use "Every tick based on real ticks" for results comparable to my screenshots. The tester's Custom max score combines all enabled strategies; to test one strategy alone, disable the others.
FAQ
BORO won't start: "netting account". S3 and S4 need a hedging account, and so does running more than one strategy. Open a hedging account, or enable only one strategy that isn't S3 or S4.
S3 isn't opening trades. Check that your balance is at least 10,000 in account currency. Below that, S3 alerts you and waits. Also check that at least one S3 entry trigger is enabled; the log warns you if none are.
No trades at all on a small account. Read the "BORO account check" line in the Experts tab. If it shows a WARNING, the minimum lot needs more margin than you have free. Raise leverage, add funds, or use a cent account.
No S1/S2/S4 trades on Friday night or Sunday. That's the weekend pause. Entries resume Monday at InpMonResumeTime .
S4 deleted or replaced a pending order. Each side keeps only its best entry. When a better swing level appears, the new order replaces the farthest one. On a reload, orders that no longer match the settings are also replaced.
An order was refused with "volume limit" or "not enough money". BORO cuts the lot or skips the order and logs the reason. Lower the risk % or turn off some S4 sets.
Need help? Message me on MQL5 with a screenshot of your inputs and the Experts tab log.


