Write the indicator you actually want.

Building your own indicator is free on Basis. Formula Lab takes an expression over price, volume and returns, with 126 functions available, and the result plots on the chart, filters the screener and can become a column in a sheet.

Open it nowNo account · no trial · no card

What you get

  • 126 functions: moving averages, dispersion, correlation and beta, drawdown, Sharpe and Sortino, RSI and ATR, crossings and state helpers
  • Multi-line expressions with `let` bindings, so an idea can be built in steps instead of one unreadable line
  • The same formula works in three places: plotted on the chart, as a screener condition, and as a computed column in a sheet
  • Series for open, high, low, close, volume and returns, referenced by name
  • Errors point at the expression rather than failing silently, so a wrong formula is visible instead of plausible

Why this is usually paid for

Custom indicators normally mean learning a vendor’s scripting language, and the useful parts of it — alerts on your own script, more than a couple on one chart, publishing — tend to sit on paid tiers.

A formula is a smaller idea than a language: no compilation step, no plot declarations, no boilerplate. Most of what people write scripts for is one expression, and that is what this is for.

How to use it

  1. 1

    Start from what you would say out loud

    Most custom indicators are a sentence: "volume relative to its own twenty-bar average", or "how far price is from VWAP in ATRs". Write the sentence first, then translate it — `volume / sma(volume, 20)` and `(close - vwap()) / atr(14)` respectively.

  2. 2

    Build it in steps with `let`

    A long single line is hard to check and harder to fix. Bind the parts — `let dist = close - vwap()`, `let unit = atr(14)`, then `dist / unit` — and each piece can be read on its own.

  3. 3

    Plot it before you trust it

    Put the formula on the chart and look at it across a range you already understand. A normalisation error usually shows up immediately as a line that never leaves zero or never comes back to it.

  4. 4

    Then screen with the same expression

    Once the formula reads correctly on one instrument, it can filter the whole venue. That is the point of it being one expression in three places: the thing you validated is the thing that scans.

Questions

Is the custom indicator builder free?+

Yes, and it needs no account. Formulas evaluate in your browser over candles that are already loaded, so there is no server cost to meter and nothing is held back for a paid tier — Basis does not have one.

Do I need to learn a scripting language?+

No. It is an expression, not a program: no compile step, no plot declarations, no boilerplate. If you can write a spreadsheet formula you can write these, and `let` bindings let a longer idea be built in readable steps.

How is this different from Pine Script?+

Pine is a full language with its own execution model, which makes it more powerful and considerably more to learn. This is one expression evaluated over the loaded window. For a strategy with state and orders Basis has a separate sandbox; for an indicator, an expression is usually the whole idea.

Can I use my formula in the screener?+

Yes, and that is the main reason it exists. A formula is a first-class screener source, so a condition you validated on one chart can filter every instrument the venue lists without being rewritten.

What data can a formula see?+

The loaded window for the instrument you are on: open, high, low, close, volume and returns, plus anything the 126 functions derive from them. It sees the bars that are loaded rather than the entire history of the market, which is worth remembering when a lookback is long.

Open it and see

The chart opens with this already turned on. Nothing to configure, nothing to sign up for.

Open the chart

Updated 2026-08-28 · All free tools · Indicator reference · Documentation · Terminal