Quick start

First-run candles, Add to chart / Run, live stream, and reading the Results drawer in AXIS.

This page

Fifteen-minute path from a first visit to plots, strategy stats, and optional live updates.

AXIS is a charting app you run in the browser (or install as a PWA / desktop app). You pick where candles come from, whether they keep updating, who runs your Pine Script™, and where scripts are saved. The status bar uses short chips for those four planes:

ChipMeans
SRCSource — historical candles (Binance REST, CSV, mock, …)
STRStream — live ticks while Live is on (WebSocket or mock poll)
ENGEngine — who calculates (this tab / a local server / a Worker)
STOStorage — where scripts live (this browser, cloud, or git)

Abstract

  1. Ensure AXIS is running (Installation).
  2. Default-symbol candles paint on boot (no Load click). An empty chart with bars and 0 scripts shows a Run chip (default RSI / editor buffer).
  3. Paste or write a minimal indicator / strategy, or keep the prefilled editor script.
  4. Editor Run, or topbar Add to chart on first apply (Run when that script is already on the chart) → inspect overlays + Results.
  5. Optionally enable Live.

Conceptual model

Diagram

Rendering…

Interface surface

1. History on the chart

Boot fetches the default symbol for the active source. First-run does not wait on a Load click.

Topbar fields that matter:

ControlDefault-ishNotes
SymbolBTCUSDTVenue-specific for binance-rest
Interval1dWatchlist + chart share interval vocabulary
Sourcebinance-restOr mock / CSV
Streambinance-wsPaused until Live
Engineserver or pyodideStudio → Settings / Runtime for endpoint

Pick a watchlist row to switch the symbol. Status bar should move through loading → ready with bar count context. Topbar Load (download icon) is a one-shot refetch when you already have a symbol — not the first-run step.

AXIS after boot: BTCUSDT candles, volume, and RSI pane Default candles then Run an RSI script

CSV path: Source = CSV upload → pick file when prompted → bars inject via upload store.

Deep history: for multi-page backfill to a past date (background, with gap validation), open the Data panel — see Data Source Manager.

2. Minimal script

Open the editor (docked right by default). Example indicator:

pine
//@version=6
indicator("AXIS smoke", overlay=true)
plot(close, "close")
plot(ta.sma(close, 20), "sma20")

Strategy smoke (events for Results → Strategy):

pine
//@version=6
strategy("AXIS strat smoke", overlay=true)
longCond = ta.crossover(ta.sma(close, 10), ta.sma(close, 30))
if longCond
    strategy.entry("L", strategy.long)
if ta.crossunder(ta.sma(close, 10), ta.sma(close, 30))
    strategy.close("L")

Language semantics: PYNE runtime.

3. Run / Add to chart

Editor primary is always Run. Topbar primary is Add to chart on first apply and Run when that script already has an instance on the chart (caret: Add instance or built-in). Empty chart with candles and 0 scripts also shows a one-shot Run chip.

Pipeline:

  1. Active engine run({ script, bars, config })
  2. lastRun stored in memory (not fully persisted)
  3. Results drawer opens
  4. Chart applies overlay lines, trade markers, Pine drawings

Success: status “Completed in Nms”; plots on price pane (or dedicated indicator pane if non-overlay).

4. Read Results

Results Strategy tab after an SMA Cross run: stats, equity, closed trades

Tabs:

TabContent
EventsNormalized entry/exit/order stream
StrategyClosed trades + win rate, PF, max DD
PlotsSeries names, point counts, last value
MetricsRuntime, engine, bar count, errors
RawFull JSON payload

Export: JSON run dump; trades CSV. Click a trade to scroll the chart to entry/exit time.

5. Live (optional)

Toggle Live. A stream plugin pushes bars; AXIS may re-run silently when needsRerun is set. Live off (stream: null, not a none plugin) freezes time. Mock poll works offline after engine warm-up.

6. Save a script (optional)

Manager → Script Library → name → Save. Backend is active storage (local default = IndexedDB). See Script library. Editor Pull / Push uses the same storage when configured for git/cloud.

7. Power tools (optional)

ToolWherePurpose
⌘/Ctrl+KGlobalCommand palette — panels, Run, layout, editor toggles
ScreenshotModule bar camera (before Studio)Capture panes to PNG — drawings, watermark, 1×/2×, copy or download
Workers ManagerTopbar activity · ⌘KBackend health, presets, PYNE Agent install
LayoutsTopbarMulti-chart 1 / 2H / 2V / 4 + recipes
ReplayTopbarScrub history (full bars, cursor on last)
CompareTopbarSecond symbol overlay
Price decimalsPrice-pane scaleAuto or 0–8 — Charting
Debug / PinsEditor headerLine chips vs chart markers — Debugging
Layers / AlertsPanel togglesDrawings list; local price alerts
Built-in studiesScripts → Built-in, Add ▾, or ⌘KOriginal AXIS RSI / MACD / SMA / …
v6 starter packScript Library → Importexamples/script-library-starter.json

Worked example: offline lab

SettingValue
Sourcemock-walk
Streammock-poll
Enginepyodide
Storagelocal

Wait for candles → Add to chart / Run smoke indicator → toggle Live. No Flask required.

Worked example: desk + Flask

SettingValue
Sourcebinance-rest
Streambinance-ws
Engineserver
Endpointhttp://localhost:5002
Storagelocal

make run in repo root; Vite or static AXIS as installed.

Invariants

  • Empty editor Run is a no-op.
  • Errors set status error and still populate Results Metrics/Raw when payload exists.
  • Switching source auto-aligns default stream (e.g. mock-walk → mock-poll).

Failure modes

SymptomAction
CORS on /runFix ALLOWED_ORIGINS / use Pyodide
No trades in StrategyNeed entry+exit pair events; open strategy script
Live no updatesTurn Live on and pick a stream (binance-ws or mock-poll); check the network and the logs drawer
Pyodide first run slowExpected warm-up; assets self-hosted under origin

See also