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.
| 1 | # Volume surge that dipped under VWAP and took it back |
| 2 | logicblock REL_VOL = d1.volume / d1.volume[1:20].mean |
| 3 | logicblock SPREAD_PCT = (quote.ask - quote.bid) / trade.last * 100 |
| 4 | low_30m = m1.low[1:30].min |
| 5 | heavy = REL_VOL > 3 |
| 6 | dipped = low_30m < d1.vwap |
| 7 | reclaimed = trade.last > d1.vwap |
| 8 | tight = SPREAD_PCT < 0.2 |
| 9 | |
| 10 | rule vwap_reclaim: |
| 11 | on = cadence.trade |
| 12 | when = heavy and dipped and reclaimed and tight |
| 13 | |
| 14 | scan "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 |
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.
The editor flags d1.close > d1.high[0:20].max while 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.
Adds a price floor to the rule. Checked on the engine.
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.
Create the logic once, run it live, and let scanner alerts tell you what changed.