Grid Core Relative Momentum Index EA
- Experts
-
AL MOOSAWI ABDULLAH JAFFER BAQER
To trade successfully we need to go through the proven path that others had gone and reached!
Here are 17 quotes from such successful investors:
1- Limit your size in any position so that fear does not become the prevailing instinct guiding your judgment.
Joe Vidich - 버전: 3.22
- 활성화: 5
Built for grid traders who want an entry that waits for a stretched market to let go. One promise: the first level opens only after momentum leaves an extreme with the main trend behind it. Mechanism: a Relative Momentum Index zone exit on a closed bar, filtered by range and an EMA 200, feeding an ATR-spaced grid that banks small closures.
Core edition, 67 USD: the same grid engine, margin and stuck-order fixes, Hedge Vault card and left-side panel as our full grid EAs, with one focused signal, so you pay for the engine and one clean trigger, not for a bundle of extras.
Tested on: EURUSD H1, $10,000, default inputs, 2025.01.01 to 2026.09.30: net +462.00, maximal equity drawdown 624.45 (6.15%), 197 trades, no stop-out, no margin refusal.
See it before you pay: run Grid Core Relative Momentum Index EA in the MetaTrader 5 Strategy Tester, visual mode, EURUSD H1, inputs untouched. Each zone exit it accepts is marked with an arrow; on a live chart each exit a guard turned down appears as a grey dot.
What happens, in plain verbs. It measures how far each finished close moved against the close five bars earlier, waits for that momentum to climb out of the oversold zone or drop out of the overbought zone, checks range and trend, opens the first level and spaces the rest by ATR, then closes groups of orders once their combined result passes the target.
Straight about risk. This is a grid EA. It adds positions against a move and has no stop loss by default. Out of the box: 0.01 first lot, +0.01 per level, ATR spacing with a 50 point floor and a 5000 point ceiling, up to 1000 levels, hedge cycle off, margin-level safety off. Limits block new levels; nothing force-closes your book.
----------
MOMENTUM THAT REMEMBERS FURTHER BACK
The RSI compares each close with the one right before it. The Relative Momentum Index, published by Roger Altman in 1993, compares each close with the close several bars back (5 here). That one change makes it steadier: a single jumpy candle moves it less, and it stays in an extreme zone only when the push has real distance behind it. Gains and losses over those 5-bar steps are smoothed the Wilder way over 14 bars, and the result is a line from 0 to 100. Above 70 the market has been running up hard; below 30 it has been falling hard. The EA does not buy the extreme. It waits for the line to come back out of it, the first sign the push is tiring.
Five facts before anything else
• Entry: RMI rises back above 30 (BUY) or falls back below 70 (SELL) on a finished bar. A second mode uses the 50 midline instead. Accepted signals never repaint.
• The RMI is calculated inside the EA from closing prices only. No indicator file, no DLL, no internet call.
• A Range Guard skips flat boxes, and the EMA 200 filter keeps entries with the larger trend, so a BUY needs the close above the EMA.
• New in this product: the Thrust Guard, which can turn down a zone exit where the line only crept across the level. It ships off; the test numbers below say why.
• Protection blocks new levels; it never dumps the open book at a bad moment.
----------
First session checklist
1. Put it on EURUSD H1 with all inputs at default.
2. Choose Scan only in RunMode. The panel shows every plan and no order leaves the terminal.
3. Scroll back: arrows show past exits the rules would accept, grey dots show the ones a guard would refuse.
4. Press ARMED on the panel once those decisions look sensible to you.
5. Repeat our tester runs on your own broker first; spreads, swaps and commission change results. Running several charts? Use a different EAMagicNumber and HedgeMagicNumber on each.
----------
Check our numbers yourself
Strategy Tester, default inputs, 1 minute OHLC, leverage 1:100, 2025.01.01 to 2026.09.30, one broker's demo data:
• EURUSD H1, $10,000: net +462.00, maximal equity drawdown 624.45 (6.15%), 197 trades. No stop-out, no margin refusal.
• EURUSD H1, $1,000,000: net +462.00, maximal equity drawdown 624.45 (0.06%), 197 trades. No stop-out, no margin refusal.
• XAUUSD D1, $10,000: net +15.20, maximal equity drawdown 32.01 (0.32%), 4 trades. No stop-out, no margin refusal.
• XAUUSD D1, $1,000,000: net +15.20, maximal equity drawdown 32.01 (0.00%), 4 trades. No stop-out, no margin refusal.
What these numbers do and do not say: they cover one past period on one broker. The drawdown in money is the same on both deposits because lots stay fixed, so on $10,000 it is a real 6%, and smaller deposits were not tested. The EURUSD drawdown is larger than the profit over the period; this is a patient engine, not a fast one. Defaults were chosen once by judgement on this same period, which flatters them. Four gold trades in 21 months is far too few to rate gold at all. Netting accounts were not verified.
----------
The Thrust Guard and why it ships off
The idea: a real turn out of an extreme should move the RMI by a few points on the bar that crosses, not drift over the line by a fraction. InpRMIThrustMin sets that least move in points. We tested 4 points against off, everything else default. EURUSD H1, $10,000: on, net +544.92, drawdown 624.45 (6.06%), 189 trades; off, net +462.00, drawdown 624.45 (6.15%), 197 trades. XAUUSD D1, $10,000: identical either way, +15.20 from 4 trades. It removed 8 weak entries and added 82.92 of profit, but the worst drawdown in money did not move at all. It earned more; it was not shown to be safer, and with this few refusals the gain could be luck. So it ships off (0). If you want to try it, start between 3 and 6 points and compare drawdown first, not profit.
----------
Why the RMI for a grid
A grid lives or dies by the moment it starts. Starting right inside a strong run is how grids collect a long line of losing levels. Starting when the run has just loosened is kinder to the ladder. The RMI fits that job: the 5 bar lookback ignores one-candle spikes, the zones give fixed, readable levels on any symbol, and the exit from a zone is one clear event on a closed bar. The costs, honestly: an exit can be early in a strong trend (the EMA 200 filter and the signal gap exist for that), and in a quiet market the line may never reach a zone, so the EA simply waits.
----------
One cycle, step by step
1. Measure. Each new bar recomputes the RMI on finished closes: 5 bar momentum, 14 bar Wilder smoothing.
2. Exit. Default mode: the line rises from at or below 30 to above it for a BUY, or falls from at or above 70 to below it for a SELL. Midline mode: the line crosses 50.
3. Thrust Guard, optional. The RMI must move at least InpRMIThrustMin points on the exit bar.
4. Range Guard. The last 20 bars must cover at least 5 ATR, so tight boxes are passed over.
5. Trend. By default the close must sit on the matching side of the EMA 200; it can also be set to fade that side or switched off.
6. Pace. Accepted signals are spaced by a bar gap, and a signal may wait a few bars if its level cannot be placed at once.
7. Ladder. Levels follow ATR or fixed points with a floor, a ceiling and an optional freeze; BUY and SELL grids can run together or alone.
8. Close. Groups of oldest and newest orders close when their joint result, after swap and commission, passes the target; a too-heavy old order is trimmed by a slice instead.
9. Verify. A closure that would reopen a level at once is blocked, every leg is checked in deal history, failed legs retry, and a plan is dropped if the book changed before sending.
10. Hedge cycle, optional. Off by default and not used in our tests. When on, it keeps a balanced pair on a chosen symbol and retires it in equal slices paid by a small surcharge on closures the grid already makes.
----------
Reading the panel
The panel stays on the left; the right side and the price scale remain clean. It shows symbol, magic number, a status pill, grid mode, lot steps, spacing, banked result, the book, the closing plan of each side and the order table. The RMI PULSE row gives the period and momentum distance, the last closed RMI value, its zone (OB, OS or MID), whether it is rising (UP) or falling (DN), and how many bars ago the last zone exit happened. The THRUST GUARD row gives the side the line is leaning to, the mode (ZONE or MID), the last bar's RMI move in points with OPEN, HOLD or off, the Range Guard width in ATR with its state, and the EMA side. On a live chart the last 150 bars carry marks: an arrow for an accepted exit, a grey dot for a refused one. Buttons switch Armed / Scan only, Pause / Resume, chart marks and slicing. The Hedge Vault card docks under the panel and stays hidden while the hedge is off. Nothing is drawn in a non-visual backtest.
----------
Controls that stay in your hands
No input closes the book for you; limits only stop new levels.
Every order first passes a free margin check with a buffer.
Caps on levels per grid, orders per side and lot size keep the ladder finite. MinMarginLevelPercent and MaxAccountRiskPercent start off, so set them for your account.
An optional margin-level timeframe safety lifts the signal and spacing to a higher timeframe as margin falls. Off by default, not exercised in our tests.
Each copy only touches orders with its own symbol and magic numbers.
Scan only shows every decision while sending nothing.
----------
A good fit if
you want a grid that starts when a stretched move loosens, not in the middle of it; you are comfortable with many small closures and long quiet spells; you want the core engine without paying for extras; and you will size lots to your own balance.
Not a fit if
• you need a stop loss on every order. There is none by design.
• you want quick, steady monthly gains. Over the tested period the worst dip was larger than the total profit.
• you plan to run big lots on a small account and walk away. A long trend can keep the book open for weeks.
• you want a trade on most candles. The zones, filters and gap keep it idle on purpose.
• you want the extra signal layers of our full grid EAs. This is the focused core edition.
• you will not test on your own broker first.
----------
Questions buyers ask
Does it repaint? No. Signals, chart marks and both panel rows use finished bars only.
Is this the standard RMI? Yes: Altman's momentum version of the RSI, with Wilder smoothing. Some platforms smooth with a simple average; their line can differ slightly near the levels.
Zone or midline mode? Zone mode waits for an extreme and trades less. Midline mode reacts sooner and more often; it was not backtested here.
What should I adjust first? InpRMILevel (higher is stricter), then InpRMIRangeMinATR. One change at a time, with drawdown next to net.
Which markets were tested? EURUSD H1 and XAUUSD D1 only.
Netting accounts? A separate margin cap exists, but netting behaviour is not verified.
----------
All inputs
Grid levels
TradeMode - two grids, BUY and SELL, by default, or one direction only.
GridSpacePoints - level distance in fixed spacing mode (25).
GridSpaceMultiplier - above 1.0 widens deeper levels (1.0 = even).
MaxGridLevels - most levels in one grid (1000).
UpDirectionIsBuy - which side an up move arms.
EAMagicNumber - number on grid orders (9769420).
GridOrderComment - text on grid orders (GRMI).
OneOrderPerBar - at most one new level per bar.
Lots
InitialLotSize - volume of the first level (0.01).
LotSizingMode - additive by default, multiply as the alternative.
LotMultiplier - factor per level in multiply mode (1.25).
LotAddStep - step per level in additive mode (0.01; 0 uses the starting lot).
MaxOrderVolume - largest single order (1.0).
UseAutoLot - links the starting lot to balance (off).
AutoLotBaseBalance - balance that matches the starting lot (1000).
AutoLotAllowDecrease - lets auto lot go below the starting lot (off).
ATR spacing
GridSpacingMode - ATR by default, fixed points as the alternative.
ATRTimeframe - ATR timeframe (current chart).
ATRPeriod - ATR length (14).
ATRSpacingFactor - spacing as a multiple of ATR (1.0).
ATRBarShift - ATR bar; 1 is the last finished bar.
ATRMinSpacingPts - lowest spacing in points (50; 0 none).
ATRMaxSpacingPts - highest spacing in points (5000; 0 none).
ATRFreezeOnStart - keeps one spacing for the whole cycle (off).
Profit target
DesiredProfitPerClosure - base target in account currency (2.0).
ProfitMultiplier - final scale, 1.00 to 2.00.
ProfitTargetMode - scaled by default: bigger, deeper books aim higher.
ProfitVolumePower - how closing volume lifts the target (1.0; 0 off).
ProfitDepthBonus - extra target per additional open level (0.10).
ProfitMaxMultiple - scaled target ceiling in multiples of the base (50).
ProfitMaxReachFraction - keeps the target inside this share of one grid step (0.50).
Fragment scanner
UseMultiLegScan - checks multi-order groups before the plain pair (on).
MaxOldestLegs - most old orders in one closure (3).
MaxNewestLegs - most new orders in one closure (6).
ScanPriority - ranking of qualifying groups; largest group first by default.
NeverBankLessThanPair - a group must also beat the pair target (on).
RequireCloseVolumeExceedsTarget - newest volume must be above oldest volume (on).
MinCloseVolumeRatio - required ratio of those volumes (1.5).
Target slicing
EnableTargetSlicing - allows part-closing the oldest order (on).
FragProfitWeightPower - profit weight per closing lot (1.5).
FragMinSlicePercent - smallest slice, percent of the target order (20).
FragAllowMultiCloser - several new orders may fund one slice (on).
FragPreferFullClosure - a full closure wins when both are possible (on).
Reopen guard
ReopenGuard - blocks closures that would reopen a level at once (step based).
ReopenGuardCushion - safe distance as a share of one step (0.90).
Account protection
MinMarginLevelPercent - no new levels below this margin level (0 off).
MaxAccountRiskPercent - no new levels beyond this floating loss, percent of balance (0 off).
NetMaxMarginPercent - netting only: cap on net position margin, percent of equity (5.0).
MaxTotalOrders - absolute order cap per side (1000).
Execution and checks
RunMode - Armed or Scan only.
CloseSequence - order in which legs are sent; oldest first by default.
MaxSlippagePoints - allowed slippage (30).
MaxSpreadPoints - no trading above this spread (7500).
MinSecondsBetweenClosures - pause between closures per side (5).
CloseAttemptsPerLeg - attempts before the retry queue (3).
VerifyTimeoutSeconds - how long a stuck leg is followed (90).
DeferWhenMarketClosed - waits for the session instead of halting (on).
MarketClosedRetrySeconds - retry spacing while orders are refused (30).
AutoResumeAfterSeconds - a halt clears itself after this many seconds (300; 0 waits for you).
NoPartialRetryMinutes - partial closes tried again this many minutes after a broker refusal (15; 0 never).
AbortIfBookChanged - drops a plan if a leg changed (on).
UseFullCommission - counts commission on both sides (on).
CommissionPerLot - fallback figure (0 reads history).
CloseOrderComment - text on closing deals.
Hedge cycle
EnableHedgeCycle - main switch (off).
HedgeSymbols - comma list; repeat a symbol for more turns (XAGUSD).
HedgeSymbolRotation - how the next symbol is picked (per cycle).
HedgeMaxSymbolsInTester - rotation cap in the tester only (2; 0 none).
HedgeCycleLots - lots on each side of the pair (0.01).
HedgeSliceLots - lots retired per side each slice (0.01).
HedgeFragmentBonus - bonus over the slice cost (100).
HedgeBonusIsPercent - bonus is a percent; false means money (on).
HedgeMaxSurcharge - money cap per closure (0 none).
HedgeMaxSurchargePercent - largest rise of any closure target, percent (50).
HedgeMagicNumber - number on hedge legs, must differ from the grid (9769421).
HedgeReopenOnFinish - opens a new cycle when one ends (on).
HedgeStartRequiresTrade - first cycle waits for a grid order (on).
HedgeIntegritySeconds - leg balance check interval (5).
HedgeAutoRepair - repairs a lone leg automatically (on).
HedgeNakedAction - what to do with a lone leg; re-hedge by default.
HedgeMaxSpreadPoints - hedge spread limit (0 off).
HedgeSlippagePoints - hedge slippage allowance (30).
HedgeAttemptsPerLeg - attempts per hedge leg (3).
HedgeVerifyTimeout - follow time for a stuck hedge leg (90).
HedgeCommissionPerLot - fallback hedge commission (0 reads history).
HedgeOrderComment - text on hedge deals.
Weekly cash day
WeeklyCashDay - pauses new cycles and slices around withdrawals (off).
CashDayOfWeek - 0 Sunday, 1 Monday and so on (1).
CashCutoffHour - server hour after which no new slice fires (21).
Panel and chart
ShowPanel - panel on or off.
PanelX and PanelY - distance from the chart edge (12, 15).
PanelFontSize - base text size (9).
ShowArabic - second language line (on).
ShowChartMarks - plans and levels drawn on the chart (on).
MaxTableRows - order rows per grid (13).
PanelCorner - corner the panel is anchored to.
Entry trigger
EntryTriggerMode - the Relative Momentum Index strategy by default.
SignalBarShift - 1 is the last finished bar.
SignalBarsDelay - bars between accepted signals (30; 0 every).
SignalValidBars - bars a signal stays usable (3).
SignalAllowBuy and SignalAllowSell - switch each side.
SignalReverse - turns the direction around (off).
Relative Momentum Index
InpRMIPeriod - Wilder smoothing length of the up and down momentum (14).
InpRMIMomentum - how many bars back each close is compared with (5).
InpRMILevel - upper zone level; the lower zone is 100 minus this (70, so 30).
InpRMIMode - 0 the line leaves the overbought or oversold zone, 1 the line crosses 50 (0).
InpRMIThrustMin - Thrust Guard: least RMI move on the exit bar, in points (0 off; see the test above).
InpRMIRangeMinATR - Range Guard: least window width in ATR (5; 0 off).
InpRMIRangeBars - Range Guard window in bars (20).
InpRMIATRPeriod - ATR length used by the Range Guard (14).
InpRMITrendFilter - 1 trade with the EMA side, 2 against it, 0 off (1).
InpRMITrendMAPeriod - trend EMA length (200).
InpShowSignalArrows - arrow on the candle where a cycle armed (on).
InpShowRMIOnChart - past zone exits on the live chart, arrow or grey dot (on).
Debug
DebugMode - extra journal detail (off).
Margin timeframe safety
UseMarginTFSafety - main switch (off).
Level1MarginPct and Level1TF - at 6000 percent the work moves to M15.
Level2MarginPct and Level2TF - at 5000 percent the work moves to H1.
MarginTFHysteresisPct - recovery needed before stepping back (500).
----------
The risk, said once more
Grid trading can lose heavily. The EA adds to losing positions, uses no stop loss, and a long trend can keep the book open for a long time or, with lots too big for the balance, end in a stop-out. The RMI is built from past closes and cannot see the next bar. No profit is promised. Choose lots that survive a bad stretch, test on your own broker and risk only money you can afford to lose. No DLLs or extra files are needed.
Already tried it? A frank review of what it did on your account, good or bad, is the most useful thing the next trader can read.
