Если вы переносите индикаторы часто или целыми наборами, удобнее, когда агент делает это по одному порядку.
Скилл его задаёт: агент заново пишет логику, показывает таблицу, что перенесётся и как, проверяет результат и называет отличия.
Как установить
Скопируйте текст скилла и вставьте его в чат агента, добавив сверху такую строку:
Сохрани это как скилл с именем "indicator-port". Если не можешь сохранять скиллы, следуй этому в рамках нашего разговора.
Текст скилла
---
name: indicator-port
description: Перенос индикатора с другой платформы в ATAS через MCP-сервер ATAS и Script Lab: агент заново пишет логику, называет отличия, сверяет расчёт. Используй, когда пользователь просит перенести, портировать или переписать индикатор по исходному коду. Нужен исходный код. Не для закрытых индикаторов, торгующих стратегий и ордеров.
compatibility: Нужны MCP-сервер ATAS, Script Lab на тарифе, разрешение на скриптовые индикаторы, исходный код и возможность запускать код для сверки.
metadata:
version: 0.1
updated: 2026-11-01
---
# indicator-port
Перепиши логику индикатора для ATAS и честно покажи, чем результат отличается от оригинала. Отвечай на языке пользователя. Если в исходнике есть стратегия и ордера, переноси только расчёт и отметки. Ордера не добавляй.
## Жёсткие правила
- Сначала права. Работай только с кодом, который написал сам пользователь или чья лицензия это разрешает. Если человек не знает, скажи об этом и попроси проверить. Сохрани указание автора и лицензии из исходника. Не обходи защиту и не восстанавливай закрытый код.
- Не называй перенос точной копией. Говори: «логика переписана, отличия вот такие».
- Перед сохранением всегда прогоняй `scripts_preview`.
- Сверяй результат отдельным расчётом по `chart_get_bars`. Если у пользователя есть значения из оригинала, сверяй и с ними. Бары и скриншоты AI Connect отдаёт по криптовалютам. Если график пользователя на другом инструменте, предложи сверить на криптографике из его подключения или сверить со значениями из оригинала.
- Если часть не переносится, спроси, что делать. Не заменяй её молча.
- Имя индикатора делай своим. Названия других платформ и их торговые марки в имя не включай.
## 1. Разбери исходник
Составь таблицу до любых изменений:
```
Что в исходнике Как будет в ATAS Статус
<функция, настройка> <чем заменяем> как есть / иначе / не переносится
```
Что проверить отдельно: данные другого инструмента или периода, расчёт внутри незакрытого бара, графические элементы, алерты, логика стратегии.
## 2. Перенеси
1. Прочитай ресурс `atas://docs/atas-script`, если он доступен. Если исходник похож на тот синтаксис, который ATAS Script понимает сам, сначала проверь его как есть через `scripts_validate`.
2. Разбери диагностику. Ошибку на данных другого периода или инструмента покажи пользователю и предложи варианты с их ценой. Спроси, какой выбрать.
3. `scripts_preview` на графике пользователя: сколько баров, какие серии.
## 3. Сверь
Отдельный расчёт кодом на тех же барах. Назови число совпавших баров и допуск. Назови, от чего результат зависит: например, от глубины загруженной истории или от периода графика.
## 4. Сохрани
Сохраняй, только если пользователь просил или согласился: `scripts_create` (он сразу компилирует; при `compiled: false` правь через `scripts_update_source`), затем `scripts_add_to_chart`. Проверь через `module_screenshot`.
## 5. Ответ
```
Индикатор: <имя>, <куда добавлен>
Что перенесено как есть: <список>
Что сделано иначе: <список и почему>
Что не перенесено: <список>
Проверка: <период, число баров, с чем сравнивали, совпало ли>
На каких периодах корректен: <список>
Автор и лицензия исходника: <как указано в исходнике>
```
Если что-то отображается неверно, попроси описать разницу и почини: сначала причина, потом правка, потом снова превью и сверка.
Как запустить
Используй indicator-port. Этот код написал я сам, перенеси его на мой график BTCUSDT 5m.
<вставьте сюда исходный код>
Для примера возьмём небольшой индикатор, написанный специально для этой страницы:
//@version=5
indicator("Volume Spike Bands", overlay=true)
len = input.int(30, "Length")
mult = input.float(2.0, "Multiplier")
basis = ta.sma(close, len)
dev = mult * ta.stdev(close, len)
plot(basis, "Basis", color=color.gray)
plot(basis + dev, "Upper", color=color.teal)
plot(basis - dev, "Lower", color=color.red)
spike = volume > ta.sma(volume, len) * 2
plotshape(spike and close > basis + dev, "Up spike", shape.triangleup, location.belowbar, color.teal)
plotshape(spike and close < basis - dev, "Down spike", shape.triangledown, location.abovebar, color.red)
alertcondition(spike, "Volume spike", "Volume spike")
Что вы получите
Сначала агент сверяет расчёт и останавливается на том, что не переносится один в один. Здесь это алерт:
Используй indicator-port. Этот код написал я сам, перенеси его на мой график BTCUSDT 5m.
<вставьте сюда исходный код>
Расчёт перенесён и проверен: совпали три линии на 100 закрытых барах BTCUSDT 5m и все 12 отметок. Допуск - 0,000001.
Сохранение и добавление на график ожидают вашего выбора: компилятор принимает alertcondition, но не создаёт оповещение.
Заменить его на alert() ATAS не чаще раза за бар или сохранить без оповещений?
Спрашиваю по вашей инструкции indicator-port: «Если часть не переносится, спроси, что делать. Не заменяй её молча».
Сделай автоматическое уведомление раз на бар.
Индикатор «Импульс объёма - полосы» сохранён и добавлен на ваш BTCUSDT 5m Binance Futures. Отображение проверено.
- Как есть: настройки 30 и 2, три линии, условия всплеска объёма и треугольные отметки.
- Иначе:
alertconditionзаменён автоматическимalert()- при всплеске объёма, не чаще раза за бар, без ожидания закрытия. - Не перенесено: ничего; алерт заменён с вашего согласия.
- Проверка: 100 закрытых баров 5 ноября, 13:00-21:15 UTC. Независимый расчёт по
chart_get_bars: совпали все три линии и 12 отметок, допуск 0,000001. Доставку живого уведомления ещё не наблюдал. - Периоды: проверен 5m; логика работает на текущем периоде после накопления 30 баров. На открытом баре значения меняются.
- Автор: вы; лицензия не указана. Авторство сохранено в коде.
Логика переписана для ATAS; поведение уведомлений и оформление зависят от платформы.

Если значений с исходной платформы нет, сверка показывает только то, что код считает задуманное. Дайте несколько значений с датой и временем, и агент сравнит с ними.
Что нужно
- Агент, который умеет запускать код для сверки