Tillson Smoothrider EA
- エキスパート
- バージョン: 3.35
- アクティベーション: 5
Tillson T3 grid EA for traders who want the first order placed on a moving average that is smooth like a slow line yet turns almost as fast as a quick one. One job: start a grid only when a closed bar crosses the T3 line (Tim Tillson, 1998) with the main trend behind it. Mechanism: T3 period 8 / volume factor 0.7 computed inside the EA from six chained EMAs, a Range Guard and an EMA 200, then an ATR-spaced grid that banks small closures.
Tillson Smoothrider EA is a T3 moving average expert advisor for MetaTrader 5, a smooth low-lag trend line grid EA. How the line is built: the close is run through six EMAs in a row (e1 to e6), and the T3 blends four of them, T3 = c1 x e6 + c2 x e5 + c3 x e4 + c4 x e3, with weights from the volume factor v = 0.7 (c1 = -0.343, c2 = 2.499, c3 = -6.069, c4 = 4.913). The weights cancel most of the lag that six EMAs would add, so the line stays smooth without trailing far behind price.
Tested on: EURUSD H1, $10,000, default inputs, 2025.01.01 to 2026.09.30: net +1,265.07, maximal equity drawdown 248.61 (2.31%), 629 trades, profit factor 3.81, no stop-out, no margin refusal.
What a normal week looks like: 629 trades over about 91 weeks is roughly 7 closed trades a week on EURUSD H1, with whole quiet days in between. Fewer than that is the filters working, not a fault.
Minimum deposit: EURUSD H1 money drawdown in our test was 248.61 at the default 0.01 first lot, so start with at least $2,000; XAUUSD D1 drew down 9.50 on 10 trades, start with at least $500. These are floors from one test, not a safe zone; deposits below $10,000 were not run.
Try it free first: load Tillson Smoothrider 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 the closes six times into one T3 line, waits for a closed bar to cross that line 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.
A SMOOTHER RIDE
Every moving average trades smoothness for speed. Stack EMAs to get a calm line and it falls behind; shorten them to keep up and it shakes. In 1998 Tim Tillson published a way around that trade-off in Technical Analysis of Stocks and Commodities: build a "generalised DEMA" that overshoots a little to cancel lag, then apply it three times. Written out, that is six EMAs and four fixed weights. The volume factor sets how hard the line leans forward: 0 gives a plain triple EMA, 0.7 is Tillson's own choice, 1 is the sharpest. The result rides through single spiky candles but bends quickly when price really changes side, which is exactly what a grid start needs.
Five things to know first
- Entry: a closed bar finishes above the T3 line after the previous one finished at or below it (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: period 8, volume factor 0.7. Those are Tillson's classic settings, so a T3 indicator with 8 / 0.7 on your chart shows the same line (tiny differences in the first bars come from how each tool seeds its EMAs). No indicator file, no DLL, no web request.
- A Range Guard skips quiet boxes and an EMA 200 filter keeps entries on the side of the main trend. Stretch Guard and Slope Confirm from our earlier releases are there too, both off by default.
- New Side Hold is built in and ships switched OFF: before a cross counts, price must have closed on the other side of the line for N bars in a row. We tested it on and 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 T3 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
Strategy Tester, default inputs, 1 minute OHLC, 2025.01.01 to 2026.09.30, one broker's demo data. Same settings, same period, and you should land close to these:
- EURUSD H1, $10,000: net +1,265.07 (gross +1,715.53 / -450.46), maximal equity drawdown 248.61 (2.31%), 629 trades (short 69.82% won, long 66.10% won), profit factor 3.81. No stop-out, no margin refusal.
- EURUSD H1, $1,000,000: net +1,265.07, maximal equity drawdown 248.61 (0.02%), 629 trades. No stop-out, no margin refusal.
- XAUUSD D1, $10,000: net +27.81, maximal equity drawdown 9.50 (0.09%), 10 trades, all long, no losing closed trade. No stop-out, no margin refusal.
- XAUUSD D1, $1,000,000: net +27.81, maximal equity drawdown 9.50 (0.00%), 10 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. Ten gold trades in 21 months prove nothing about gold. Netting accounts were not verified separately.
Side Hold: on or off, in numbers
The idea: when price sits right on a flat line it can close above, below and above again in three bars. Each flip is a "cross", and each one could start a grid. Side Hold accepts a BUY only if the previous N closes all sat at or below the line (SELL: at or above), so a cross must come out of a real stay on the other side. We tested N = 3 against off, same period, same settings:
- EURUSD H1, $10,000: off (the default), net +1,265.07, drawdown 248.61 (2.31%), 629 trades, profit factor 3.81. On, net +1,047.47, drawdown 248.61 (2.33%), 537 trades, profit factor 3.69.
- XAUUSD D1, $10,000: off, net +27.81, drawdown 9.50, 10 trades. On, net +13.94, drawdown 9.50, 4 trades.
What did the guard refuse? 92 of 629 EURUSD trades and 6 of 10 gold trades. Here is the honest part: on this period it did not lower the worst drawdown at all, because that drawdown came from one long trend after a clean, well-held cross; it only removed trades, and most of those trades were winners. So it ships off. It is still worth a test on a choppy symbol or a lower timeframe, where quick flips around a flat line are common: set InpT3PrevBars to 3 and compare on your own broker. Expect fewer trades with it on.
Why the T3
A grid needs one clean starting gun, then it needs the engine to work. The T3 is a good gun for three reasons. It is built from closes only, so it means the same on every broker. Its six-EMA blend gives a smooth line that still turns early. And its two settings are published and easy to reproduce on any chart, so you can check every arrow yourself. The honest costs: in a sideways market price crosses any line often, and a long one-way trend holds the book open. The Range Guard, the trend filter, the signal gap and the optional Side Hold are there for exactly that.
One cycle, step by step
1. Smooth. On each new bar the EA updates six EMAs of the close (period 8) and blends them into the T3 value with the volume factor 0.7.
2. Cross. In the default mode a closed bar must finish on the other side of the line from the bar before it. In slope mode the line itself must turn up (BUY) or down (SELL).
3. Side Hold. Off by default. When set, the closes before the cross must have stayed on the old side for N bars.
4. Stretch Guard. Off by default. When set, the signal close may sit at most that many ATR from the line.
5. Slope Confirm. Off by default. When set, the line must have moved in the signal direction over the last N bars.
6. Range Guard. The last 20 bars must span at least 5 ATR, so tight boxes are skipped.
7. 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.
8. 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.
9. 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.
10. 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.
11. 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.
12. 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 word on them is spelled out here:
- TILLSON T3 row: the settings (8 v0.70), ABOVE or BELOW = where the last closed bar finished against the line, UP or DN = whether the line is rising or falling, ev 5b = the last cross was 5 bars ago.
- T3 GUARDS row: SH 4/3 = Side Hold, closes in a row on the current side out of the bars required (off when not used), GAP 0.42 = close-to-line distance in ATR with OK, HOLD or off, SL UP/DN = line slope for Slope Confirm (off when not used), R 6.3 OK = Range Guard width in ATR with its state, 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 moving-average entries but are tired of choosing between lag and noise; 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 T3? Yes: six EMAs of the close with period N, blended as c1 x e6 + c2 x e5 + c3 x e4 + c4 x e3, where c1 = -v^3, c2 = 3v^2 + 3v^3, c3 = -6v^2 - 3v - 3v^3 and c4 = 1 + 3v + v^3 + 3v^2. Defaults N 8, v 0.7.
What do period and volume factor do? A longer period makes every EMA slower, so the line is calmer and later. A higher volume factor pushes the line forward (less lag, a little overshoot); 0 turns it into a plain triple EMA. Only 8 / 0.7 was backtested here.
Cross or slope mode? Cross mode waits for price to close through the line. Slope mode reacts when the line itself turns; it was not backtested here. Side Hold only applies to cross mode.
What did Side Hold refuse? 92 of 629 EURUSD trades and 6 of 10 gold trades at 3 bars, without lowering the worst drawdown on this period. That is why it ships off. 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 $2,000 for EURUSD H1 at the default first lot, $500 for XAUUSD D1, more if you raise the lots.
What should I change first? InpT3RangeMinATR, then InpT3PrevBars, then InpT3Period. One change at a time, and look at drawdown next to net result.
Netting accounts? A separate margin cap exists for them, but netting behaviour is not separately 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 (9781750).
GridOrderComment - text on grid orders (TLSR).
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 (9776331).
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 T3 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).
Tillson T3
InpT3Period - period of each of the six chained EMAs (8).
InpT3VFactor - volume factor 0 to 1; higher leans the line toward price, 0 is a plain triple EMA (0.7).
InpT3Mode - 0 closed bar crosses the line, 1 line slope turns (0).
InpT3PrevBars - Side Hold: closes in a row on the old side before a cross counts (0 off by default; 3 tested, see above).
InpT3SlopeBars - Slope Confirm: the line must have moved in the signal direction over this many bars (0 off).
InpT3MaxGapATR - Stretch Guard: largest close-to-line distance on the signal bar in ATR (0 off).
InpT3RangeMinATR - Range Guard: least window width in ATR (5; 0 off).
InpT3RangeBars - Range Guard: window length in bars (20).
InpT3ATRPeriod - ATR length for the Range and Stretch Guards (14).
InpT3TrendFilter - 1 with the EMA side, 2 against it, 0 off (1).
InpT3TrendMAPeriod - trend EMA length (200).
InpShowSignalArrows - arrow where a cycle armed (on).
InpShowT3OnChart - past T3 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. The T3 is built from past closes and cannot see the next bar; a smoother, faster line is still not a forecast. No profit 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.
Ran it in the tester or on a live account? A short, honest review helps the next trader decide: which symbol, which timeframe, what went well and what did not. Critical reviews are just as welcome as good ones and help us improve the next release.
