Platform

Every scan is code you own

Describe a setup in plain English or write it yourself. Either way you get a script in fastur/1, the engine's own language, that you can read, edit and run exactly as written.

VWAP Reclaim
FormatSave as LogicBlock
1# Volume surge that dipped under VWAP and took it back
2logicblock REL_VOL = d1.volume / d1.volume[1:20].mean
3logicblock SPREAD_PCT = (quote.ask - quote.bid) / trade.last * 100
4low_30m = m1.low[1:30].min
5heavy = REL_VOL > 3
6dipped = low_30m < d1.vwap
7reclaimed = trade.last > d1.vwap
8tight = SPREAD_PCT < 0.2
9
10rule vwap_reclaim:
11 on = cadence.trade
12 when = heavy and dipped and reclaimed and tight
13
14scan "VWAP Reclaim":
15 rule = vwap_reclaim
16 universe = "ALL"
17 columns = [trade.last, REL_VOL, low_30m, d1.vwap, SPREAD_PCT]
18 sort = REL_VOL
19 extract = descending
RunCtrl+Enter runs the scan

What you see is what runs

Open any scanner and click Code. The editor shows the script the scanner runs, in fastur/1, the engine's own language. Edit it, press Run, and the engine runs it exactly as written.

A rule and a scanThe rule says which symbols qualify and when to check: on = cadence.trade checks on every trade. The scan says how the results show: universe, columns and sort.

Reads like PythonLowercase keywords, named helpers, indentation for blocks. Format lays every script out the same way and never changes what it does.

Signals become LogicBlocksA logicblock line is a named signal. Click Save as LogicBlock and it joins your library, ready for any scan, column or watchlist.

New LogicBlock
NameNEW_HIGH_20DescriptionClosing above its 20-day high
1d1.close > d1.high[0:20].max
WarningLine 1: "d1.close > d1.high[0:20].max" can never be true: the window [0:20] includes the current bar, and the current value cannot be above the maximum of a window that contains it. Exclude the current bar: use d1.high[1:21].max.

The editor flags d1.close > d1.high[0:20].max while you type.

Checked as you type

The editor checks your code against the engine while you type. Problems are underlined on the line they occur, with the explanation and, where there is one, a fix.

The engine has the last wordChecking previews the script on the engine without installing anything, so a script that passes is one the engine accepts.

Mistakes traders actually makeCompare today against a 20-day high that already contains today and the condition can never be true. The editor warns you and says what to write instead: d1.high[1:21].max.

Run is blocked on errorsA script with an error does not run, so a broken scan never quietly shows an empty table.

Assistant
only stocks above $5

Adds a price floor to the rule. Checked on the engine.

- when = heavy and dipped and reclaimed and tight
+ when = heavy and dipped and reclaimed and tight and trade.last > 5
ApplyDiscard

The assistant shows you the change

Ask the assistant beside the editor for a new scan or a change to the current one, in plain English.

Checked before you see itEvery script it proposes is checked on the engine first. If the engine refuses it, the assistant gets the errors and tries again.

A diff, not a surpriseThe proposal shows as a change to the code on screen. Apply it or discard it; nothing changes until you choose.

Start in English, finish in codeDescribe the setup, apply the result, then tune a threshold by hand. The code is always yours to read and edit.

Before you join

Build the scan

Start defining your edge

Create the logic once, run it live, and let scanner alerts tell you what changed.

LogicBlocks
Scanner-ready custom calculations
VWAP_HOLD
trade.last > d1.vwap and trade.last > m1.high[t"04:00":t"09:29"].max
in scan
REL_VOL
d1.volume / d1.volume[1:20].mean
column
GAP_PCT
(d1.open - d1.close[1]) / d1.close[1] * 100
filter
RANGE_PCT
(d1.high - d1.low) / d1.low * 100
saved
Used by VWAP Hold3 matches