Skip to main content
This document highlights the major improvements and design changes between kScript v1 and kScript v2. The goal of v2 is to make scripting more intuitive, powerful, and performant for indicator developers.

1. Execution Model

Legacy approach - not recommended
  • Execution was line-by-line and evaluated expressions directly
  • Developers had to manually assemble time-aligned series using:
    • buildTimeseries(...)
    • mergeTimeseries(...)
    • matchTimestamp(...)
    • timeseries(...) constructor
  • This was unintuitive and often led to performance bottlenecks

2. Keyword Arguments (kwargs)

Functions accepted only positional arguments, making scripts harder to read and maintain.
plotLine(rsiTs, 3, ["red", "green"])

3. Compiler Improvements

  • Most errors surfaced only at runtime
  • Developers had to debug by trial and error

4. Data Subscriptions

All data sources handled via the generic source(...) function.
timeseries ohlcvTs = source("ohlcv", "BTCUSDT", "BINANCE")

5. Technical Indicator Functions

  • Functions like rsi, ema returned a full timeseries
  • Developers often misunderstood how to work with them, leading to redundant or incorrect code

6. Field Accessors

Accessing fields from data was clunky and inconsistent.

7. Reverse Index Access

  • Forward-style indexing only (oldest first)
  • Hard to get the latest values directly

8. Function Definitions

No support for custom functions.

9. Loops

No support for looping constructs.

10. Plot Functions

Limited plotting functions (plotLine, plotBar).

11. Standard Library

Minimal helper set.

Summary

kScript v2 delivers major improvements over v1:
Per-bar execution eliminates manual time alignment
Keyword arguments make functions clear and self-documenting
Compile-time checking prevents most runtime surprises
Dedicated subscription functions improve clarity
Technical indicators return scalars per bar instead of entire timeseries
Field accessors make OHLCV data ergonomic
Reverse indexing gives direct access to the latest data
Functions and loops enable modular and expressive code
Extended plot functions and library unlock richer visualization and analysis
Overall, v2 is more intuitive, safer, and expressive — while maintaining performance for real-time charting.