Spectra
Открыть документацию

scripting

Виды скриптов

Indicator, Alert, Screener, Drawing, Strategy — что делает каждая поверхность и чем они различаются.


Один и тот же DSL нацелен на пять поверхностей. У каждого вида немного разная семантика — что означает output, что выполняется во время вычисления и где появляется результат.

Indicator

Наносит на график серию или осциллятор. output — это значение, которое вы предоставляете другим скриптам (индикаторы можно объединять в цепочки).

let r = rsi(close, 14)
plot(r, pane: "rsi")
output r

Среда выполнения: предпросмотр на графике, мгновенно. Без возможности отправки ордеров.

Alert

output — это булево значение. Среда выполнения вызывает notify(...) каждый раз, когда оно становится истинным на закрытии бара. Тариф Pro отправляет через круглосуточный облачный worker.

let trigger = close > sma(close, 200) and volume > sma(volume, 20) * 2
notify(when: trigger, channel: "discord")
output trigger

Screener

Цикл, который выдаёт символы, удовлетворяющие условию. Выполняется по списку наблюдения на настраиваемом расписании.

for sym in watchlist("us-large-cap") {
  let hit = rsi(close, 14) < 30 and close > vwap()
  if hit { yield sym }
}

Drawing

Программные фигуры на графике. Без output — только побочные эффекты.

let pivot = high[1]
draw_zone(top: pivot, bottom: pivot - atr(14), fill: accent, opacity: 0.1)

Strategy

Код, генерирующий ордера. Проходит бэктест на том же движке исполнения, что работает в реальном времени. Правило авто-переворота преобразует булево значение индикаторного стиля в позиции long/flat, когда явных вызовов buy/sell нет.

let fast = sma(close, 12)
let slow = sma(close, 26)
if cross_up(fast, slow) { buy(qty: 1) }
if cross_down(fast, slow) { sell_all() }

Матрица решений

| Потребность | Использовать | |---|---| | Нарисовать линию | Indicator | | Получить уведомление при ценовом условии | Alert | | Ежедневно фильтровать список наблюдения | Screener | | Подсветить зоны | Drawing | | Генерировать ордера | Strategy |