Siepman Whirlwind EA
- 专家
- 版本: 3.42
- 激活: 5
Vortex Indicator grid trading for traders who want the first grid level to open when a new trend has actually taken over, not when price merely twitches. One promise: no grid starts until the Vortex Indicator of Etienne Botes and Douglas Siepman shows the up-pull (VI+) overtaking the down-pull (VI-), or the reverse, on a finished candle and in the direction of the long trend. Mechanism: VI+ and VI- computed inside the EA from finished candles, their cross, an EMA 200 trend filter and a Range Guard, then an ATR-spaced grid that banks small closures.
Put simply, Siepman Whirlwind EA is a Vortex Indicator grid EA for MetaTrader 5, a trend-takeover expert advisor: when the upward pull of the last 14 candles becomes stronger than the downward pull while the close is above the EMA 200, it buys; the mirror image sells.
Where the name comes from: Botes and Siepman built the indicator from Viktor Schauberger's notes on how water spins in a whirlpool, two currents turning against each other until one wins. On a chart the two currents are VI+ and VI-, and the moment one overtakes the other is the trade.
How it differs from the ADX you know: the ADX tells you how strong a trend is but needs a second pair of lines to tell you its direction, and it is smoothed with long averages that make it late. The Vortex uses plain sums over 14 candles, so its two lines show strength and direction at once and they cross sooner.
Which side it takes, in one line: VI+ crossing above VI- arms a BUY, VI+ crossing below VI- arms a SELL, and only when the close sits on the trade's side of the EMA 200.
Its known weak spot, and what covers it: in a sideways market VI+ and VI- wind around each other and cross again and again, each cross a false start. The default Range Guard skips quiet boxes, the EMA 200 filter only accepts crosses in the trend direction, and the new Lead Guard can ask that the winning line actually stands above 1.00 before a grid starts.
Why it costs less: the grid engine, the safety fixes and the panel are the very same code as our full grid EAs; the difference is one focused signal and nothing stacked on top.
The price gap in plain numbers: our full grid EAs sit around $213 to $249; this one is $67. The lighter part is the signal (one indicator, 14 signal inputs, hedge cycle off by default), not the money handling.
Tested on: EURUSD H1, $10,000, default inputs, 2025.01.01 to 2026.09.30 (1 minute OHLC, netting demo): net +1,370.38, maximal equity drawdown 346.68 USD (3.35%), 565 trades, 389 of 565 won, profit factor 3.65, largest single losing trade -20.58, no stop-out, no margin refusal. 565 trades in about 91 weeks is roughly 6 a week.
Try it free first: open Siepman Whirlwind EA in the MetaTrader 5 Strategy Tester, visual mode on, default inputs, EURUSD H1. Every cross it takes gets an arrow on the candle; on a live chart every cross a guard refused shows as a grey dot.
The one input to touch first, and which way: InpVTXPeriod. Raise it from 14 to 21 for fewer, steadier crosses; lower it to 10 for more, earlier ones. Change one thing at a time and compare drawdown, not only net result.
The trade lifecycle in plain verbs. It looks at the last 14 finished candles, measures how far each high reached above the previous low (up-pull) and each low reached below the previous high (down-pull), divides both sums by the summed true range, waits for VI+ and VI- to cross, checks the EMA 200 agrees, opens the first level, spaces the next ones by ATR, and banks groups of orders once 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.
----------
WHAT THE VORTEX MEASURES, IN CANDLE WORDS
Take two neighbouring candles. If today's high is far above yesterday's low, buyers pulled hard: that distance is the up-pull. If today's low is far below yesterday's high, sellers pulled hard: that distance is the down-pull. Add each pull over 14 candles and divide by the true range of those candles, and you get two lines that hover around 1.00. The one on top is the current that is winning.
- VM+ = |high - previous low|, VM- = |low - previous high|,
- TR = true range: the larger of high and previous close, minus the smaller of low and previous close,
- VI+ = sum of VM+ over 14 candles / sum of TR over 14 candles,
- VI- = sum of VM- over 14 candles / sum of TR over 14 candles,
- a line above 1.00 means that side pulled further than the candles' own range: a real current, not drift.
A worked cross: on a finished bar VI+ reads 0.97 and VI- 1.02; on the next finished bar VI+ reads 1.06 and VI- 0.93, so VI+ crossed above VI-, and a BUY is armed if the close is above the EMA 200. With the Lead Guard set to 0.02 it also passes, because VI+ stands 0.06 above 1.00. Everything is computed inside the EA from finished bars: no indicator file, no DLL, no web request.
Five facts before you start
- Entry: the finished bar where VI+ crosses VI- (above for BUY, below for SELL). Accepted signals do not repaint.
- Side: in the default follow mode the EA trades with the cross; a second mode fades it.
- The default trend filter only lets a cross through when the close sits on the matching side of the EMA 200.
- A Range Guard skips quiet boxes where 20 bars span less than 5 ATR, so in tight flat ranges expect fewer trades.
- New this build: a Lead Guard that can ask the winning Vortex line to stand a set amount above 1.00 on the signal bar, so a cross where both lines sag below 1.00 (no real current) cannot arm a grid. Its live value is on the panel. It ships OFF and was not backtested ON.
----------
Start here (5 minutes)
1. Put it on EURUSD H1 and leave every input at its default.
2. Switch RunMode to Scan only for the first session. The panel shows each plan and sends nothing.
3. Watch the arrows and grey dots: they show which past crosses the guards took or refused.
4. When the plans make sense to you, press ARMED on the panel.
5. Repeat the tester run below on your own broker's data before real money; spread, swap and commission differ between brokers. Running more than one chart? Give each copy its own EAMagicNumber and HedgeMagicNumber.
Minimum deposit: on EURUSD H1 the worst equity drawdown was 346.68 USD on 10,000 at default lots, so start with at least $2,500 at default lots and size up only with the balance. Larger lots need proportionally more, and a longer trend than our test period can dig deeper.
----------
Reproduce our numbers
Strategy Tester, default inputs, 1 minute OHLC, leverage 1:100, 2025.01.01 to 2026.09.30, one broker's netting demo data. Same settings and period, and you should land close to these:
- EURUSD H1, $10,000: net +1,370.38, gross profit 1,887.34, gross loss -516.96, profit factor 3.65, maximal equity drawdown 346.68 (3.35%), maximal balance drawdown 20.58 (0.20%), 565 trades (289 short, 68.17% won; 276 long, 69.57% won). No stop-out, no margin refusal.
- EURUSD H1, $1,000,000: net +1,370.38, maximal equity drawdown 346.68 (0.03%), 565 trades. No stop-out, no margin refusal.
- XAUUSD D1, $10,000: net +34.15, maximal equity drawdown 21.65 (0.22%), 9 trades. No stop-out, no margin refusal.
- XAUUSD D1, $1,000,000: net +34.15, maximal equity drawdown 21.65 (0.00%), 9 trades. No stop-out, no margin refusal.
9 gold trades on D1, all 9 won, is still a small sample, so treat XAUUSD D1 as barely tested.
Treat this as one past stretch, not a forecast. The equity drawdown is far larger than the balance drawdown because the grid holds losing levels open until a closure pays them off. The money drawdown is the same at both deposits because lots do not grow with the balance. Other symbols, timeframes and deposits under $10,000 were not tested. Defaults were chosen once by judgement, not optimised. These runs used a netting demo account; hedging accounts were not tested.
----------
Why the Vortex
A grid suffers most when its first level opens against a move that is just getting started. The Vortex waits for one side's pull to overtake the other over 14 candles, so the first level opens when a new current has already formed, and the EMA 200 keeps that current in line with the longer trend. The honest costs: in sideways weeks the two lines wind around each other, so some crosses fail and the grid has to work through them; a cross comes after the turn, never at the exact low or high; and a sharp spike can tip the sums for a bar or two, which is what the Range Guard, the optional Gap and Lead Guards and the gap between signals are there to calm.
----------
One cycle, step by step
1. Pulls. For each of the last 14 finished candles the up-pull |high - previous low| and down-pull |low - previous high| are measured.
2. Range. The true range of each of those candles is measured.
3. Lines. VI+ = summed up-pull / summed true range, VI- = summed down-pull / summed true range.
4. Cross. The event is the bar where VI+ crosses above VI- (BUY) or below it (SELL).
5. Mode. Mode 0 takes that side, mode 1 the opposite side.
6. Rise Guard. Optional: at least InpVTXRiseMin of the last 5 steps of the VI+ minus VI- spread must move toward the trade side (0, the default, switches it off).
7. Body Guard. Optional: the signal candle's body must be at least InpVTXBodyMin of its high-low range (0, the default, switches it off).
8. Gap Guard. Optional: VI+ and VI- must sit at least InpVTXGapMin apart on the signal bar (0, the default, switches it off).
9. Lead Guard. Optional: the winning line must stand at least InpVTXLeadMin above 1.00 on the signal bar (0, the default, switches it off).
10. Stretch Guard. Optional: the close must have moved at least InpVTXStretchMin ATR over the momentum bars (0 switches it off).
11. Range Guard. The last 20 bars must span at least 5 ATR, so tight boxes are skipped.
12. 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.
13. 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 straight away.
14. 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.
15. 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.
16. Safety checks. A closure that would reopen a level at once is blocked, every leg is confirmed in deal history, failed legs are retried, and a plan is dropped if the book changed before sending.
17. 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, keeping the right side and the price scale free. It shows 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:
- VORTEX GATE: the period (14), + = VI+ and - = VI- of the last finished bar, BULL when VI+ is on top, BEAR when VI- is, UP or DN for the spread between them widening or narrowing toward the bulls, and x 12b = 12 bars since the last cross.
- RISE GUARD: B or S for the side the Vortex points to, FOL (follow) or FADE for the mode, 3/5 = three of the last five spread steps moved to that side, then G = Gap Guard distance between VI+ and VI-, L = Lead Guard: how far the winning line stands above 1.00, R = Range Guard width in ATR, B = Body Guard body share of the last candle (0.00 to 1.00), S = Stretch Guard move in ATR, each followed by OPEN (passes), HOLD (blocks) or off, and EMA UP or DN for the trend side.
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 and stays hidden while the hedge is off. Nothing is drawn in a non-visual backtest.
----------
Limits you control
No setting closes the book for you; limits only stop new levels.
Every 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 to join a trend once it has shown itself, who want a grid that starts only after one side's pull has overtaken the other, who want the core engine at an entry price, and who 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. The tested result above is one past period.
- Small accounts running large lots unattended. A long one-way move against the book can keep it open for weeks; the tested equity drawdown reached about 3.4% of $10,000 and a harder market can go further.
- Traders who will not test first. If you skip the Strategy Tester on your own broker, this is not the right tool for you.
----------
Common questions
Does it repaint? Accepted signals, chart marks and both panel rows use finished bars only.
Is it the classic Vortex Indicator? Yes: Botes and Siepman's VI+ and VI- over 14 candles, divided by the summed true range, exactly as published in 2010. The trend filter and the guards are added by this EA.
Why not the ADX? The ADX needs long smoothing and a second pair of lines for direction; the Vortex gives direction and strength in two plain lines and crosses sooner.
Why does it trade more than our oscillator EAs? A Vortex cross happens whenever the balance of pull flips, not only after an extreme, so it fires more often; the Range Guard and the EMA 200 already halve that, and the Gap and Lead Guards can cut it further.
Follow mode or fade mode? Follow trades with the cross, fade against it. Fade was not backtested here.
Which markets were tested? EURUSD H1 and XAUUSD D1. Everything else is yours to test.
What should I change first? InpVTXPeriod (higher for fewer crosses), then InpVTXRangeMinATR, then InpVTXLeadMin, then InpVTXGapMin. One change at a time, and read drawdown and trade count next to net result.
Netting accounts? Yes, all four test runs above were on a netting demo account; hedging accounts were not tested.
----------
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 (9781680).
GridOrderComment - text on grid orders (SPWW).
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 - ties the starting lot to balance (off).
AutoLotBaseBalance - balance that matches the starting lot (1000).
AutoLotAllowDecrease - lets auto lot drop 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 - smallest spacing in points (50; 0 none).
ATRMaxSpacingPts - largest 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 within 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 exceed oldest volume (on).
MinCloseVolumeRatio - required ratio of those volumes (1.5).
Target slicing
EnableTargetSlicing - allows part-closing the oldest order (on).
FragProfitWeightPower - 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 (9781681).
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 Vortex 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).
Vortex Indicator
InpVTXPeriod - candles summed for VI+, VI- and the true range (14).
InpVTXMode - 0 follow, trade with the cross; 1 fade, trade against it (0).
InpVTXGapMin - Gap Guard: least distance between VI+ and VI- on the signal bar, e.g. 0.05 (0 = off, the default; OPEN/HOLD on the panel).
InpVTXLeadMin - Lead Guard: least amount the winning line stands above 1.00 on the signal bar, e.g. 0.02 (0 = off, the default; OPEN/HOLD on the panel).
InpVTXMomBars - bars over which the close move for the Stretch Guard is read (10).
InpVTXStretchMin - Stretch Guard: least move in ATR over the momentum bars (0 = off; OPEN/HOLD on the panel).
InpVTXRiseMin - Rise Guard: least of the last 5 VI+ minus VI- spread steps moving to the trade side (0 = off, the default; up to 5; OPEN/HOLD on the panel).
InpVTXBodyMin - Body Guard: least body share of the signal candle, 0 to 1 (0 = off, the default; OPEN/HOLD on the panel).
InpVTXRangeMinATR - Range Guard: least window width in ATR (5; 0 off).
InpVTXRangeBars - Range Guard: window length in bars (20).
InpVTXATRPeriod - ATR length for the Range Guard and the Stretch Guard (14).
InpVTXTrendFilter - 1 with the EMA side, 2 against it, 0 off (1).
InpVTXTrendMAPeriod - trend EMA length (200).
InpShowSignalArrows - arrow where a cycle armed (on).
InpShowVTXOnChart - past 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 large for the balance, end in a stop-out and a heavy loss. The Vortex is built from past candles and cannot see the next one. Nothing is promised. Choose 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.
If you have run it, an honest review of how it behaved for you, good or bad, helps the next trader decide.
