Thinkorswim Gap Scanner Settings
How to set up a pre-market gap scanner inside Thinkorswim (TOS) — the exact filters, thinkScript and watchlist columns day traders use to find gappers before the open.
1. Open the Stock Hacker scanner
In TOS, go to Scan → Stock Hacker. This is the screener engine. Everything you build here can be saved as a custom scan and even dropped onto a watchlist column.
2. Add the core filters
- Last between $1 and $20 — keeps the universe to liquid low/mid-priced movers.
- Volume ≥ 500,000 (or 1M+ for cleaner names).
- % Change ≥ 5% — your gap threshold.
- Average Volume (50) ≥ 300,000 — filters out illiquid traps.
- Optional: Market Cap < $2B to focus on small caps.
3. Add a thinkScript study filter for the gap
Stock Hacker's % Change uses the previous close vs. last trade — that picks up real gaps once pre-market prints. To compute the gap explicitly, add a Study filter with this thinkScript:
# Gap% vs prior close def priorClose = close(period = AggregationPeriod.DAY)[1]; def gapPct = (open - priorClose) / priorClose * 100; plot scan = gapPct >= 5;
Save as GapPctScan, then add it as a Study filter in Stock Hacker with condition is true.
4. Custom watchlist columns
Drop matches into a watchlist and add custom columns so you can size them at a glance:
- Gap % — paste the formula above as a custom column.
- Rel Vol —
volume / Average(volume, 50). - Float — TOS doesn't ship a float column; you'll need to add it manually per ticker.
5. Limitations of the TOS gap scanner
- Pre-market data in TOS only refreshes when you have a Level II feed and the scanner is open.
- Float and short interest aren't native fields — you have to enrich manually.
- Custom scans don't push alerts the moment a stock breaks a key level.
- thinkScript is powerful but a real time-sink to maintain across multiple setups.
Faster alternative: Day Trade Scanner
The same gap, RVOL and float filters are one click away — no thinkScript, no watchlist plumbing — with real-time pre-market alerts, halts and catalyst tags.