dxScript
Overview
dxScript is a programming language for time-series processing. Programs written in dxScript are:
Small due to declarative syntax and fully automatic type-inference
Comprehensive due to transparent series referencing
Programs in dxScrpt describe a calculation that needs to be performed on each iteration over the series. They are not supposed to process all the data in a series at once due to the infinite series' nature. In that sense, it's as if the program is a mapping from the input-series into the output-series.
Calculation
Consider the following example. Let N
be an infinite series of natural numbers: 1, 2, 3, ...
. The program or the calculation is a multiplication by 2
, i.e. f(x) = x * 2
in pseudocode. The function mapping over the series N
yields a result-series: 2, 4, 6, ...
. dxScript allows implicit series processing description. Therefore the same transformation written in dxScript looks almost identical.
out = N * 2
Features
The language strives for reading and writing simplicity. Some supporting features include:
Static type-safety: helpful feedback before running any code
Type inference: no need to spell out types, only the code that matters
Transparent time-series: any value can be a series with access to all the history
Default parameter values: no need to repeat industry standards every time
Built-in records: return more values and group data in-place
First-class functions: parametrizing not only data but also behavior
Use cases
There are many dxFeed services already bring dxScript into the users' hands:
Options Scanner and Stock Scanner. Read more about the Scanner API.
Please contact dxFeed Solution Delivery team to get your demo access.
Scripts
Programs in dxScript language are written as scripts. Each script can define one or more functions. You can use the functions for direct data processing or within other functions.
Read more about scripts.
Expressions
Use expressions on the right-hand side of definitions and inside other expressions.
Read more about basic operations and different expression types.
Types
dxScript's type system includes the following categories:
Primitive types
Enum types
Record types
Function types
Read more about each type.
Prelude
Prelude is a set into modules that are pre-imported in every dxScript program.
Function examples
dxScript function examples:
fun mean { in a = 0 in b = 0 out = (a + b) / 2 }
fun change { in x = 0 out = x - x[1] }
fun minmax { in a = 0 in b = 0 out mn = if (a < b) a else b out mx = if (b < a) a else b }
An example of how dxScript can be used to implement a widely used Relative Strength Indicator (RSI):
// Relative Strength Indicator fun RSI { in x: number in n = 14 in avg = &ema def change = x - x[1] def net = change.avg(n) def total = change.abs.avg(n) def ratio = if (total != 0) net / total else 0 out = 50 * (ratio + 1) }