Custom Stock Scanner — Build Your Own Scan Conditions

Skip to the scanner
Scanner Studio · AlamToolKit

Custom Stock Scanner — Scanner Studio

Build your own scan conditions without writing a single line of code. Combine indicators with nested ALL / ANY logic, test them against your own price history, see exactly why each symbol qualified, and watch the list for new entries.

  • ✓ Nested AND / OR groups
  • ✓ RSI, MACD, ATR, RVOL, Bollinger, ADX
  • ✓ Daily / weekly / monthly
  • ✓ Per-condition pass / fail audit
  • ✓ Entry & exit monitoring
TEST MODE — Pro features are unlocked locally for development only. This is not a purchase.

Scanner Studio

Condition-based market scanner · runs fully in your browser
Free plan No dataset loaded

1 · Data & universe

Sample data is synthetic and clearly labelled — it is for testing scan logic, not real quotes.

Symbols are evaluated newest bar first.

Calculation settings

Symbols with less history are skipped and reported, never silently scored as a match.

2 · Scan conditions

Preview before a full run: — of 0 symbols meet every rule.

3 · Results 0 matches

No scan has run yet

Load the sample dataset, press Load example scan, then Run scan. You will get a ranked list plus the exact condition values behind every match.

4 · Monitor for entries & exits Pro

Monitoring re-evaluates the same rules as new bars arrive and logs symbols that entered or exited your criteria. It is a state-change watch, not a refresh of a static table.

No state changes yet. Start monitoring to watch this scan.

Unlock the full scanner

The free scanner is genuinely usable — the pro tier removes the ceilings and adds the workflow serious scanning requires.

Free

$0
  • Up to 25 symbols per scan
  • Up to 4 conditions
  • Daily timeframe indicators
  • 1 scan running at a time
  • 2 saved scans
  • Copy symbols & print results

Pro

YOUR_PRICE
  • Unlimited symbols & conditions
  • Weekly + monthly timeframes
  • Nested groups up to 3 levels
  • Entry / exit monitoring & alerts
  • Near-miss list & CSV export
  • Unlimited saved scans

This scanner is a 100% client-side tool: the paid features are convenience and capacity, not secret data. License verification calls Gumroad's public license endpoint directly from your browser, so it proves the key is valid — it is not a tamper-proof gate. If a purchase is refunded or charged back, Pro access is withdrawn on the next verification.

What is a custom stock scanner?

A custom stock scanner evaluates your own written rules against a list of symbols and returns only the ones that qualify. Instead of picking from a fixed menu of presets, you define the logic yourself — for example “close above the 50-day SMA and relative volume above 2 and ATR above 3% of price, or an RSI cross above 50”. Scanner Studio is the condition builder for that job: it turns plain indicator rules into a repeatable scan, then shows the value of every condition next to the symbols that passed.

Most screeners force a trade-off. A preset screener is fast but rigid; a charting script is flexible but requires a programming language. Scanner Studio sits in between: structured controls for the indicators that matter, a visual ALL / ANY group tree, and a full audit trail of why each symbol was returned.

How to use it

1

Load price history

Start with the sample dataset, or paste your own OHLCV rows as CSV. Any symbol list works — the engine does not depend on a vendor.

2

Choose the universe

Scan every symbol or restrict to a watchlist you type in. Symbols without enough history are reported rather than silently treated as non-matches.

3

Build the conditions

Pick an indicator and its parameters, an operator (>, <, crosses above, between), a comparison value or a second indicator, and a timeframe per condition.

4

Group the logic

Nest ALL / ANY groups to express “(A and B) or (C)”. Each group states its own rule so the logic is readable at a glance.

5

Run and audit

The result table shows price, change, volume, RVOL, ATR%, RSI and a per-condition audit you can expand row by row.

6

Save, export, monitor

Store the scan, copy the symbol list into your platform, export a CSV, or watch for entry and exit events as new bars arrive.

Results explained

  • Change % — (close − previous close) ÷ previous close × 100 on the selected timeframe.
  • RVOL — current volume ÷ average volume over N bars. 2.0× means twice the usual activity.
  • ATR % — Average True Range ÷ close × 100, a volatility reading independent of share price.
  • RSI — 100 − 100 ÷ (1 + average gain ÷ average loss), Wilder smoothing, 0–100.
  • Conditions — how many of the scan's leaf conditions this symbol satisfied, so a near miss is visibly a 3 of 4 rather than an unexplained absence.
  • Audit row — expands to the exact left value, operator and right value for every condition, including the previous-bar value used by cross operators.

Example scan

A momentum-with-confirmation scan: ALL of — close above the 50-period SMA, relative volume above 2×, ATR above 3% of price — ANY of — RSI crossing above 50, MACD histogram crossing above zero. Load the example scan button seeds exactly that structure so you can edit it rather than build from an empty page.

Frequently asked questions

Does this use live market data?

No. There is no vendor feed bundled in. Scanner Studio computes everything from the price history you load — the built-in sample dataset is synthetic and labelled as such. That keeps it fully client-side, free of API keys, and useful for designing and testing scan logic. To scan real quotes you load real history rows, or point your own pipeline at the same CSV shape.

Why do my results disagree with another screener?

Usually a convention difference, not a bug: adjusted vs unadjusted prices, regular vs extended hours, Wilder vs simple smoothing, completed vs forming candle, and trading-day vs calendar-day periods all shift indicator values. Scanner Studio states these assumptions instead of hiding them, and shows the raw left/right values in the audit so discrepancies are traceable.

What does a cross above actually test?

It requires the previous bar to be at or below the threshold and the current bar to be above it. Without that two-bar check, a symbol that has been above the level for weeks would keep triggering a “cross”.

How are nested groups evaluated?

Inner groups first, then outward. ALL requires every child to pass, ANY requires at least one, and NONE requires every child to fail. The preview counter lets you verify the count before you commit to a full run.

Is my data or scan uploaded anywhere?

No. Parsing, indicator maths and result rendering all happen in the browser; scans live in local storage on your device. The only outbound request is the Gumroad license check when you choose to verify a key.

Is this investment advice?

No. It is a technical analysis utility that reports whether arithmetic conditions are true on historical bars. A match is not a recommendation and says nothing about future returns.

Related tools

© 2026 AlamToolKit · Scanner Studio v1.0.0 Educational technical-analysis tool. Not investment advice. Sample data is synthetic.

AlamToolKit.com · Finance & Trading Tools

Scanner Studio User Guide — Every Field, Worked Example, Formulas & FAQ

This guide explains every input field in Scanner Studio, the units and valid ranges, the exact indicator formulas, how conditions, groups and timeframes are evaluated, and what the free / Pro tiers actually unlock. It also includes a worked momentum example, common data-entry mistakes, key user pain points, and a live sanity check. Use it as a training reference, an onboarding document, or a pre-flight checklist before you save a scan you intend to share.

Beginner friendly ~14 min read Updated 2026 Free & Pro tiers covered

What a Custom Stock Scanner Is Used For

