# BinoView Scripts > Песочница скриптов суперграфиков BinoView: JavaScript-модуль для lightweight-charts v5 с индикаторами, сигналами buy/sell для автоторговли и HUD-карточкой над графиком. Это оглавление для ИИ-ассистента, который пишет скрипт по просьбе трейдера. Как пользоваться этим оглавлением: обязательно открой по ссылкам «Контракт модуля» и «Правила и ловушки» целиком, потом разделы под задачу и один пример, ближайший к ней. Ответ: одна строка переформулировки задачи, затем весь скрипт одним блоком кода. Не выдумывай методы: код прогоняется через smoke-тест и линтер («Проверка кода»). Если страницы по ссылкам открыть не удалось, скажи об этом трейдеру и соблюдай хотя бы минимальный контракт ниже. Версия рантайма: 10. ## Минимальный контракт - `init(ctx)` обязан вернуть объект `{ update(candles) }`. Отдельный `export function update` не работает. - `update` получает весь массив свечей на каждый вызов: индикаторы создавай внутри `update` через `new ctx.TA.X(...)`, серии заполняй полным `setData`, состояние между вызовами не копи. Минимум истории: `meta.minBars` (число или `(p) => число`), пока свечей меньше, `update` не зовется. - Сигнал это маркер с полем `name: "buy"` или `"sell"` и `time` последней свечи; без `name` сигнала нет. Маркеры верни из `update` и нарисуй сам: `createSeriesMarkers(candleSeries, []).setMarkers(markers)`. - Ключи `_hud*` в `meta` не объявляй, их добавляет рантайм. Свои параметры карточки только в `hud.defaultParams` и `hud.paramMeta`. - `hud.anchor` только `"TR"`, `"TL"`, `"BR"`, `"BL"`, по умолчанию `"TR"` (справа сверху). Кнопки: `pointerEvents: "auto"` в объекте `hud` и подписка `ctx.hud.on("click", '[data-action="x"]', handler)` в `init`, не в `render`. - Запрещены таймеры, `window`, `document`, `fetch`, `localStorage`. `destroy` не пиши, рантайм чистит сам. Цвета по умолчанию только `#RRGGBB` или `rgba(...)`. - Время, таймфрейм, пара и доходность только из `ctx.time` и `ctx.market`, не из `Date` и не из разницы свечей. ## Каркас, который проходит проверку ```javascript export const meta = { name: "Мой скрипт", pane: "main", // "main" | "separate" minBars: (p) => p.period, // update не зовется, пока свечей меньше defaultParams: { period: 20, color: "#22c55e" }, paramMeta: { period: { label: "Период", type: "number", min: 2, max: 200 }, color: { label: "Цвет", type: "color" } } }; export function init(ctx) { const { candleSeries, addSeries, LineSeries, params, TA, createSeriesMarkers } = ctx; const line = addSeries(LineSeries, { color: params.color, lineWidth: 2 }); const markersApi = createSeriesMarkers(candleSeries, []); return { update(candles) { const ema = new TA.EMA(params.period); const data = [], markers = []; for (const c of candles) { const v = ema.add(c.close); if (ema.isStable) data.push({ time: c.time, value: v }); // прогрев } line.setData(data); markersApi.setMarkers(markers); return markers; // [{ name: "buy", time, price, position: "belowBar", shape: "arrowUp", color, text }] } }; } ``` ## Начни отсюда - [Контракт модуля](https://binoview.io/docs/scripts/contract.md): экспорты meta, init(ctx), hud; контракт update(candles); все поля ctx; свеча, time в секундах - [Правила и ловушки](https://binoview.io/docs/scripts/rules.md): запреты песочницы, что доступно, ограничения парсера, ловушки «компилируется, но работает неверно», формат ответа - [Выбор панели](https://binoview.io/docs/scripts/pane.md): main или separate по типу индикатора, таблица соответствий, priceScaleId, когда переспрашивать трейдера ## Справочник - [Параметры](https://binoview.io/docs/scripts/params.md): defaultParams и paramMeta, типы number, boolean, color, select, text, группы секций - [Индикаторы TA](https://binoview.io/docs/scripts/ta.md): trading-signals через ctx.TA, new TA.RSI(14).add(close), прогрев через null и isStable, все классы - [Сигналы и экспирация](https://binoview.io/docs/scripts/markers.md): формат маркера buy/sell, что читает рантайм, звук, adaptiveExpiration и лестница экспираций для автоторговли - [HUD-карточка](https://binoview.io/docs/scripts/hud.md): export const hud, render(state, html, env), css, anchor, ctx.hud.set из update, параметры _hud*, размеры в em и темы - [Кнопки в HUD](https://binoview.io/docs/scripts/hud-buttons.md): ctx.hud.on, pointerEvents: "auto", data-action, паттерны «пауза» и «сброс» - [Серии и уровни](https://binoview.io/docs/scripts/series.md): addSeries с LineSeries и HistogramSeries, опции серий, горизонтальный уровень через createPriceLine - [Pane Primitives](https://binoview.io/docs/scripts/primitives.md): когда серий недостаточно, три класса, координаты только по своим точкам - [Рынок и время](https://binoview.io/docs/scripts/market.md): ctx.market (пара, OTC, доходность, digits), ctx.time (tf, часы брокера, час и день в поясе шкалы графика, barLeft), ctx.fmt (цена, время) - [Проверка кода](https://binoview.io/docs/scripts/lint.md): smoke-тест на синтетике и живой прогон на свечах графика, коды code-*, live-* и валидаторов, как читать ошибку ## Примеры - [EMA на свечах](https://binoview.io/docs/scripts/examples/ema.md): одна линия, прогрев через isStable - [Пересечение SMA с сигналами](https://binoview.io/docs/scripts/examples/sma-cross.md): pane main, маркеры buy/sell - [RSI Signal Bot](https://binoview.io/docs/scripts/examples/rsi-signal.md): сигналы по выходу из зон 30/70 без своей серии - [Streak Reversal](https://binoview.io/docs/scripts/examples/streak-buy.md): контртренд после N свечей подряд - [RSI на отдельной панели](https://binoview.io/docs/scripts/examples/rsi.md): pane separate, paneIndex, priceFormat - [RSI с HUD-карточкой](https://binoview.io/docs/scripts/examples/rsi-hud.md): состояние индикатора в карточке, параметры карточки - [Счетчик с кнопками в HUD](https://binoview.io/docs/scripts/examples/hud-buttons.md): ctx.hud.on, кнопки «Пауза» и «Сброс» - [Бот с адаптивной экспирацией](https://binoview.io/docs/scripts/examples/adaptive-bot.md): экспирация из скрипта, лестница догонов - [MACD](https://binoview.io/docs/scripts/examples/macd.md): гистограмма и две линии на отдельной панели - [Bollinger Bands](https://binoview.io/docs/scripts/examples/bollinger.md): три линии на основном графике - [Bollinger Bands с заливкой](https://binoview.io/docs/scripts/examples/bollinger-fill.md): Pane Primitive с заливкой между линиями - [Уровень открытия дня](https://binoview.io/docs/scripts/examples/price-line.md): горизонтальный уровень через createPriceLine - [EMA Cross по сессии](https://binoview.io/docs/scripts/examples/session-filter.md): фильтр по часам, доходности и OTC через ctx.market и ctx.time, карточка с часами брокера ## Optional - [Полная справка одним файлом](https://binoview.io/llms-full.txt): все страницы и примеры - [Что нового в API](https://binoview.io/docs/scripts/changelog.md): изменения контракта по датам