[r]MT5 ROBOT LABCONFIGURABLE STRATEGIES

Demand Trap Supply & Demand Strategy

EA LAB · TRADING STRATEGY #010 · PRICE ACTION

Demand Trap: supply & demand reversals

A strong impulse defines a zone. A return to that zone creates a candidate. A completed rejection candle confirms the setup. The trade then uses a structural stop and a target selected from the available price structure.

Explore EA010 for MT5Read the manual
EA010 Demand Trap conceptual supply and demand zone artwork

The idea: a return to the origin of an impulse

Demand Trap makes a supply-and-demand reversal idea explicit enough to test. A small base precedes a forceful directional candle. The EA records a price zone around the base, waits for a return and checks for rejection. It trades both demand-side buys and supply-side sells. The name uses SMC vocabulary, but the robot reads OHLC prices; it does not measure institutional orders or the order book.

A zone is a location, not a prediction. Price can pass straight through it, reject briefly and reverse again, or leave too little space to the next target. The confirmation, stop placement and distance to an opposing zone matter as much as finding the zone itself.

How a zone becomes eligible

  1. Choose two timeframes. Zone detection uses InpZoneTF; signal confirmation uses InpEntryTF. The zone timeframe must be at least as large. Factory defaults are H1/M5; the supplied historical example is M20/M15.
  2. Build the base. Take the configured number of candles immediately before the impulse. There is no separate base-compression threshold.
  3. Confirm the impulse. Its body must be at least the impulse multiplier times a pre-impulse mean true-range estimate. A bullish close must exceed the base high; a bearish close must fall below the base low.
  4. Select the boundaries. WIDE uses the full high/low range of the base. OB uses the most recent opposite-colour candle in it; without one, no OB zone is created.
  5. Apply optional structure confirmation. With BOS enabled, the impulse must also close beyond a qualifying older confirmed swing. The example does not enable this filter.

BUY at demand

A bullish impulse leaves a demand zone. On return, the closed entry candle overlaps that eligible zone and passes the selected bullish rejection rule. The stop is below the formation.

SELL at supply

A bearish impulse leaves supply. A return and an accepted bearish closed-candle pattern permit a short. The stop is above the formation.

What actually confirms the trade?

ANYFalse break OR pin bar OR engulfing. A false break is not mandatory.
False breakDemand: low below the outer boundary, close back above it. Supply: high above the outer boundary, close back below it. Excursion cannot exceed the configured entry-ATR depth.
Pin barRejection wick passes wick/body and wick/range thresholds; the close is in the favourable half. Candle colour alone is not decisive.
EngulfingAn opposite-colour previous candle is followed by a body that fully engulfs it.
False break + candleFalse break AND either pin bar or engulfing. This is more restrictive than ANY.

Only closed entry candles qualify. FreshOnly restricts the recorded first retest to a configured window; the signal can appear on the contact candle. Historically touched zones found during discovery are not automatically fresh. InvalidateOnClose=true uses a closed zone-timeframe candle beyond the outer boundary; false uses an outer wick breach.

Two entry modes with different execution

Close entry: send a market order on the first tick of the next entry candle. The fill is not guaranteed to equal the historical signal close. Buys use ask and sells use bid.

Break extreme: store a virtual trigger above the formation high for a buy or below the low for a sell. A later tick must strictly cross it before expiry. This is terminal-side logic, not a pending stop order parked at the broker; MT5 must remain running. Version 1.07 retains the formation extremes and identifies the original zone even when the zone array rolls over.

Structural stops and targets that can shorten

BUY SL is formation low minus the configured fraction of formation range; SELL SL is formation high plus that buffer. If the signal candle also qualifies as engulfing, the formation includes the previous candle even if another selected rule admitted the setup.

The fixed-RR setting is the initial ceiling. An enabled nearer opposite zone or confirmed swing ahead of the trade can shorten the target. A farther target does not extend it. TP remains fixed after entry. There is no trailing, break-even, partial close, pyramiding or minimum effective R/R filter.

3R in the preset does not mean every trade targets 3R. A nearby structural target can reduce the reward to less than the initial risk. Inspect the actual entry, SL and TP.

Actual demand retest: a winning long

Original EURUSD demand retest and BUY to take profit on 4 March 2025
Original v1.06 visual-test screenshot. Entry and exit also match the new v1.07 report; the old panel appearance is not the v1.07 UI.

On 4 March 2025, 0.20 lots bought EURUSD.pro at 1.05151 at 16:30:00. SL was 1.04942 and TP 1.05486. TP filled at 19:08:26, yielding +265.66 PLN with no reported commission or swap. The target is approximately 1.60R, despite a configured 3R ceiling. The screenshot illustrates a return to demand and lower-wick rejection; the report does not log which particular signal branch admitted the order.

Actual supply rejection: a profitable short

Original EURUSD supply rejection and short on 15 January 2025
Original v1.06 screenshot, matched to the v1.07 order/deal records. Times are report/server timestamps.