A custom stock scanner evaluates your own written rules against a list of symbols and returns only those that qualify. It is the technical-analysis equivalent of a query language: instead of picking from a fixed menu of presets, you define the exact arithmetic your screen requires — for example “close above the 50-day SMA, relative volume above 1.5×, and RSI crosses above 50” — and the engine returns every symbol in the universe that satisfies all of it.

In practical use, the scanner answers four distinct questions:

  • Does the symbol satisfy my rules today? — a binary match on the completed bar, with a full audit of every condition's left-hand value, operator and right-hand value.
  • How close did it come? — the per-row condition count and the near-miss list separate a 3-of-4 result from an entirely unmatched one.
  • Is the rule itself any good? — the preview count lets you check that the structure of the logic returns a sensible number of symbols before you commit to a full scan.
  • Has the state changed since I last looked? — the monitor watches the same rules and logs entry and exit events as new bars arrive.

Builder — 30 Indicators, 12 Operators, Nested Groups

The builder is a visual condition tree. Every condition is a leaf: one indicator, its own parameters, one operator, a right-hand side (a value, two values for between, or a second indicator), and a per-condition timeframe. Groups nest to three levels on Pro and provide the boolean join for their children.

Indicators available

Thirty indicators are grouped below by the kind of question they answer. Each exposes only its own parameters; nothing irrelevant is shown.

Price & price change
  • close
  • open
  • high
  • low
  • changePct
  • gapPct
  • priceVsMa %
Volume
  • volume
  • avgVolume
  • relVolume (RVOL)
  • dollarVolume
Moving averages
  • SMA
  • EMA
Momentum
  • RSI
  • MACD line
  • MACD signal
  • MACD histogram
  • Stochastic %K
  • Stochastic %D
  • ROC
Volatility
  • ATR
  • ATR %
  • Bollinger upper
  • Bollinger lower
  • Bollinger %B
  • Bollinger bandwidth
Trend strength
  • ADX
  • +DI
  • −DI
Range / position
  • highestHigh
  • lowestLow
  • % below N-bar high

Operators

Twelve operators, split into four families. Cross operators enforce a genuine two-bar transition, so a symbol that has already been above a level does not re-trigger on every subsequent bar.

Symbol Family What it tests Right-hand side
>Magnitudeindicator strictly above a valuenumber
≥Magnitudeindicator at least a valuenumber
<Magnitudeindicator strictly below a valuenumber
≤Magnitudeindicator at most a valuenumber
=Magnitudeindicator equal to a value within tolerancenumber
↔Rangeindicator inside a min/max bandtwo numbers
↗Transitionprevious bar ≤ value, current bar > valuenumber
↘Transitionprevious bar ≥ value, current bar < valuenumber
>iIndicator-vs-indicatorleft series > right seriessecond indicator
<iIndicator-vs-indicatorleft series < right seriessecond indicator
↗iIndicator-vs-indicatorleft crosses above right (two-bar)second indicator
↘iIndicator-vs-indicatorleft crosses below right (two-bar)second indicator

Why cross operators are two-bar

A cross above 50 means the previous bar was at-or-below 50 and the current bar is above 50. Without that check, a symbol that has been above 50 all year would fire the “cross” on every bar, which is exactly the behaviour users complain about in other screeners. The audit shows the previous-bar value next to the current one, so a cross is verifiable at a glance.

Per-condition controls

  • Timeframe per condition — Daily on free; Daily, Weekly and Monthly on Pro. Weekly and monthly bars are aggregated from the same daily rows, so no silent mixing of series occurs.
  • Drag-and-drop reorder — reorder conditions within their group by dragging the grip. Order does not change the evaluation result, but it changes reading order and, therefore, the audit's readability.
  • Duplicate — clone a condition in place, keeping all parameters. Useful for sibling thresholds (e.g. RSI > 50 and RSI < 70 in the same group).
  • Delete — remove a condition or a nested group.

Group logic

Three join modes are supported per group: ALL (every child must pass), ANY (at least one child must pass), and NONE (every child must fail). Nested groups evaluate inner-first, so a sub-group's combined result behaves like a single boolean at its parent. On Pro, groups nest up to three levels deep; the free tier supports one flat group.

Scan Engine — How Each Symbol Is Evaluated

The engine is deterministic given the loaded bars and the rule tree. There is no random tie-break, no implicit sort that changes a match, and no silent symbol skipping.

Evaluation pipeline

  1. Resolve timeframes. Daily bars are used as-is; weekly and monthly bars are aggregated from the daily series before any indicator is computed.
  2. Build the indicator series for each leaf, cached per (symbol, indicator, params, timeframe). Caching is why conditions sharing an indicator do not pay twice.
  3. Evaluate the leaf on the evaluated bar, using the previous bar for cross operators. Values that are NaN due to insufficient history produce a note rather than a silent fail.
  4. Fold the tree. Inner groups first, then outward; ALL, ANY and NONE combine the child booleans at each level.
  5. Consecutive-bar re-check if the user asked for N bars: the same tree is evaluated on the prior N−1 bars, and the symbol is kept only if every bar passed.

