Hutson Triplewave 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 - Versione: 3.41
- Attivazioni: 5
TRIX grid EA for traders who want the first order placed only when momentum itself turns, not when one noisy candle flicks a line. One job: start a grid when Jack Hutson's TRIX crosses its signal line on a closed bar with the main trend behind it. Mechanism: three exponential averages of the close stacked on top of each other, their 1-bar percent change (TRIX) and a 9-bar signal line, all computed inside the EA from bar closes, then a Range Guard, an EMA 200 and an ATR-spaced grid that banks small closures.
Hutson Triplewave EA is a TRIX expert advisor for MetaTrader 5, a triple exponential momentum grid EA. How it differs from the momentum line you know: a plain rate-of-change or MACD reacts to every bar; TRIX first smooths the close three times with EMA 15, so cycles shorter than about 15 bars are filtered out and one noisy candle cannot flip the signal. The price is delay: the triple average trails a turn by several bars, which is why the EA trades the TRIX-versus-signal cross, the earliest event TRIX gives.
Tested on: EURUSD H1, $10,000, default inputs, 2025.01.01 to 2026.09.30, real tick spread from 1 minute OHLC, netting: net +742.63, worst equity dip 785.18 USD on 10,000 (7.70%), 212 of 300 trades closed in the plus, gross won / gross lost 3.24, no stop-out, no margin refusal.
What a normal week looks like: 300 trades over about 91 weeks is roughly 3 closed trades a week on EURUSD H1, with quiet days in between. Fewer than that is the filters working, not a fault.
Minimum deposit: EURUSD H1 money drawdown in our test was 785.18 at the default 0.01 first lot, so start with at least $8,000; XAUUSD D1 drew down 23.33 on 4 trades, start with at least $1,000. These are floors from one test, not a safe zone; deposits below $10,000 were not run.
Try it free first: load Hutson Triplewave EA in the MetaTrader 5 Strategy Tester with visual mode on, default inputs, EURUSD H1. Every cross it accepts gets an arrow; on the live chart every cross a guard refuses is shown as a grey dot.
The trade lifecycle in four verbs. It smooths each close three times into TRIX, waits for TRIX to cross its signal line on a closed bar with the trend behind it, opens the first level and spaces the next ones by ATR, then banks groups of orders as soon as their joint result clears the target.
Plain risk up front. This IS a grid. It adds to losing positions and uses no stop loss by default. Defaults: 0.01 first lot, additive steps of 0.01, ATR spacing with a 50 point floor, hedge cycle off, margin-level safety off. Limits stop new levels; they never force-close the book.
THREE WAVES, ONE SIGNAL
In 1983 Jack Hutson published TRIX in Technical Analysis of Stocks and Commodities. The idea is simple: an EMA of the close, an EMA of that EMA, and an EMA of that one again. Each pass strips more of the short jitter, so the third line moves like a slow tide. TRIX is then the percent change of that tide from one bar to the next: above zero the triple average is rising, below zero it is falling. A 9-bar EMA of TRIX gives the signal line, and the cross of TRIX through it marks the moment momentum changes pace.
Five things to know first
- Entry: on a closed bar TRIX finishes above its signal line after finishing at or below it on the bar before (BUY), or the mirror for SELL. A slope-turn mode is included as an alternative. Accepted signals do not repaint.
- Calculated inside the EA from bar closes: EMA 15 three times, TRIX = 100 x (E3 - previous E3) / previous E3, signal = EMA 9 of TRIX. A TRIX indicator with the same periods shows the same values (tiny differences in the first bars come from seeding). No indicator file, no DLL, no web request.
- The known weak spot of TRIX: in a strong one-way trend it keeps crossing its signal line on small pauses, and in a flat market the crosses come close together. The EMA 200 filter takes crosses only in the trend direction and the Range Guard skips flat boxes; Side Hold, Stretch Guard, Slope Confirm, Cool Down and Body Guard are there too, all off by default.
- New Zero Side Guard is built in and ships switched OFF. Mode 1 takes a cross only on the trend side of zero, mode 2 only on the early side (BUY below zero, SELL above zero). We tested both against off; the numbers are below, so you choose.
- No stop loss and no forced close-all. Limits stop new levels; the open book stays under management.
Start here (5 minutes)
1. Attach it to EURUSD H1 and leave every input at its default.
2. Set RunMode to Scan only for the first session. The panel shows each plan; no order is sent.
3. Look at the arrows and grey dots on the chart: they show which past crosses the guards would have taken or refused.
4. Check your balance against the minimum-deposit line above, then press ARMED on the panel.
5. Repeat the tester runs below on your own broker's data before any real money; spread, swap and commission differ between brokers. More than one chart? Give each copy its own EAMagicNumber and HedgeMagicNumber.
Reproduce our numbers
Screenshots: EURUSD H1, 2025-01 to 2026-09, real tick spread from 1 minute OHLC, netting demo account, $10,000, default inputs. Same settings, same period, and you should land close to these:
- EURUSD H1, $10,000: net +742.63 (gross won 1,074.90 / gross lost 332.27), worst equity dip 785.18 USD (7.70%), 300 trades, 212 of them closed in the plus (short 70.16% won, long 71.56% won), gross won / gross lost 3.24. No stop-out, no margin refusal.
- EURUSD H1, $1,000,000: net +742.63, worst equity dip 785.18 USD (0.08%), 300 trades. No stop-out, no margin refusal.
- XAUUSD D1, $10,000: net +12.02, worst equity dip 23.33 USD (0.23%), 4 trades, no losing closed trade. No stop-out, no margin refusal.
- XAUUSD D1, $1,000,000: net +12.02, worst equity dip 23.33 USD (0.00%), 4 trades. No stop-out, no margin refusal.
Read these as one past stretch, not a forecast. Money drawdown is the same at both deposits because lots do not grow with the balance, so it is a far bigger share of a small account. The guards and filters were set once by judgement on this same period, which flatters them. Four gold trades in 21 months prove nothing about gold.
Zero Side Guard: off, mode 1, mode 2, in numbers
The idea: where TRIX sits against zero says whether the triple average is rising or falling. Mode 1 trades a cross only when TRIX is already on the trade's side of zero (late but confirmed). Mode 2 trades only the early crosses, BUY while TRIX is still below zero and SELL while it is still above (the turn of a pullback). Same period, same settings:
- EURUSD H1, $10,000: off (the default), net +742.63, worst dip 785.18 USD (7.70%), 300 trades, gross won / gross lost 3.24. Mode 1, net +562.50, worst dip 785.18 USD (7.75%), 200 trades, ratio 2.81. Mode 2, net +263.23, worst dip 63.14 USD (0.63%), 135 trades, ratio 4.07.
- XAUUSD D1, $10,000: off, net +12.02, worst dip 23.33 USD, 4 trades. Mode 1, no trade at all. Mode 2, net +12.02, worst dip 23.33 USD, 4 trades.
The honest trade-off: on this period mode 2 cut the worst EURUSD dip from 785.18 to 63.14 USD and lifted the won/lost ratio from 3.24 to 4.07, but it took less than half the trades and about a third of the net result. Mode 1 made things worse here. We ship the guard off so the default keeps the full trade count; if a small worst dip matters more to you than the net figure, set InpTXZeroSide to 2 and compare on your own broker.
Why TRIX
A grid needs one clean starting gun, then it needs the engine to work. TRIX is a good gun for three reasons. It is built from closes only, so it means the same on every broker. Triple smoothing removes short noise, so a single spike candle does not fire it. And its formula is published with two settings, so you can check every arrow yourself. The honest costs: a triple average turns late after a sharp reversal, and a long one-way trend holds the book open. The Range Guard, the trend filter, the signal gap and the optional Zero Side Guard are there for exactly that.
One cycle, step by step
1. Smooth. On each new bar the EA updates EMA 15 of the close, EMA 15 of that, and EMA 15 again.
2. TRIX. The percent change of the third EMA from the bar before, and its EMA 9 signal line.
3. Cross. In the default mode TRIX must finish on the other side of its signal line from the bar before. In slope mode TRIX itself must turn up (BUY) or down (SELL).
4. Zero Side Guard. Off by default. Mode 1 or 2 as described above.
5. Stretch Guard. Off by default. When set, TRIX may sit at most N TRIX points from its signal line on the signal bar.
6. Side Hold, Slope Confirm, Cool Down, Body Guard. All off by default: TRIX on the old side for N bars, signal line moving the trade's way over N bars, no other cross in the N bars before, and a candle body at least N% of its range.
7. Range Guard. The last 20 bars must span at least 5 ATR, so tight boxes are skipped.
8. Trend filter. By default the close must be on the matching side of the EMA 200. It can also fade that side, or be switched off.
9. Timing. Accepted signals are kept apart by a gap of bars, and a signal may wait a few bars if the level cannot be placed at once.
10. Ladder. Levels follow ATR or fixed points, with a floor, a ceiling and an optional freeze. BUY and SELL baskets can run together or alone.
11. Banking. Groups of oldest and newest orders close when their joint result, after swap and commission, clears the target. If the oldest order is too heavy, a slice of it is closed instead.
12. Safety checks. A closure that would reopen a level at once is blocked, each leg is confirmed in deal history, failed legs are retried, and a plan is dropped if the book changed before sending.
13. Hedge cycle, optional: off by default and not exercised in our tests; when on, it holds a balanced pair on a chosen symbol and retires it in equal slices, paid by a small surcharge on closures the grid already makes.
The panel
The panel sits on the left, so the right side and the price scale stay clear. It lists symbol, magic number, a status pill, grid mode, lot step, spacing, banked result, the book, each side's closing plan and the order table. Two rows belong to the signal, and every short code on them is spelled out here:
- TRIX row: 15/9 = TRIX and signal periods, 0.0123 = TRIX on the last closed bar in percent, ABOVE or BELOW = TRIX against its signal line, UP or DN = TRIX rising or falling, ev 5b = the last cross was 5 bars ago.
- TX GUARDS row: SH 4/3 = Side Hold count against bars required (off when not used), ZS 2+ = Zero Side mode and the side of zero TRIX is on (off when not used), GAP 0.004 = TRIX-to-signal distance with OK, HOLD or off, SL UP/DN = signal line slope for Slope Confirm, R 6.3 OK = Range Guard width in ATR with its state, CD 3 = Cool Down bars, BD 55 OK = candle body % against Body Guard, EMA UP/DN = side of the EMA 200.
On the live chart every cross of the last 150 bars is marked: a small arrow when accepted, a grey dot when a guard refused it. Buttons switch Armed / Scan only, Pause / Resume, chart marks and slicing. The Hedge Vault card docks under the main panel; with the hedge off it stays hidden. Nothing is drawn in a non-visual backtest.
Limits you control
No setting closes the book for you; limits only stop new levels.
Each order passes a free margin check with a safety buffer before it is sent.
Caps on levels per grid, orders per side and lot per order keep the ladder finite. MinMarginLevelPercent and MaxAccountRiskPercent start at off; set them for your own account.
An optional margin-level timeframe safety moves the signal and spacing to a higher timeframe as margin falls. It is off by default and was not exercised in our tests.
Copies are kept apart by symbol and magic number.
Scan only shows every decision without sending a single order.
Who this is for
Traders who like momentum oscillators but hate a signal that flips on one candle; who are happy with many small closures; who prefer an EA that trades with the main trend; and who will size lots to their balance.
Who this is NOT for
- Anyone who needs a stop loss on every order. This grid has none by design.
- Anyone expecting a fixed monthly return or a fast doubling. The tested result above is modest, and it is the honest one.
- Accounts below the minimum-deposit line above.
- Small accounts running large lots unattended. A long one-way trend can hold the book open for weeks.
- Traders who want a trade on every candle. The filters keep it quiet on purpose, and on daily gold it may wait months between entries.
- Traders who want a ready-made gold system. Gold was tested only on D1.
- Traders who will not test first.
Common questions
Does it repaint? Accepted signals, chart marks and both panel rows use finished bars only.
Is it the classic TRIX? Yes: E1 = EMA(close, 15), E2 = EMA(E1, 15), E3 = EMA(E2, 15), TRIX = 100 x (E3 - E3[1]) / E3[1], signal = EMA(TRIX, 9).
What do the periods do? A longer TRIX period filters longer swings, so crosses are rarer and later; a longer signal period does the same for the cross. Only 15 and 9 were backtested here.
Cross or slope mode? Cross mode waits for TRIX to close through its signal line. Slope mode reacts when TRIX itself turns; it was not backtested here.
What did Zero Side Guard change? Mode 2 cut the EURUSD worst dip from 785.18 to 63.14 USD and the trades from 300 to 135; mode 1 made the result worse. Details above.
Why does it sometimes not trade for days? The Range Guard, the EMA side and the gap between signals all wait for a clear move. That is by design.
Which markets were tested? EURUSD H1 and XAUUSD D1. Everything else is for you to test.
How much should I start with? At least $8,000 for EURUSD H1 at the default first lot, $1,000 for XAUUSD D1, more if you raise the lots.
What should I change first? InpTXZeroSide, then InpTXRangeMinATR, then InpTXPeriod. One change at a time, and look at drawdown next to net result.
Netting accounts? Our tests ran on a netting demo account; hedging accounts were not tested separately.
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 (9786410).
GridOrderComment - text on grid orders (HTWV).
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).
Closure 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 - gain 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 (9786411).
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 TRIX 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).
Hutson TRIX
InpTXPeriod - TRIX period: bars of each of the three EMAs of close (15).
InpTXSignal - signal line: EMA period applied to TRIX (9).
InpTXZeroSide - Zero Side Guard: 1 trend side of zero only, 2 early side of zero only (0 off by default; 1 and 2 tested, see above).
InpTXBodyPct - Body Guard: signal candle body must be at least this % of its high-low range (0 off).
InpTXMode - 0 TRIX crosses its signal line, 1 TRIX slope turns (0).
InpTXPrevBars - Side Hold: bars TRIX must have stayed on the old side before a cross counts (0 off).
InpTXCoolBars - Cool Down: a cross is refused if another cross came within this many bars before it (0 off).
InpTXSlopeBars - Slope Confirm: the signal line must have moved in the signal direction over this many bars (0 off).
InpTXMaxGap - Stretch Guard: largest TRIX-to-signal distance on the signal bar, in TRIX points (0 off).
InpTXRangeMinATR - Range Guard: least window width in ATR (5; 0 off).
InpTXRangeBars - Range Guard: window length in bars (20).
InpTXATRPeriod - ATR length for the Range Guard (14).
InpTXTrendFilter - 1 with the EMA side, 2 against it, 0 off (1).
InpTXTrendMAPeriod - trend EMA length (200).
InpShowSignalArrows - arrow where a cycle armed (on).
InpShowTXOnChart - past TRIX crosses 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).
Risk, plainly
Grid trading is risky. It 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 and a heavy loss. TRIX is built from past closes and cannot see the next bar; a smooth momentum line is not a prediction. No result is promised. Pick lots that survive a bad run, test on your own broker, and only risk money you can afford to lose. No DLLs or extra files are needed.
Tested it in the Strategy Tester or on a live account? A short, honest review helps the next trader: tell us the symbol, the timeframe and which Zero Side mode you used, what worked and what did not. Critical reviews are as welcome as good ones; they shape the next release.