On 15 January, SELL 0.27 lots entered at 1.03335 at 15:45:00. Initial SL 1.03470 and TP 1.03060 imply about 2.04R. The TP exit filled at 1.03055 at 16:48:40 for +312.18 PLN. Marked levels and actual execution can differ; use report fills when measuring realised results.

A valid-looking setup can lose

Original EURUSD long setup stopped out on 14 April 2025
Right-hand BUY is the losing trade; the earlier left-hand winner is a separate position.

The 14 April BUY entered at 1.14005, 0.26 lots, at 04:15:00. SL 1.13790 and TP 1.14091 give only about 0.40R. The stop filled at 1.13788 at 04:38:35 for -212.47 PLN. The code has no explicit rule forbidding a buy inside a visible opposite supply zone. A zone label and confirmation cannot remove loss risk.

Example historical backtest: profit and drawdown together

Net profit · PLN
+11,096.97

5,000.00 initial deposit → 16,096.97 final balance.

Maximum relative equity drawdown
9.33%

1,011.72 PLN at the relative-DD event. Largest monetary equity drawdown: 1,138.22 PLN (9.00% at that event).

ORIGINAL MT5 DATA / MODERN VIEW · BALANCE · PLN · 115 verified points500010000150002025-01-012026-10-01Closed-deal balance, not floating equity. No smoothing or forecast.
Rebuilt from all original trade deals. Each running balance was checked; 114 exit deals plus the initial deposit produce 115 plotted points. This is balance, not floating equity.
Expert / symbolEA_010_Demand_Trap_EALAB_v1_07 / EURUSD.pro
Period / timeframes2025-01-01 to 2026-10-01 / M20 zones, M15 entries
Broker/server / leverageOANDATMS-MT5 report, build 6230 / 1:100
Profit factor / expected payoff2.45 / 97.34 PLN per completed trade
Trades / deals / wins114 completed trades / 228 trade deals / 89 wins, 25 losses (78.07% win rate)
Balance drawdownMaximum relative 8.31% (756.11 PLN)
Test settingsWIDE zones; base 3; ATR 22; impulse 1.75; first retest 5 bars; ANY signal; next-bar market entry; initial 3R ceiling, opposite-zone and swing targets enabled; 3% equity risk; hours/EMA filters off; spread filter 100 points
Data and costs99% reported quality; 48,328,314 ticks. Commission 0.00 PLN; swap -66.76 PLN. Explicit modelling selection and spread schedule not provided in source report.

Historical simulation, not live performance or a forecast. The owner supplied the compiled EX5 and a new v1.07 report; the MQ5 matches the reviewed source exactly. No compiler log, untouched out-of-sample or forward report was supplied. Costs, tick sequence and broker contract settings can change results. Download the original report and its images.

Risk, operating filters and restart limits

Equity-percent sizing estimates the one-lot stop loss with OrderCalcProfit and rounds volume down. Fixed lots are an alternative; invalid volume steps are rejected. The example’s 3% equity risk is a historical configuration, not a live recommendation. Fees, gaps and slippage can exceed nominal risk. Any existing position on the symbol, including another EA or a manual position, blocks a new entry.

Optional broker-time hours, higher-timeframe EMA and ask/bid spread filters constrain entries. Spread is in points, not pips; 100 points on a five-digit EURUSD quote equals 10 pips. Hours and EMA are off in the supplied example.

Used-zone status persists on demo/live for the same account, server, symbol, magic, timeframe/mode and zone identity. Contact, retest window and pending state are not fully restored. State does not migrate across terminals or from v1.06. Changing settings can create a different identity.

How to test the strategy

  1. Start with a single run using the packaged example preset; compare all values with the report.
  2. Hold exposure fixed while comparing zone formation and signal modes. Test target choices separately.
  3. Use small, valid parameter ranges. Select explicit timeframe pairs; do not blindly retain the original SET’s optimization selections.
  4. Choose Custom max. SMOOTH EQUITY ranks profit, sampled equity linearity and weekly progress, penalising stagnation, Ulcer and relative equity drawdown. Defaults reject fewer than 40 trades or DD above 35%; these are ranking gates, not live circuit breakers.
  5. Reserve untouched chronological data, assess neighbouring parameters, validate realistic costs and run a demo forward test.

Frequently asked questions

Is every zone touch an entry?

No. Eligibility, a completed confirmation candle, operating filters, position capacity and broker constraints still apply.

Does the strategy need a false break?

Only in the relevant selected modes. ANY also accepts a pin or engulf without a false break.

Can I reproduce the report with factory defaults?

No. Defaults use H1/M5; the historical example uses M20/M15 and other specific values.

Does Strategy Tester activate a license?

No. Tester/optimization are offline. Demo and live charts require a valid EA010 purchase license.

Educational explanation of supplied software. Historical results do not guarantee future performance.

Withdraw from contract here · Paid adaptation purchase terms