VectarisQL

Data series

A data series row asks for OHLCV bars for one symbol — it's the row type a Chart or DataGrid tab starts with, and the shape every other row type is compared against first when the parser decides what a row means.

Symbol expression

Slot 0 of a data series row — and of every other row type that takes a symbol — is SYMBOL[@ROUTE][:ADAPTER]:

  • SYMBOL — the ticker or instrument identifier, e.g. AAPL, SPY, BTC-USD, BRK.B, ES. Upper-cased on parse.
  • @ROUTE (optional) — forces exchange/ECN routing, e.g. @ISLAND, @NASDAQ, @CME. Upper-cased on parse.
  • :ADAPTER (optional) — forces a specific adapter/credential, e.g. :Schwab. Quote it if the label has spaces (:"Schwab Test"). Adapter labels round-trip with the casing you typed — they're free-form broker identifiers, not language keywords.

SPY@ISLAND:"Schwab Test" reads as: symbol SPY, routed to ISLAND, forced onto the adapter labeled Schwab Test.

The three slots

A data series row is three whitespace-separated, positional slots, plus an optional OPTIONS:{} tail:

SYMBOL[@ROUTE][:ADAPTER] INTERVAL RANGE [OPTIONS:{KEY:VALUE, ...}]

Slot 1 is the interval, slot 2 is the range. Nothing is named — position carries the meaning, which is why the symbol always comes first and the interval always comes second.

Interval units

NUMBER + UNIT, adapter-validated:

Unit Meaning Example
S second 1S
M minute 5M
H hour 1H
D day 1D
W week 1W
MO month 1MO

Range forms

  • Shorthand — 1D, 5D, 30D, 1MO, 3MO, 1Y, YTD, MAX.
  • ISO range — 2024-01-01/2024-12-31.
  • ISO from-date — a single ISO date (2024-01-01) means from that date through now.

OPTIONS: style, extended hours, axis

Data series rows accept an OPTIONS:{} tail with three keys:

Key Values
STYLE CANDLE, BAR, LINE, AREA, HEIKIN-ASHI, RENKO, HOLLOW
EXTENDED TRUE, FALSE
AXIS INHERIT, LEFT, RIGHT

See VectarisQL options for the full per-row-type key reference.

Examples

AAPL 1D 30D
AAPL 5M 5D
SPY@ISLAND:Schwab 1H 30D
BTC-USD 1D 2024-01-01
ES 15M 2024-01-01/2024-06-30
AAPL 1D 1Y OPTIONS:{STYLE:LINE, AXIS:RIGHT}

Two rows the parser rejects:

AAPL 1D 30D OPTIONS:{STYLE:LINE
AAPL 1D 30D OPTIONS:{FOO:BAR}

The first never closes its OPTIONS:{} block — the row still parses what it can, but the missing } is reported as an error. The second closes the block cleanly, but FOO isn't a key OPTIONS recognizes for data-series rows — STYLE, EXTENDED, and AXIS are the only three. (A malformed interval like AAPL 17X 30D is not one of these two — the row parser accepts any interval text at this stage; interval validity is checked later, against the connected adapter's supported units, not by the row grammar itself.)

See the VectarisQL grammar for the exhaustive slot and unit tables.