OFS F4 WaveFade
A fully automated pullback bot for fast intraday charts. It waits for an impulse, rests a LIMIT order in the pullback and manages the trade with a fixed stop and a target measured in R from the real fill - session window, flat before the daily break, daily guards, and a built-in auto backtest that replays the loaded history and finds the best setup on the very chart you give it. Four shipped setups, all both-side: NT1 (default), WR1, PF1 and VIP.
| Current version | 1.9.2 · 2026-09-08 |
| Compatibility | ATAS 8.0.14+ and ATAS X 8.0.14+ |
| Requirements | Windows 10/11 with classic ATAS or ATAS X, or macOS Tahoe and newer on Apple Silicon with ATAS X (the platform brings its own .NET 10 runtime), a chart with plain OHLC bars (NO cluster or fo |
| Updates | All future updates included |
| Delivery | ATAS catalog (automatic) + download in your account |
Almost ready for your charts
OFS F4 WaveFade is built and measured — it is just not in the shop yet, so there is no price and no Add to cart to look for on this page.
Everything you see here is already true — the rules it follows, the numbers it produced and the warnings that come with them. Have a read now and decide later: the moment it goes on sale, the license options and the free trial appear right here.
Want to hear the day it lands?
Release news only. No trading tips, no spam — unsubscribe in one click.
Description
OFS F4 WaveFade trades the pullback after an impulse. It does not chase price and it does not fade it: it lets a wave form, waits for the market to come back part of the way, and takes the continuation with a resting limit order - the market has to come to the order, never the other way round.
What you get
Every entry is a limit order that rests in the market and is filled by a touch, exactly as the virtual model counts it; the bot never chases price - the only market order it sends follows a touched limit or target the exchange left unfilled, within a second. Every trade carries a fixed stop and the model's target, a fraction of the risk, so the account exits where the virtual model exits. Stop first, then target, linked so that the other is cancelled when one fills. One position at a time, a session window, flat before the daily break, an optional daily loss cap and a cap on losing trades per day. A manual move of the stop or the target is respected; a manual close is recognised and marked on the chart.
How to read the chart and the panel
Every trade of the loaded history is drawn: the wave it was built on, the entry arrow, the entry line with the trade duration, the stop and target lines with SL and TP labels, and a dot at the exit - green when the trade ended in profit, red when it lost, with EOD or MANUAL written next to it when the trade did not end on its own bracket. The wave the bot is working on right now is drawn live as a HIGH and a LOW line to the last open candle. While the autopilot has a live order, the resting limit is drawn from the bar it was placed on with its price, side and quantity.
The panel has five rows. TRADING is the verdict: hunting, limit resting, in position, quiet until the window opens, autopilot OFF, or blocked with the reason named. TRADES sums the drawn history: trades, win rate, net ticks after costs and the profit factor. TODAY shows today's trades, the virtual result in ticks and the live position or the resting limit. WAVE tells what the model is following right now. DATA shows the last bar time, the chart timeframe and PRINTS - off, or how many days of the loaded history already carry the real order of prices inside each bar (PRINTS 12/20 days while loading, then 20/20 days) - and warns when the bar time does not fit your Time Zone. Under the title a slim 24-hour session ribbon shows the window and a coloured now-marker. The bar of the panel carries the four shipped setups NT1, WR1, PF1 and VIP, the NET, WR and PF buttons for setups saved from the auto backtest, TUNE and ON/OFF.
TUNE and the auto backtest
TUNE lists every strategy value as a row of buttons; a click replays the whole loaded history with the new value at once and the statistics update - trades, win rate, trading days, profit factor, gross profit, net ticks, max drawdown, worst trade, worst day, worst losing run, long and short trades with their win rates, all per contract after costs of 2 ticks per trade. Press GRID and every row becomes an axis of the auto backtest: click the values you want to try (blue = in the run) and press RUN. The run replays every combination on all CPU cores but two and keeps three winners - the highest net, the highest win rate and the highest profit factor - with a MIN TRADES floor you can change even after the run. SAVE puts a winner on the panel bar, so the same setup can be applied with one click on a different date or a different chart.
Backtest from prints
A bar's high and low cannot tell whether the price reached the target before or after the entry, and a bar backtest counts such a target as paid - for a scalping setup with the target a few ticks from the entry that is most of its profit. Since 1.9.0 the indicator can ask the platform for the trades of the loaded days, build the sequence of prices inside every bar - time, tick, volume or range bars alike - and replay the model with it: switch on Backtest From Prints in the Auto Backtest group (off by default, because the platform is busy for 10 to 60 seconds per day while it serves the request) and choose Prints History Days (default 20, 0 = every day on the chart). TRADES, TUNE, the auto backtest and SELF-CHECK then count a fill, a target and a stop in the order the exchange would; the DATA row shows PRINTS n/N days while it loads and the numbers refresh when it is done. With it off the replay knows only the bar's high and low.
The four shipped setups
All four trade both sides and all were chosen from a full grid of 737 280 combinations replayed on the whole tape of eight MNQ contracts, 15-second bars, 12 September 2024 to 4 September 2026 (511 trading days), 1 contract, after costs. Re-measured with the fill rule of 1.8.0 (a resting limit is filled by a touch, the target on the entry bar counted): NT1 (default) 37 933 trades, 84.3 % win rate, +384 508 ticks per contract, PF 2.41, max drawdown 1 271 ticks, not a single losing week or month. WR1, the highest win rate of the four: 18 572 trades, 93.3 % win rate, PF 2.91, +106 536 ticks, max drawdown 731 ticks, no losing week. PF1: 14 644 trades, PF 2.78, 92.6 % win rate, +115 240 ticks, max drawdown 578 ticks, one losing week out of 104. VIP, the highest net: 52 302 trades, 77.6 % win rate, +416 684 ticks, PF 1.59, max drawdown 2 683 ticks, one losing week out of 104. Those figures were measured on bar highs and lows, which count the target on the entry bar as paid even when the price reached it before the entry; they are a ceiling that the real order of prices does not confirm. Measured with the order of prices inside every bar (1.9.0) on MNQU6, 11 June to 7 September 2026 (64 trading days), the VIP setup makes 10 188 trades, 64.6 % win rate, -30 958 ticks after costs, PF 0.86 - against 11 001 trades, 77.4 %, +91 785 ticks, PF 1.60 on bars for the same days. Your chart shows the print-based numbers for the history you load; judge every setup by them, not by the ceiling. Two TUNE rows, FILL and TP BAR, replay every setup under stricter assumptions still.
What it needs
Plain OHLC bars - no cluster data, no external feed, no subscription. Measured on a 15-second MNQ chart; the chart and the instrument are your choice and the indicator blocks neither. One DLL runs in classic ATAS, ATAS X for Windows and ATAS X for macOS. Alerts, Telegram and the diagnostic log are off by default.
Installation guide
2. Open or fully restart ATAS so the automatically delivered indicator becomes available in the indicator catalogue. Whenever an update is released through ATAS, fully restart the platform; ATAS downloads and loads the new version automatically.
3. Only if the OrderFlowSmith and ATAS e-mails are different, download OFS.F4WaveFade.dll from your OrderFlowSmith account and install it manually: %APPDATA%\ATAS\Indicators for classic ATAS, %APPDATA%\ATAS X\Indicators for ATAS X on Windows, or ~/Library/Application Support/ATAS/Indicators for ATAS X on macOS - or, simplest on both systems, click Add custom indicator at the bottom left of the indicators window and pick the DLL. ATAS X loads a new or replaced file at once; classic ATAS needs a full restart. After every update, download and replace the DLL the same way. If Windows blocked the file, open DLL Properties and select Unblock.
4. Add OFS F4 WaveFade to a 15-SECOND MNQ chart with a connected trading account. No cluster data is needed. Load a few weeks of history so the drawn backtest shows a meaningful sample.
5. Open settings, group 01 - License, and paste your key from orderflowsmith.com.
6. Group 05 - Session & Time: pick your Time Zone (UTC is the default; the list includes zones with summer time). It only changes how times are shown and entered - the strategy is anchored to the market's own hours. If the DATA row on the panel says 'check Time Zone', the bar time does not fit the chosen zone.
7. Look at the chart. Every trade the strategy would have taken is drawn with its wave, entry, stop, target and outcome. Open TUNE for the statistics of the loaded history and try the four shipped setups: NT1 (default), WR1, PF1 and VIP.
8. Before you switch ON: in the Chart Trader panel (classic ATAS and ATAS X) turn the ATAS SL/TP OFF - the autopilot places its own stop and target on every fill, and with the platform SL/TP on ATAS would attach a second stop and target from the panel settings to the same fill. When you are ready: set your quantity (any number - the position is never split; default 1) and click ON on the panel. The indicator then rests the entry limit, manages it, places the stop and the target on the real fill, cancels a limit the price never reaches and flattens before the daily break.
9. OPTIONAL - Telegram notifications: in Telegram open @BotFather, send /newbot and paste the token into the Telegram group of the settings; write any message to your new bot, click Get Chat ID Now and then Send Test Message. Real entries, exits and execution errors then arrive on your phone; everything is off by default.
Changelog — version 1.9.2
1.9.1 - PRINTS LOADING IS OFF BY DEFAULT AND BOUNDED. In 1.9.0 the indicator asked the platform for every day on the chart as soon as the history was loaded; while the platform serves such a request the chart does not respond for 10 to 60 seconds per day, so a two-month chart froze for minutes and a timeframe change hung (8 September, 22:30). Now Backtest From Prints is off by default, the new setting Prints History Days (default 20, 0 = all) bounds the work, requests are spaced by a short pause, and the loader stops at once with PRINTS error when the prints do not fit the chart bars (a tick or range chart, or a bar length it cannot read) instead of running through every day for nothing. The bar length is now read as the most common distance between bar opens. The bar-based replay remains the default view; switch prints on when you can leave the chart alone. Strategy, setups and execution unchanged.
1.9.0 - BACKTEST FROM PRINTS: THE HISTORY IS REPLAYED IN THE ORDER THE EXCHANGE SAW THE PRICES. A bar's high and low cannot tell whether the price reached the target before or after the entry; the bar backtest counted such a target as paid, and for a scalping setup with the target a few ticks from the entry that was most of its profit. After the chart history is loaded the indicator now asks the platform for the trades of every loaded day (the same channel the OFS F4 Tick Exporter uses; a few seconds per day, about 8 minutes for two months of a 15-second chart), builds the sequence of prices inside every bar and replays the model with it - TRADES, TUNE, the auto backtest and SELF-CHECK all use that order. The DATA row shows PRINTS n/N days while it loads and the numbers refresh when it is done; the new setting Backtest From Prints (Auto Backtest group, default on) turns it off. Live price sequences are now kept for the whole session in a compact form, so a replay after a settings change keeps every live bar. What it changes in the numbers: VIP on MNQU6, 11 June to 7 September 2026 (64 trading days): +91 785 ticks, 77.4 % win rate, PF 1.60 on bars against -30 958 ticks, 64.6 %, PF 0.86 with the order of prices; 62 of 64 days positive on bars, 16 of 64 with prints. The figures published for the shipped setups in 1.7.0 and 1.8.0 came from the bar replay and are a ceiling, not a result; the product texts now say so. Execution unchanged.
1.8.2 - TOUCH IS MEASURED ONLY FROM PRICES AFTER THE ORDER WAS PLACED. In 1.8.0 and 1.8.1 the touched-but-unfilled rule read the touch from the high and low of the whole forming bar, which also contains prices from BEFORE the fill: when the price came down to the entry limit from above, the bar's high was already beyond the target, and 0.8 s after the fill the target was treated as touched and unfilled, the position was closed at market, and the bar-close reconciliation re-entered at market at a worse price (8 September 09:56). Now the rule watches only the prices printed after the entry limit, its re-pricing or the stop and target were placed. Strategy, setups and numbers unchanged.
1.8.1 - PLATFORM DIALOG REMOVED, TOUCH RULE HARDENED. The platform's own check 'Are you sure? Some orders have been sent to the broker server, but the response wasn't received' is no longer requested for the bot's orders: with it on, ATAS held the entry limit back and waited for a click (8 September, 09:24 to 09:33: the limit stayed unconfirmed for eight minutes and every cancel opened another dialog). The bot never asks a human; order states are guarded by its own register, and a change or a cancel goes only to an order the broker has confirmed. The touched-but-unfilled rule now acts once per order and only on a confirmed order, and the market entry that follows a cancelled limit is sent only while the virtual model still holds or awaits that trade. Strategy, setups and numbers unchanged from 1.8.0.
1.8.0 - VIRTUAL = EXCHANGE: CLEAR RULES FOR ENTRY AND EXIT. The virtual model now treats its orders exactly the way the exchange treats the orders on your account. (1) A limit that was resting during a bar is filled by a touch of that bar, and the fill is final - a filter that closes on that bar's close no longer takes the fill away; filters decide about the next bar only. A limit placed on the close of a bar can fill from the next bar on. (2) A touched limit or target the exchange left unfilled (queue) is followed at market on the spot, within a second, instead of on the close of the bar. (3) On the live chart the model reads the order of touches inside every bar from the price sequence: the target on the entry bar counts only when the price reached it AFTER the fill, and when the stop and the target fall into the same bar, the one the price reached first counts - the same thing the resting stop and target on the account do. Replayed history, TUNE and the auto backtest know only the bar's high and low, as before; today's live bars carry their price sequence, so TUNE, SELF-CHECK and the panel agree with each other. Why: on 8 September the account made 17 trades against 13 virtual ones, 8 of them forced by the old bar-close reconciliation - the whole gap of 168 ticks. Shipped setups re-measured on the two-year tape with the new fill rule (touch fill, target on the entry bar counted): NT1 37 933 trades, +384 508 ticks, 84.3 % win rate, PF 2.41, max drawdown 1 271; WR1 18 572, +106 536, 93.3 %, PF 2.91, 731; PF1 14 644, +115 240, 92.6 %, PF 2.78, 578; VIP 52 302, +416 684, 77.6 %, PF 1.59, 2 683. Same setups, same buttons.
1.7.1 - PRODUCT TEXTS, MANUAL AND SETTING DESCRIPTIONS REWRITTEN. They now describe what the bot does and what you see on the chart and the panel, not how it decides inside. No change in behaviour; the engine is the engine of 1.6.0.
1.7.0 - FOUR SHIPPED SETUPS, ALL BOTH-SIDE: NT1 (default), WR1, PF1 and VIP, chosen from the full grid replayed on two years of MNQ tape (eight contracts, 15-second bars) with the drawdown capped at 1 000 ticks for the first three. NT1: 25 120 trades, 90.4 % win rate, +355 727 ticks, PF 4.20, max drawdown 304 ticks, no losing week or month; lower bound +146 866 ticks. WR1: 13 866 trades, 96.6 % win rate, PF 5.38, +103 941 ticks, max drawdown 308 ticks, no losing week. PF1: 9 812 trades, PF 5.96, 96.4 % win rate, +104 337 ticks, max drawdown 285 ticks, no losing week. VIP is the former NET382, the highest net of the grid that still earns on the lower bound: 41 432 trades, 81.6 % win rate, +477 122 ticks, max drawdown 1 422 ticks. WR96 is retired. DEFAULT restores NT1; a new chart starts with NT1. Button tints: VIP yellow on the panel bar and in TUNE; in the AUTO row RUN green, X red, GRID blue.
1.6.0 - WAVE VALIDATION CORRECTED. A wave that price has invalidated is now dropped at once in every state; until 1.5.2 it could survive while a filter held the entry back, and the panel showed an old high or low below or above the price. Same setups, same two years of tape: NET382 +477 122 ticks (was +381 883), max drawdown 1 422 (was 1 086); WR96 PF 8.56 (was 5.19). The auto backtest, TUNE and SELF-CHECK use the same engine, so numbers on your chart change accordingly. Also new: separate line widths for the stop and the target (Stop Line Width, Target Line Width; Bracket Line Width is now Entry Line Width).
1.5.2 - The live wave is read from the forming candle: the HIGH/LOW line and its price follow the candle tick by tick; the model itself still decides at the close of the bar.
1.5.1 - The wave the bot is working on is drawn live: a HIGH line and a LOW line from their bars to the last open candle, as long as the setup is alive; once a trade opens, the trade's own wave lines take over (Show Wave Lines).
1.5.0 - LIVE = VIRTUAL. The account is reconciled with the virtual model after every bar: it holds exactly the model's trades, nothing more and nothing less. A position the model does not hold is closed at market, a model entry the account missed is entered at market with the model's stop and target. What remains different: the price of the few market orders used to reconcile.
1.3.0 - 1.4.1 - VIRTUAL IS VIRTUAL, LIVE IS LIVE. The panel and the chart show only the pure model of the whole session, identical on every chart with the same setup, with or without an account; the account's trades are shown by ATAS. Panel texts without internal notes.
1.2.1 - 1.2.6 - Execution hardening from the first live days: the broker's position and order list decide, no bookkeeping state of the indicator can hold the bot back; quantities above 1 handled through partial fills; false 'unresolved order state' notices removed; a reminder that the ATAS SL/TP in the Chart Trader panel must be off; model-only trades dimmed on the chart.
1.2.0 - Shipped setups from the full grid of 737 280 combinations on two years of tape.
1.1.0 - Fill Rule and Target On Entry Bar: every setup can be read as a ceiling, a realistic estimate and a lower bound, in TUNE and in the auto backtest.
1.0.1 - Audit of the live order handling against the ATAS documentation; seven fixes.
1.0.0 - First full release: limit-order execution, licence, panel, TUNE, auto backtest, alerts, Telegram, manual SK/EN.
Frequently asked questions
Which chart should I use?
Can I use it on other instruments or timeframes?
What exactly is the entry?
What happens to a limit the price never reaches?
Where are the stop and the target?
Why does the backtest look better than live trading can be?
What are NET85 and WR95?
Are the statistics after costs?
How does the auto backtest work?
Does it repaint?
Can I move the stop or the target by hand?
What do Daily Loss Limit and Max Losing Trades Per Day do?
Windows or macOS?
What is written where?
What are NET382 and WR96?
What are NT1, WR1, PF1 and VIP?
Reviews
No reviews yet — be the first verified buyer to share your experience.