Reported, not hidden

  • Insufficient history. A symbol with fewer bars than the minimum-history threshold is skipped and counted separately in the run metadata. It is never scored as a non-match, and it never lands in the near-miss list.
  • Free-plan universe cap. On the free tier, the run metadata prints “evaluated the first 25 of N symbols”. The tool does not pretend it scanned the whole universe.
  • NaN indicator values. When an indicator is NaN on the evaluated bar (typically the first n−1 bars of a symbol's history for a period-n indicator), the row shows a note — “not enough history for this indicator at this bar” — instead of a misleading FAIL.

Per-condition audit

Every result row can be expanded to a per-condition audit. The audit prints, for each leaf: the exact left value, the operator symbol, the right value, the timeframe, and — for cross operators — the previous-bar value that satisfied the transition. Group verdicts are printed as a nested tree, so a nested ANY sub-group's contribution to its parent is visible.

Results table

  • Sortable by any visible column, ascending or descending.
  • Searchable by symbol or company name.
  • Column picker — hide columns you do not use; the export always uses the canonical column list regardless of which columns are visible.
  • Near-miss mode (Pro) — shows symbols that satisfied at least one condition but not all, ranked by how many they passed. A 3-of-4 is visibly different from an unmatched symbol.
  • Copy symbols — one click to place the matching tickers on the clipboard, ready for a broker or charting platform.
  • Print stylesheet — the on-screen table prints cleanly, without the interactive chrome.
  • CSV export (Pro) — the matched symbols with every computed metric, timestamped in the filename.

Live preview counter

Before a full run, the preview counter evaluates the current tree on the newest bar and returns a match count without rendering the table. It is the fastest way to catch a mistyped threshold. Note that the preview skips the consecutive-bar re-check, so the final match count of a full run can be lower than the preview count — that difference is expected, not a bug.

How a Scan Is Evaluated (Visual Walkthrough)

The engine walks a tree of groups and conditions, from the deepest nested group outward. The diagram below shows the full eight-stage pipeline, from loading bars to monitoring state changes.

How Scanner Studio evaluates a scan, from price bars to final matches Flow diagram: load bars, aggregate by timeframe, compute indicator series, evaluate each leaf condition against its right-hand value, combine leaf results inside ALL or ANY groups, apply consecutive-bar check, then render matches, near misses and the per-condition audit. A monitor stage watches for state changes on new bars. 1. Load price bars OHLCV, sorted by date sample or imported CSV 2. Aggregate by tf D: as-is · W: ISO weeks M: calendar months 3. Compute indicators SMA, EMA, RSI, MACD ATR, BB, ADX, Stoch 4. Evaluate leaf conditions indicator op value / indicator cross uses prev + current bar 5. Combine groups ALL, ANY, NONE inner groups first 6. Consecutive check re-evaluate the same tree on previous N-1 bars 7. Render results matches · near misses per-condition audit 8. Monitor state entry / exit log on new bars optional browser alerts new bars arrive
Figure 1 — The eight stages of a scan. Price bars are loaded once, then aggregated to the requested timeframe before any indicator is computed. Each leaf condition evaluates its indicator against a value or a second indicator on the same bar, using the previous bar for cross operators. Nested groups reduce inner results first, and the consecutive-bar check re-evaluates the whole tree on the prior N-1 bars. The monitor watches the same rules as new bars arrive, logging state changes to the entry/exit list.

Step-by-Step Guide — Filling In Every Field

Scanner Studio is organised as a single working screen. The left column holds the data and universe settings; the centre holds the condition builder; the action bar sits between the builder and the results; the results table is below; the monitor and the upgrade block come last. Every change updates the preview count in real time, so you can see the effect of a rule before running a full scan.

  1. Price Data Source

    What it is: selects where the scanner reads its price history from. Three options are available:

    • Sample dataset — 60 synthetic tickers with 420 daily bars each, generated client-side for demonstration. It is explicitly labelled as synthetic because it is designed to exercise the scan logic, not to be traded off.
    • Paste CSV / JSON — opens a text area into which you can paste raw OHLCV rows or a JSON array. The parser is tolerant of comma, semicolon or tab separators, and accepts both open/high/low/close/volume and the short forms o/h/l/c/v.
    • Upload CSV file — identical parsing rules, but reading from the local filesystem. Nothing is uploaded anywhere; parsing happens entirely in the browser.

    Units: none — a dropdown selector. Common mistake: importing a CSV with dates in the wrong format. Dates must be YYYY-MM-DD; anything else will be silently dropped because the parser cannot compare the bars.

  2. CSV / JSON Format

    What it is: the shape of the accepted input. A header row is required for CSV, followed by one row per bar:

    symbol,date,open,high,low,close,volume
    AAPL,2026-01-02,187.20,189.10,186.40,188.95,54200000

    Validation: rows with a missing symbol, missing date, or non-numeric OHLC are skipped and counted in the load message. Bars are sorted by date on import, so the file does not have to be pre-sorted. Common mistake: exporting from a vendor with prices in a currency that uses comma as a decimal separator — the parser expects a dot.

  3. Scan Universe

    What it is: selects which symbols in the loaded dataset are evaluated. Two modes:

    • Every symbol in the dataset — the entire loaded list.
    • Only symbols matching the filter below — a comma- or space-separated list of tickers in the filter box, case-insensitive.

    Units: none. The free plan evaluates up to 25 symbols; the Pro tier removes the limit. Common mistake: assuming a symbol that is not in the dataset will be silently fetched from somewhere — it will not. The filter only removes symbols; it never adds them.

  4. Minimum Consecutive Bars

    What it is: requires the entire rule tree to be true on the last N completed bars, not just the most recent one. Units: a number of bars (1, 2, 3 or 5). Effect: at N = 1 a symbol matches if the rules are true on the latest bar; at N = 2 the same tree must also have been true on the previous bar. The tool re-evaluates the whole group, not just the leaves, so consecutive checks and nested logic are consistent.

    Common mistake: setting N high without enough history — symbols near the start of their recorded series will simply fail the consecutive test.

  5. Candle to Evaluate

    What it is: whether the rules are checked against the last completed bar or against a forming bar. Units: none — a dropdown. Effect: the “completed candle only” setting is the default because it gives reproducible results; including the forming bar makes the scan sensitive to the moment it is run. Common mistake: using the forming-bar setting and then re-running later in the day — the results will differ. If you need stable results, keep it on completed candles.

  6. Minimum History Required

    What it is: the number of bars a symbol must have before it is scored at all. Units: number of bars — 60, 120 or 200. Effect: symbols below the threshold are skipped and reported, never silently scored as a non-match. Common mistake: leaving it at 120 when a condition uses a 200-period SMA — the SMA will simply be NaN for every symbol in the dataset, and every condition on it will fail with the note “not enough history for this indicator at this bar”.

  7. Show Per-Condition Audit

    What it is: a toggle that controls whether expanding a row shows the full audit trail. Units: none — a switch. Effect: when enabled, each expanded row lists every leaf condition with its computed left value, the operator, the right value, the timeframe, the previous-bar value (for cross operators) and a PASS / FAIL verdict. Common mistake: turning it off in production and then being unable to explain why a symbol did or did not match. Leave it on when validating a new scan.

  8. Condition — Indicator

    What it is: the first element of every condition, a dropdown listing all supported indicators (see the builder reference above for the full grouped list). Each has its own parameter set and unit:

    • Price-based — close, open, high, low, changePct (%, over N bars), gapPct (%).
    • Volume-based — volume (shares), avgVolume, relVolume (×, e.g. 1.5 means 1.5× the 20-bar average), dollarVolume (currency).
    • Moving averages — sma, ema (price), priceVsMa (%, price versus the chosen MA type).
    • Momentum — rsi (0–100), macd, macdSignal, macdHist (price), roc (%), stochK, stochD (0–100).
    • Volatility — atr (price), atrPct (%), bbUpper, bbLower (price), bbPercentB (0–1), bbWidth (%).
    • Trend strength — adx, plusDI, minusDI (0–100).
    • Range — highestHigh, lowestLow (price), gapFromHigh (%).

    Common mistake: using close when you meant priceVsMa. The first is an absolute price in the quote currency; the second is a percentage distance from a moving average and is directly comparable across symbols of different price levels.

  9. Condition — Parameters

    What it is: the numeric parameters for the selected indicator, rendered as small inputs with their own min/max bounds and default values:

    Default parameters and valid ranges per indicator group.
    Indicator group Parameters Defaults Range
    SMA / EMA / Price vs MAperiod, type50 / 20 / 50, sma2–400
    RSIperiod142–100
    MACD (line, signal, histogram)fast, slow, signal12, 26, 92–200
    ATR / ATR %period142–100
    Bollinger (all four)period, dev20, 22–200, 0.5–5
    ADX / ±DIperiod142–100
    Stochastic %K / %Dperiod, smooth14, 32–100, 1–20
    Highest high / lowest lowperiod522–400
    ROC / gap from N-bar highperiod20 / 521–400 / 2–400
    RVOL / average volume / dollar volumeperiod202–250

    Validation: a number outside the valid range is shown in the input's aria-invalid style and is reported in the “Check these inputs” box above the builder. The scan refuses to run until every parameter is in range. Common mistake: using a MACD fast period longer than the slow period — the line will be consistently negative and the signal crossover almost meaningless. Keep fast < slow.

  10. Condition — Operator

    What it is: the comparison made between the indicator's value and the right-hand side. See the operator table above for the full twelve-operator list, split into magnitude, range, transition and indicator-vs-indicator families.

    Common mistake: using “greater than” when you mean “crosses above”. A stock that has been above the 50-day SMA all year will match the first on every bar and the second only on the transition bars.

  11. Condition — Value

    What it is: the right-hand-side value the operator compares against. Units: the same unit as the left-hand indicator — percent for rsi, atrPct, bbPercentB, changePct; shares for volume; price for close and the moving averages. For “between”, two values are shown (min and max). For “equals”, a tolerance field appears. For “crosses above” and “crosses below”, the right value is the level being crossed.

    Validation: a non-numeric value is marked on blur, and the scan refuses to run until every value is a finite number. Common mistake: entering a percentage as a decimal (0.05 instead of 5) — the scanner is unit-agnostic, so a tolerance of 5 on RSI means 5 RSI points, not 5 %. Enter the same units the indicator itself reports.

  12. Condition — Comparison Indicator

    What it is: a second indicator used as the right-hand side, so you can express relational logic like “close above the 50-day SMA” or “MACD histogram above the signal line”. Units: the same as the left-hand indicator, because it is computed from the same price series. Common mistake: comparing two indicators in different units — for example, comparing an RSI (0–100) to a price. The comparison will work arithmetically but the result is meaningless. Use a value comparison against a fixed level in that case.

  13. Condition — Timeframe

    What it is: whether the condition is computed on daily, weekly or monthly bars. Units: a dropdown with three options. The free plan supports daily only; weekly and monthly are Pro. Effect: weekly and monthly series are aggregated from the same daily bars, so a weekly SMA of 50 uses 50 weeks of aggregated closes, not 50 days. Common mistake: setting one condition on daily and its neighbour on weekly and expecting them to compare. Each condition computes its own values on its own timeframe; the left and right of a single comparison must be on the same timeframe, or the row will show a mix of unrelated bars.

  14. Groups — ALL / ANY / NONE

    What it is: the logical container that combines child conditions and nested groups. Three join modes are available:

    • ALL — every child must pass. Used for conjunction scans.
    • ANY — at least one child must pass. Used to express alternatives like “RSI crosses above 50 or MACD histogram crosses above zero”.
    • NONE — every child must fail. Used for exclusions, e.g. “no symbol where RSI is above 80”.

    Units: none. Nested groups are reduced inner-first, then combined at the parent level. Common mistake: assuming an ALL group short-circuits — it does not, because the per-condition audit needs to evaluate every leaf to show its value. Evaluation cost is therefore fixed by the number of leaves, not the join mode.

  15. Add Condition / Add Group

    What it is: the two buttons above the builder that append a new child to the top-level group. Units: none. Effect: a new condition starts with the RSI indicator and a threshold of 50, so it is immediately valid; a new group starts empty and must be populated before the scan can run. Common mistake: adding a group when a condition is intended — the empty group makes the parent logic ambiguous and is skipped until populated.

  16. Preview Count

    What it is: a live counter showing how many symbols satisfy the current rule tree, updated as you edit. Units: a count of matching symbols out of the evaluable universe. Effect: it is the fastest way to catch a mistyped threshold before a full scan — if a “close above 500” filter returns 0 of 60 on a dataset whose prices are 25–320, you know the threshold is wrong. Common mistake: treating the preview as authoritative. It runs the same evaluation as the scan, but on the current bar without the consecutive-bar check, so the final match count can be lower.

  17. Results — Search, Show Mode, Columns

    Search is a case-insensitive text filter on symbol or company name; it hides rows but cannot bring back symbols that were never scanned. Show Mode toggles between full matches and matches plus near misses (the near-miss list is Pro-only). Columns is a column-visibility chooser stored in local storage; hiding columns does not affect the sort key or the CSV export, which always uses the canonical list.

    Common mistake: leaving the default “matches only” and then being surprised that a symbol that passed 3 of 4 conditions is not visible — switch to near-miss mode to see it. Hiding the “Conditions” column is another common self-inflicted problem, since it is usually the most useful column to keep visible.

  18. Monitor — Interval and Notifications

    What it is: an optional watch that re-runs the same scan on a fixed interval and logs state changes. Units: the interval is in seconds — 5, 15, 30 or 60. Effect: every tick that changes the set of matches appends a row to the log with the timestamp, the symbol and whether it entered or exited. Notifications require browser permission and are only raised while the tab is open. Common mistake: expecting monitoring to fetch new data automatically. It re-evaluates the same loaded dataset; you must feed new bars into the dataset for the state to genuinely change.

  19. Action Bar — Run, Example, Save, Export

    What it is: seven buttons that perform the scan's non-editor actions:

    • Run scan — full evaluation with the consecutive-bar check, per-row condition counts and the run metadata line.
    • Load example scan — seeds the momentum-with-confirmation scan (close above 50-SMA, RVOL above 1.2×, ATR above 1.5 %, plus a Pro-only ANY sub-group with RSI and MACD crossings).
    • Save scan — stores the current rule tree in local storage under a name you choose. Free plan stores 2; Pro is unlimited.
    • Saved scans — a popover listing saved scans, each reloadable with one click.
    • CSV — downloads the matched symbols with all computed metrics. Pro only.
    • Symbols — copies a comma-separated list of matching tickers to the clipboard, ready to paste into a broker or charting platform.
    • Print — opens the browser print dialog with a print-optimised layout of the current results.

    Common mistake: running a scan without checking the preview. The run includes the consecutive-bar check and the full per-condition audit, so it is slower and its final count is usually lower than the preview's.

  20. Pro License Key

    What it is: the key you received from Gumroad after a purchase. Units: none — a text field. Effect: clicking Verify license sends the key to Gumroad's public license endpoint and, on success, unlocks the Pro features on this browser. The key is stored in local storage only after a successful verification. Common mistake: pasting an order ID rather than a license key — Gumroad issues both, and only the license key will pass the verify endpoint. Refunded or charged-back purchases are rejected on the next verification.

Live Sanity Check (Interactive)

The scanner itself is a separate tool; this mini-playground demonstrates the two arithmetic rules that trip up new users most: percent vs decimal and cross vs threshold. Change the values, press evaluate, and read the feedback.

Adjust the fields and press Evaluate rules.

Tip: if you type 0.02 for ATR% you are asking “is volatility at least 0.02 percent?” — almost always true on equities. Type 2 if you mean two percent.

Worked Example — Momentum With Confirmation

This scan is deliberately educational: it combines a trend filter, a volume filter and a volatility filter in an ALL group, then adds an ANY group of two momentum triggers. It reproduces the Load example scan button and can be checked by hand from any imported dataset.

The rule tree

ALL of:
  • close >i SMA(50)
  • relVolume(20) > 1.2
  • atrPct(14) > 1.5
  • ANY of:
    – rsi(14) crosses above 50
    – macdHist(12,26,9) crosses above 0

Step 1 — Evaluate the trend filter on a sample bar

AAPL's latest bar closes at 213.40. The 50-day SMA computed from the previous 50 closes is 206.15. The condition is close >i SMA(50), so the comparison is 213.40 > 206.15, which is true. The audit row would show: PASS · Close price(50-SMA) >i SMA(50) — value 213.40 > 206.15.

Step 2 — Evaluate the volume filter

The latest bar's volume is 62.4 million shares. The 20-day average volume is 48.1 million. Relative volume is 62.4 / 48.1 = 1.297, which is greater than the 1.2 threshold, so the condition is true. The audit row would show: PASS · Relative volume(20) > 1.2000 — value 1.2970.

Step 3 — Evaluate the volatility filter

The 14-period ATR is 3.94 and the close is 213.40, so ATR % is 3.94 / 213.40 × 100 = 1.847 %. That is greater than 1.5 %, so the condition is true. The audit row would show: PASS · ATR % of price(14) > 1.5000 — value 1.8470.

Step 4 — Evaluate the ANY momentum sub-group

RSI crosses above 50 — the previous bar's RSI was 48.2, the current bar's is 51.6. Since the previous value was at or below 50 and the current value is above 50, the cross condition is true.

MACD histogram crosses above 0 — the previous bar's histogram was −0.02 and the current bar's is +0.08. The cross is true.

Since the sub-group is ANY, only one of the two needs to pass. Both do, so the ANY group is true.

Step 5 — Combine at the top-level ALL group

Trend true, volume true, volatility true, ANY momentum true. All four children pass, so the top-level ALL group is true. AAPL matches. If consecutive bars were set to 3, the same tree would be re-evaluated on the two prior bars; if either of those also failed, AAPL would not appear in the results.

Summary of the match

Condition Left value Operator Right value Verdict
Close vs SMA(50)213.40>i206.15PASS
Relative volume (20)1.297>1.200PASS
ATR % of price (14)1.847 %>1.500 %PASS
RSI (14) — ANY child 151.6crosses above50PASS
MACD histogram — ANY child 2+0.08crosses above0PASS
Top-level ALL groupMATCH

Monitor — State Changes, Not a Live Feed

The Pro monitor re-evaluates the same tree on a schedule and logs state changes. It is the workflow primitive behind “tell me when something enters or leaves my list”, and it is honest about what it does and does not do.

How it works

  • Interval scheduler — 5, 15, 30 or 60 seconds between ticks.
  • Baseline diff — on start, the current matches are recorded as the baseline. On each tick, the new match set is compared against the baseline.
  • ENTERED / EXITED log — symbols that entered the match set are logged as ENTERED, and symbols that left are logged as EXITED, each with a timestamp and a short reason line.
  • Optional browser notifications — if the user grants Notification permission, ENTERED events raise a system notification while the tab is open.

What the monitor is not

There is no vendor feed bundled with the tool. To make state changes observable in a client-side sandbox, each tick appends a synthetic next bar to the loaded history and re-runs the scan; the run metadata states this explicitly. It is a demonstration of the state-change workflow — not a live quote stream, and not a subscription to any data provider. The page never claims otherwise.

Data — Synthetic Sample, CSV/JSON Import

Data handling is deliberately simple and auditable. There are three data sources, and every one of them lives entirely in the browser.

Sample dataset

  • 60 symbols, 420 daily bars each. The OHLCV series is generated client-side with a seeded pseudo-random number generator, so the same seed produces the same series on reload — useful for reproducing audit rows.
  • Clearly labelled synthetic — in the data-source dropdown, in the header chip, and in the run metadata line. It is designed to exercise the arithmetic, not to be traded off.

CSV and JSON import

  • Paste — paste raw rows into the text area; the parser accepts comma, semicolon or tab separators.
  • Upload — read a local .csv, .txt or .json file. Files stay on the device; nothing is uploaded.
  • Documented header format — symbol,date,open,high,low,close,volume, one row per bar, dates as YYYY-MM-DD. JSON is accepted as an array of objects with the same fields, or with short keys o/h/l/c/v.
  • Validation is visible — rows with missing symbol, date, or non-numeric OHLC are counted and reported in the load message. Bars are sorted by date on import.

Free vs Pro — Where the Line Is Drawn

The free tier is genuinely usable, and the Pro tier removes the ceilings. Locked features explain their benefit and open Gumroad; they never pretend entitlement exists. There is no in-app dark pattern.

Free

  • 25 symbols evaluated per run
  • 4 conditions in a single flat group
  • Daily timeframe only
  • 1 flat group — no nesting
  • 2 saved scans
  • Copy symbols and print
  • Matches-only results (no near-miss list)
  • No CSV export, no monitor

Pro

  • Unlimited symbols and unlimited conditions
  • Daily, Weekly and Monthly timeframes, mixable per condition
  • Nested ALL / ANY / NONE groups up to three levels deep
  • Near-miss list — 3-of-4 rows visible, ranked
  • CSV export of the matched symbols with all computed metrics
  • Entry / exit monitor with 5/15/30/60-second intervals and optional browser alerts
  • Unlimited saved scans

How locked features behave

Clicking a locked feature does not silently do nothing. It scrolls to the upgrade block, explains the specific benefit of the Pro feature that was clicked, and offers the Gumroad checkout link. The key text field accepts a license key, and verification calls Gumroad's public license endpoint directly from the browser — the key is stored only after successful verification. Refunded or charged-back purchases are rejected on the next verification. This is a real, working entitlement flow, not an “unlock” button that does nothing.

Key User Pain Points and How Scanner Studio Solves Them

Most screening workflows break in predictable ways. The list below maps each failure mode to a specific design choice in Scanner Studio.

  • “I can't express the logic I actually want.”

    Why it happens: preset screeners force a fixed menu of filters, and a custom script requires a programming language. How it is solved: a visual condition builder with 30 indicators, 12 operators, parameter ranges and nested ALL/ANY/NONE groups covers almost every technical setup without a single line of code.

  • “I don't trust the result, and I can't explain it.”

    Why it happens: a black-box screener returns a ticker with no visible reasoning. How it is solved: every row expands to show the left value, operator, right value, timeframe and previous-bar value for every condition — a complete, per-condition audit trail.

  • “A scan that returns zero symbols feels broken.”

    Why it happens: an empty result gives no feedback about how close the universe was to matching. How it is solved: the near-miss list (Pro) shows symbols that satisfied most conditions, the per-row conditions score shows 3 of 4 or 2 of 4, and the “Loosen one condition” button on the empty state relaxes the first threshold by 15 %.

  • “I can't reuse a scan next week.”

    Why it happens: presets are not editable and a script has to be re-typed each time. How it is solved: save a scan with a name and reload it with one click. The free plan stores 2; Pro stores unlimited.

  • “I can't tell whether the scan is any good before I run it.”

    Why it happens: building a full script, running it, then discovering it returns 0 or 60 of 60 wastes time. How it is solved: the live preview counter updates as you edit, so a threshold of 500 on a 320-price dataset is caught immediately. The run-meta line also reports how many symbols were skipped for insufficient history.

  • “I can't watch a scan for new entries without re-running it.”

    Why it happens: a scan is a snapshot, not a subscription. How it is solved: the monitor re-evaluates the same tree on a configurable interval and logs entry and exit events, with optional browser notifications while the tab is open.

  • “I don't know if the indicator values match my charting platform.”

    Why it happens: every platform has conventions for seeds, smoothing and adjusted prices. How it is solved: the formulas are documented below, the audit exposes the intermediate values, and the accuracy note names the four conventions that explain almost all disagreements.

  • “My data is sensitive.”

    Why it happens: a hosted scanner uploads your watchlists and prices. How it is solved: everything runs client-side. No price data leaves the browser. The only outbound request is the Gumroad license verification when you choose to verify a key.

Common Input Mistakes and How to Avoid Them

Mistake Effect on the result How to catch it
Comparing an RSI value against a price The condition evaluates arithmetically but is meaningless — RSI is bounded 0–100, so it will fail for any price above 100 The audit row shows the raw left and right values; if they are on incompatible scales, the numbers make that obvious
Using “greater than” instead of “crosses above” The rule fires on every bar above the level, not only the transition The audit shows the previous-bar value for cross operators — if no previous-bar value is shown, it is not a cross
Using an indicator period longer than the available history Every symbol returns “not enough history”; the scan appears broken Set Minimum History Required above the longest period in any condition, or lower the period
Setting the MACD fast period longer than the slow period The MACD line is consistently negative; the signal crossover is inverted The default of 12/26/9 is the standard; only change it if you have a specific reason
Mixing timeframes inside one comparison The left value is computed on one timeframe, the right on another — the comparison is a category error The audit column shows the timeframe next to each row; if two rows for one comparison disagree, that is the cause
Forgetting that the free plan is capped at 25 symbols The scan returns matches only from the first 25 symbols in the universe, silently The run-meta line reports “free plan evaluated the first 25 of N symbols”
Forgetting a nested group is Pro The scan does not run because the free plan blocks nested depth Load the free-plan version of the example scan, which flattens the ANY sub-group into a single-level ALL group
Using a forming candle and re-running later The same scan returns different matches at 10:00 and 15:00 Switch to “completed candle only” for reproducible results
Pasting a dataset where the previous session's close is missing Cross operators fail because the previous-bar value is NaN The audit shows “prev n/a” for the affected rows; supply contiguous sessions
Entering 0.03 when you meant 3% ATR%, price-change % and rate-of-change % all work in percentage points; entering a decimal asks for a fraction of a percent The live sanity check flags any ATR% under 0.1 as almost certainly a decimal-vs-percent mistake
Putting every condition in one ALL group when you meant OR Five conditions in an ALL group is a very tight conjunction; the scan returns near-zero matches If you want “volume confirmation OR a momentum trigger”, that belongs in an ANY sub-group
Mixing adjusted and unadjusted prices across imported symbols The engine cannot detect this for you; indicators diverge and the audit disagrees with your charting platform Import from a single export convention

Real-World Usage Examples

Systematic equity trading — a morning shortlist

A discretionary trader who wants a repeatable morning list uses Scanner Studio as the upstream filter: RVOL and ATR% narrow the universe to names worth charting, while the per-row audit removes the “why is this on my list?” problem that plagues black-box screeners.

Quant research prototyping

Before writing production code in Python or R, a research analyst writes the candidate rule in the condition builder, runs it on 60 to 400 bars per symbol, and inspects the audit. Divergences between the prototype and the production implementation are usually convention differences, and the audit narrows them to a specific number.

Volatility and derivatives context

ATR% is a share-price-independent volatility reading. Combining an ATR% floor with an RVOL minimum produces a shortlist where the risk-to-reward math of a fixed-dollar or fixed-fraction stop is materially different from the rest of the basket — useful before pricing spreads or choosing position size.

Cross-asset screening

Weekly and monthly aggregated bars let a user apply the same rules across equities, CFDs and major FX pairs without re-tooling. The aggregation is explicit (daily rows are grouped and OHLC folded) so the timeframe label in the audit means exactly what it says.

Teaching and onboarding

Because the audit shows the previous-bar value used by cross operators, the tool doubles as a teaching aid: “here is why this symbol was included, here is why that one was excluded, here is the exact arithmetic”. The teaching value of an auditable pass/fail is much higher than a static recommendation list.

A worked real-world scan — weekly breakout

An independent trader runs a weekly breakout screen on a 40-name universe and needs to express it without writing code. Their rule is: on the daily chart, the symbol must be within 5 % of its 252-day high, the 20-day average dollar volume must be at least $25 million per day, and RSI(14) must have crossed above 55 within the last two completed sessions.

  1. Data and universe. They import a CSV of 40 tickers covering two years of daily bars, set Minimum History Required to 200 bars, and set the universe to “Every symbol in the dataset”.
  2. Near-high filter. gapFromHigh(252) < 5. The period is 252 trading days, not 365, because the scanner counts bars.
  3. Liquidity filter. dollarVolume(20) > 25,000,000. This is deliberately conservative — it removes names that would not absorb a mid-size position.
  4. Momentum trigger. rsi(14) crosses above 55. The cross operator ensures the rule fires on the transition, not on every bar where RSI happens to be above 55.
  5. Consecutive check. Because the trader wants recent crosses rather than any cross, they set Minimum Consecutive Bars to 2 and accept the small extra cost of the consecutive evaluation.
  6. Preview and run. The preview count shows 3 of 40 candidates. They run the full scan; the run-meta line reports that 4 symbols were skipped for insufficient history, which is expected because a few IPO names have fewer than 200 bars.
  7. Results and export. The three matches are exported via the CSV button and pasted into a broker watchlist. The trader clicks “Symbols” as a backup copy, and saves the scan as “Weekly breakout” so next week's run is one click.
  8. Monitor. They start the monitor at the 15-second interval. Over the next few sessions, one symbol falls below the 5 % near-high threshold and is logged as EXIT; a fourth symbol is logged as ENTER after the next breakout.

Accuracy Note — What the Scanner Does and Does Not Guarantee

Every value produced by Scanner Studio is calculated from the price history you have loaded, using the indicator definitions listed below. That is the same arithmetic used by every mainstream charting package. The important caveats are conventions, not errors, and they explain almost all disagreements with other screeners:

What is verified

The indicator math (Wilder RSI / ATR / ADX, EMA seeding, Bollinger bands, MACD, Stochastic, rate of change) is implemented directly from the standard formulas, with the same seeding conventions used by charting platforms. The audit exposes every intermediate value, so a mismatch with another platform is traceable to a specific convention rather than hidden.

What is not verified

The price data. The built-in dataset is synthetic and labelled as such. Any numbers you import are your responsibility — adjusted versus unadjusted, regular versus extended hours, split-adjusted conventions. A scan is only as trustworthy as the rows it consumes.

What it is not

A forecast, a rating, or investment advice. A condition that was true on a historical bar is a statement about arithmetic, not about the future. The scanner ranks by pass count, not by expected return. Position sizing, risk management and portfolio construction all sit outside the scanner and are your responsibility.

The four conventions that explain most disagreements

  • Price adjustment. The scanner does not adjust for splits or dividends. If your dataset is split-adjusted and your vendor's is unadjusted, the same date will produce different SMA values for the same symbol.
  • Extended hours. Pre-market and after-hours bars are excluded by default because the parser assumes one bar per calendar day. If your CSV includes extended hours, the daily high/low will differ from a regular-hours screen.
  • Wilder vs simple smoothing. RSI, ATR, ADX and their families use Wilder smoothing (an EMA with α = 1/n), the classical definition. Some platforms seed the average with a simple mean of the first n bars; the values converge within a few bars but differ for the first few dozen.
  • Calendar vs trading-day periods. Every “N bars” in this scanner counts trading days, not calendar days. A 52-week high filter is 252 bars, not 365. This is why the period inputs for highestHigh and lowestLow default to 52 rather than 365.

The safe way to compare against another screener is to read the audit for a single symbol: it exposes every intermediate value, so a mismatch is traceable to the convention rather than to a black box.

Indicator Formulas Used

The tables below document the exact arithmetic for the indicators most often involved in scans, so a result can be reproduced in a spreadsheet or checked against a published reference.

Simple and exponential moving averages

IndicatorFormulaNotes
SMASMA(n) = (1/n) × ∑ closeiEqual weights over the trailing n bars.
EMAk = 2/(n+1); EMAi = closei×k + EMAi-1×(1−k)Seeded with the simple mean of the first n closes.
Wilder smoothingα = 1/n; Wi = (Wi-1×(n−1) + xi) / nUsed for RSI, ATR, ADX, +DI, −DI.

RSI, ATR and ATR %

IndicatorFormulaNotes
RSI(n)RSI = 100 − 100 / (1 + avgGain / avgLoss)Wilder smoothing on up/down moves; α = 1/n.
True rangeTRi = max(H−L, |H−Ci-1|, |L−Ci-1|)Uses the previous bar's close.
ATR(n)ATRi = (ATRi-1×(n−1) + TRi) / nWilder smoothing on true range.
ATR %ATR% = ATR / close × 100Comparable across price levels.

MACD, Bollinger and ADX

IndicatorFormulaNotes
MACD lineMACD = EMA(fast) − EMA(slow)Fast must be shorter than slow.
MACD signalsignal = EMA(signal period) of MACDDefault signal period 9.
MACD histogramhist = MACD − signalSign change is the classic trigger.
Bollinger bandsmid = SMA(n); σ = stdev(close, n); upper = mid + kσ; lower = mid − kσ%B = (close − lower) / (upper − lower); width = (upper − lower) / mid × 100.
+DI, −DI+DI = 100 × Wilder(+DM) / Wilder(TR); −DI analogous+DM and −DM are the up/down moves that exceed the opposite move.
ADXDX = 100 × |+DI − −DI| / (+DI + −DI); ADX = Wilder(DX)Trend strength, not direction.

What the Tool Deliberately Does Not Do

Stating the boundaries is part of trusting the tool. The list below is the complete, current scope.

  • No live quote feed. There is no vendor data, no WebSocket, no scheduled refresh against a market. You load data; the tool computes on it.
  • No order execution. There is no broker connection, no order routing, no paper-trade simulator. The scanner is an arithmetic tool.
  • No forecast. A match is a statement about historical arithmetic on the evaluated bar, not a probability of future returns.
  • No server-side storage. Saved scans live in local storage on the device. There is no account system, no cross-device sync, and no server that sees your data.
  • No hidden ranking signal. Rows are ranked by the number of conditions satisfied, then by your chosen sort column. Nothing else influences order.

What you can verify in five minutes

  1. Load the sample dataset and press Load example scan. The seeded tree uses the momentum-with-confirmation setup (close > SMA(50), RVOL > 1.2, ATR% > 1.5, ANY of RSI-cross or MACD-hist-cross).
  2. Run the scan and expand any matching row. The audit shows each condition's left value, operator, right value, timeframe and — for crosses — the previous-bar value used by the transition.
  3. Change one threshold by 15–25% and re-check the preview counter. The count should shift in the direction you expect. If it does not, that is the specific thing to investigate.
  4. Switch the data source to Paste CSV, paste a handful of rows, and confirm the audit values match a hand calculation of SMA(2) or RVOL on the same rows.

Short Glossary

Term What it means in this tool
Leaf conditionOne indicator + operator + right-hand side, evaluated on one bar. The atomic unit of a scan.
GroupAn ALL / ANY / NONE container that folds its children into one boolean.
CrossA two-bar transition: previous at-or-below the level, current above (or the reverse).
Consecutive barsThe requirement that the whole tree was true on the prior N−1 bars, not only the evaluated one.
Near missA symbol that satisfied at least one leaf but not all; visible in the Pro near-miss list.
AuditThe per-condition record of left value, operator, right value, timeframe and previous-bar value for a single symbol.
RVOLCurrent volume divided by average volume over N bars; a multiplier, not a percent.
ATR %Average true range divided by close, multiplied by 100; comparable across price levels.
BaselineThe monitor's starting match set; ENTERED / EXITED events are computed as differences against it.
ProThe paid tier: unlimited everything, nested groups, weekly/monthly, near-miss, CSV export, monitor.

Frequently Asked Questions

Does Scanner Studio use live market data?

No. There is no vendor feed bundled in. The scanner computes everything from the price history you load; the built-in sample dataset is synthetic and clearly labelled as such. That keeps the tool fully client-side and free of API keys. To scan real quotes, import a CSV of real bars or paste JSON — the parsing rules are identical for both.

Why does my result disagree with another screener?

Almost always a convention difference, not a bug. The four most common causes are: adjusted vs unadjusted prices, inclusion of extended-hours bars, Wilder vs simple smoothing on RSI/ATR/ADX, and trading-day vs calendar-day periods. The audit row for a single symbol shows every intermediate value, so a disagreement can be traced to the specific convention rather than guessed at.

What exactly does “crosses above” test?

It requires the previous bar to be at or below the level, and the current bar to be strictly above it. Without that two-bar check, a symbol that has been above the level for weeks would keep triggering a “cross”. The audit shows the previous-bar value next to the current one, so a cross is visible at a glance.

How are nested ALL / ANY groups evaluated?

Inner groups first, then outward. ALL requires every child to pass, ANY requires at least one, and NONE requires every child to fail. Nested groups are a Pro feature; the free plan supports a single flat group. The preview counter lets you verify the count before committing to a full run, and the audit row shows the nested structure explicitly.

How does “minimum consecutive bars” work?

At N = 1, a symbol matches if the rules are true on the latest completed bar. At N = 2, the same tree must also have been true on the previous bar; the tool re-evaluates the entire tree on the prior N−1 bars and keeps the symbol only if all of them also passed. This is deliberately the whole-tree check, not just a per-leaf check, so nested logic and cross operators remain consistent.

What is RVOL, and why is it a multiplier rather than a percent?

RVOL is current volume divided by the average volume over the last N bars. A value of 1.5× means “one and a half times the usual activity”. It is a ratio, so a threshold of 2 means “twice normal”. Entering 200 by mistake will return zero matches on every bar.

How do I express “(A and B) or (C)”?

Use a nested group. Put A and B into an ANY sub-group (they will be the two children that must hold), and put C into the same sub-group as an alternative. Nesting is a Pro feature; on the free tier you are limited to a single flat ALL / ANY group of up to four conditions.

Do weekly and monthly timeframes require different data?

No. Weekly and monthly bars are aggregated on the fly from the same daily rows you loaded. Aggregation is explicit — OHLC is folded by calendar week or month, volume is summed, and the resulting bar is what the indicator engine sees. This keeps a single dataset authoritative and removes a class of silent mixing bugs.

Is my data or scan uploaded anywhere?

No. Parsing, indicator math, result rendering and saving all happen in the browser; saved scans live in local storage on your device. The only outbound request is the Gumroad license check when you choose to verify a Pro key, and even that is a direct browser-to-Gumroad call.

Why does the free plan say “evaluated the first 25 of N symbols”?

Because it did. The free tier caps the universe at 25 symbols; the run metadata states the cap explicitly rather than pretending to have scanned everything. Symbols beyond the cap and symbols skipped for insufficient history are reported separately, not folded into the match count.

How are “near miss” rows scored?

Every symbol is evaluated on every leaf condition, even if an earlier condition already failed — that is why the per-row “conditions” count is available. A symbol that satisfied 3 of 4 leaves is reported as 3/4. The near-miss view (Pro) shows symbols with at least one pass, ranked by their condition count, so the closest misses to a full match are visible first.

Can I use the scanner for non-US markets?

Yes. The scanner is vendor-agnostic — any symbol that appears in your imported bars is evaluated. Currency differences do not affect the indicator arithmetic because ratios and percentages are currency-agnostic; only absolute value thresholds need to be set in the correct currency for the universe you are scanning.

What does the Pro license unlock?

Unlimited symbols and conditions, weekly and monthly timeframes, nested ALL / ANY groups up to three levels deep, the near-miss list, CSV export and the entry/exit monitor with browser alerts. The free tier is genuinely usable for a single flat scan of up to 25 symbols with up to 4 conditions on the daily timeframe.

Can I trust the ranking?

The ranking sorts by number of conditions satisfied, then by your chosen column. It is an arithmetic ranking, not a probability ranking. A symbol that passed 4 of 4 conditions is ranked above one that passed 3 of 4 — but a 4-of-4 match is not more likely to profit than a 3-of-4 match. Read the audit, not the ranking.

Is Scanner Studio investment advice?

No. It is a technical-analysis utility that reports whether arithmetic conditions are true on historical bars. A match is not a recommendation and says nothing about future returns. The accuracy note explains why the same scan can produce different results from a different platform and why that difference is a convention, not an error.

Before You Run Your First Real Scan

A three-question pre-flight:

  1. Does my minimum history exceed my longest indicator period?
  2. Are my percentage thresholds in percent units (e.g. 2 not 0.02)?
  3. Did I use crosses above only where I meant a transition, and > where I meant a state?

If all three answers are yes, the audit will tell you the rest.

Try Scanner Studio

The scanner is free, runs entirely in your browser, and needs no account. Load the sample dataset, press Load example scan, then Run scan to see the momentum-with-confirmation setup above, or import your own OHLCV file to work with real price history.

Open Scanner Studio → Browse All Tools

Related tools: position size calculator, ATR volatility calculator, risk-reward calculator, RSI divergence analyzer, moving average crossover scanner.

Disclaimer: Scanner Studio is an educational technical-analysis utility. It reports whether arithmetic conditions are true on the price bars you provide. A match is not a recommendation and says nothing about future returns. The sample dataset is synthetic. Nothing on this page is investment advice.

Post a Comment

🧰

The AlamToolKit Standard

EVERY TOOL. ONE PLACE. ZERO CLUTTER.

🧪

Experience

Every tool across Planning, Calculation, Writing, Organization, Finance, Utilities, Communication, Learning, Security, Health, Games, Digital Product, and Trading is designed, built, and stress-tested for real daily use before it reaches you.

🎯

Expertise

From finance and trading calculators to study aids and habit trackers, every tool is documented with clear formulas, step-by-step logic, and real examples — so you always know how the numbers are produced.

🏛️

Authoritativeness

Methods are grounded in publicly verifiable references — financial formulas, productivity frameworks, and educational best practices — never guesswork, across every planning, finance, and learning tool we ship.

🛡️

Trustworthiness

Most planning, calculation, writing, and utility tools run entirely in your browser with no server-side data processing. Pricing, limitations, and privacy practices are stated plainly on every page.

🔒 SSL Encrypted 📖 Sourced & Documented 🆓 Free Core, Forever 🏗️ Built In-House 📅 Updated Weekly 📈 Actively Growing

Dual-Layer Security & Reliability

Powered by Google Firebase + Client-Side Processing

Your data, your control. Privacy-first architecture with cloud convenience. Every calculation runs locally in your browser — your sensitive data never leaves your device. Create an account to unlock secure cloud features that enhance your experience without compromising privacy.

Local Processing

No data transmission

100% private

Cross-Platform Sync

Seamless across devices

Firebase Cloud

Secure Storage

Enterprise-grade

99.9% Uptime

High reliability

Auto-save

Never lose data

Validation

Error prevention

Real-time Processing

Instant Results

No waiting

Accurate Results

Real-time calculation

Pro Tip: Install the APP for quick access and automatic cloud backup across all your devices when you create an account.

About Me – Muhiuddin Alam

Hello, I am Muhiuddin Alam, Founder and Chief Editor of AlamToolKit.com.

I have built this platform to provide a comprehensive, free suite of digital tools for everyday life, productivity, and professional tasks. My goal is to simplify complex calculations, planning, and organization for everyone—from students and professionals to individuals managing their daily routines.

At AlamToolKit.com, you'll find essential tools for time management, calculation, note-taking, finance, file management, and much more—all designed to be intuitive and efficient. I believe in creating practical digital solutions that empower users to work smarter.

Explore our suite of calculators and tools:

💌 Follow Me: LinkedIn | Google Knowledge Panel

❤ Want to connect or suggest a tool? Reach out at: [email protected]

Simplify Your Day with Smart Tools

Start using our free digital toolkit today and experience the difference in productivity, organization, and efficiency across all your daily tasks.

About – AlamToolKit.com

Productivity Tools • Calculators • Everyday Solutions

AlamToolKit.com provides a comprehensive suite of free digital tools designed to simplify daily tasks, boost productivity, and solve practical problems for everyone.

The platform features tools across multiple categories: planning & time management, calculation & conversion, writing & notes, organization & productivity, measurement tools, online utilities, and work solutions. Whether you need to calculate percentages, track expenses, manage tasks, convert units, or generate passwords—they’re all here.

Every tool is designed to be intuitive, fast, and free. With AlamToolKit.com, you can streamline your workflow, make informed decisions, and handle everyday challenges with confidence. It's your digital companion for personal efficiency and smarter living.

⚡ Trusted by Users Worldwide
✅
App Installed!
Alam Toolkit is now in app mode
📱 Install Alam Toolkit
Follow these steps to install