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 |