# BinoView Scripts > Песочница скриптов суперграфиков BinoView: JavaScript-модуль для lightweight-charts v5 с индикаторами, сигналами buy/sell для автоторговли и HUD-карточкой над графиком. Оглавление для ИИ-ассистента, который пишет скрипт по просьбе трейдера. Как пользоваться: открой по ссылкам «Контракт модуля» и «Правила и ловушки» целиком, потом разделы под задачу и один ближайший пример. Ответ: одна строка переформулировки задачи, затем весь скрипт одним блоком кода. Не выдумывай методы: код прогоняется через smoke-тест и линтер («Проверка кода»). Если страницы не открылись, скажи трейдеру и соблюдай минимальный контракт ниже. Версия рантайма: 13. ## Минимальный контракт - `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` и не из разницы свечей. Свечи другого таймфрейма только через `meta.timeframes` и `ctx.bars(tf)`, не сверткой. ## Каркас, который проходит проверку ```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, что читает рантайм, cooldown, adaptiveExpiration для автоторговли - [HUD-карточка](https://binoview.io/docs/scripts/hud.md): export const hud, render(state, html, env), css, anchor, ctx.hud.set из update, параметры _hud* - [Кнопки в HUD](https://binoview.io/docs/scripts/hud-buttons.md): ctx.hud.on, pointerEvents "auto", data-action - [Несколько HUD-карточек](https://binoview.io/docs/scripts/hud-cards.md): до четырех карточек, ctx.hud.set({ card: state }), ключи _hud..* - [Серии и уровни](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, часы брокера, час и день в поясе графика), ctx.fmt - [Другие таймфреймы](https://binoview.io/docs/scripts/timeframes.md): meta.timeframes до трех, ctx.bars(tf) родные свечи M15 или S5 той же пары, bars.indexAt без перерисовки - [Проверка кода](https://binoview.io/docs/scripts/lint.md): smoke-тест и живой прогон, коды code-*, live-*, валидаторов, как читать ошибку ## Примеры - [EMA на свечах](https://binoview.io/docs/scripts/examples/ema.md): одна линия, прогрев - [Пересечение SMA с сигналами](https://binoview.io/docs/scripts/examples/sma-cross.md): маркеры buy/sell, cooldown - [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 - [RSI с HUD-карточкой](https://binoview.io/docs/scripts/examples/rsi-hud.md): состояние индикатора в карточке - [Счетчик с кнопками в HUD](https://binoview.io/docs/scripts/examples/hud-buttons.md): ctx.hud.on, «Пауза» и «Сброс» - [Две карточки HUD](https://binoview.io/docs/scripts/examples/hud-cards.md): две карточки друг под другом, свои параметры - [Бот с адаптивной экспирацией](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 - [EMA Cross по трем таймфреймам](https://binoview.io/docs/scripts/examples/mtf-trend.md): три ТФ как select, голоса трендов по закрытым барам, три линии EMA, доска в HUD - [Младший ТФ внутри свечи](https://binoview.io/docs/scripts/examples/mtf-inside.md): бары S5 внутри формирующейся свечи, HUD ## Optional - [Полная справка одним файлом](https://binoview.io/llms-full.txt): все страницы - [Что нового в API](https://binoview.io/docs/scripts/changelog.md): изменения по датам