scripting
Grammatik
Keywords, Typen und die Ausdrucks-Grammatik der Spectra-DSL in EBNF.
Die Spectra-DSL hat eine kleine Grammatik. Wer Pine Script oder TypeScript benutzt hat, wird fast alles vertraut finden — die Oberfläche ist bewusst kompakt.
Keywords
let const fn if else for while in
return yield break continue
true false null
output plot mark notify draw_zone
buy sell sell_all
Primitive Typen
int // 64-bit signed
float // 64-bit double
bool // true | false
str // UTF-8-String
time // Bar-Timestamp (Epoch ms)
series<T> // historisches Sliding Window von T
color // Theme-Name oder Hex
Ausdrücke in EBNF
expr = literal | ident | call | binop | unop | index | block ;
binop = expr ( "+" | "-" | "*" | "/" | "%" |
"==" | "!=" | "<" | ">" | "<=" | ">=" |
"and" | "or" ) expr ;
unop = ( "-" | "not" ) expr ;
call = ident "(" [ args ] ")" ;
args = expr ("," expr)* | named ("," named)* ;
named = ident ":" expr ;
index = expr "[" expr "]" ; // series[N] liest N Bars zurück
block = "{" stmt* "}" ;
Ein vollständiges Skript
let fast = sma(close, 12)
let slow = sma(close, 26)
let signal = cross_up(fast, slow)
plot(fast, color: accent)
plot(slow, color: text_1)
output signal
Die output-Zeile ist der primäre Wert des Skripts. Chart, Backtester
und Cloud-Worker lesen sie alle.