Всем привет!
Шестая статья в серии про ИИ-вайбкодинг. Сегодня о Промптах для индикаторов.
Если робот — это стратегия, то индикатор — её глаза. В OsEngine уже больше сотни готовых индикаторов. Но иногда нужен свой, который считает именно то, что нужно Вам.
ИИ пишет индикаторы быстро, но для этого ему нужен Промпт. Разберёмся, как составлять.
ВАЖНО! Внизу представлены Промпты, которые собираются современными моделями с первого раза и без ошибок. Готовые индикаторы по ним можно тут же запускать в тестере и в реале. Если у Вас проблемы, используйте хорошую модель.
Не забываем, перед тем, как просить ИИ написать робота, надо скормить ему контекст. Мы это уже обсуждали в этой серии, но важно повториться. Без этого мало что получится даже с таким хорошим ИИ как Kimi k2.7.
Пишем в чат с ИИ, чтобы очень подробно прочитал контекст в папке проекта.
Выглядеть в чате это может так:
В отличие от робота у индикатора нет «табов» и «точек входа». Структура проще.
**1. Идея индикатора**
Одно-два предложения. Что считаем и зачем.
**2. Встроенные индикаторы (если композитный)**
Какие готовые индикаторы OsEngine используем внутри. Например: EMA, MACD, RSI, ATR.
**3. Параметры**
Периоды, множители, типы цен. Со значениями по умолчанию.
**4. Выходные данные (серии)**
Что рисуем на графике:
— Линии — цвет, толщина;
— Гистограммы — цвета положительных/отрицательных столбцов;
— Уровни — пунктирные линии (перекупленность, ноль, центр);
— Тип отрисовки: Line, Column, Point.
**5. Логика расчёта**
Формула или алгоритм. Чётко, по шагам. Можно математикой, можно словами.
**6. Примеры для заимствования**
Из `CONTEXT_INDICATORS.md` берём похожий индикатор и говорим: «Сделай как KeltnerChannel, но вместо EMA+ATR используй свою формулу».
**7. Особыеслучаи**
— Проверка индекса: `if (index < Period) { _series.Values[index] = 0; return; }`
— Защита от деления на ноль;
— `OnProcess` вызывается для каждой свечи — не использовать `source[source.Count — 1]`
— Перерисовка истории: `_series.CanReBuildHistoricalValues = true` если нужно.
Идея индикатора: Делаем Trend Confirmation Index — индекс подтверждения тренда. Композитный индикатор, который агрегирует сигналы от трёх трендовых индикаторов в одно значение 0-100. 0 = все медвежьи, 100 = все бычьи, 50 = нейтраль.
Встроенные индикаторы:
— EMA (период 9) — быстрая скользящая
— EMA (период 21) — медленная скользящая
— MACD (Fast=12, Slow=26, Signal=9) — для импульса
— RSI (период 14) — для перекупленности/перепроданности
Параметры:
— EmaFastPeriod (9)
— EmaSlowPeriod (21)
— MacdFast (12)
— MacdSlow (26)
— MacdSignal (9)
— RsiPeriod (14)
— WeightEma (1.0) — вес EMA-сигнала
— WeightMacd (1.0) — вес MACD-сигнала
— WeightRsi (1.0) — вес RSI-сигнала
Выходные данные:
— TCI Line — основная линия (синий, Line), диапазон 0-100
— Level70 — уровень перекупленности (красный, пунктир)
— Level30 — уровень перепроданности (зелёный, пунктир)
— Level50 — центральная линия (серый, пунктир)
Логика расчёта:
Пример для заимствования:
Сделай по структуре MACD из CONTEXT_INDICATORS.md — используй встроенные индикаторы через CreateIndicator, но вместо MACD-логики используй формулу TCI выше.
Особые случаи:
— Проверка индекса: пока свечей меньше максимального периода (max(EmaSlowPeriod, MacdSlow, RsiPeriod)) — значение 50
— Защита от деления на ноль при нормировке: если сумма весов = 0 — вернуть 50
— Не использовать source[source.Count — 1] в OnProcess — только source[index]
— Параметры встроенных индикаторов синхронизировать через Bind() с родительскими параметрами
Идея индикатора: Volatility-Adjusted Momentum — импульс, нормированный на волатильность. Показывает, насколько цена сдвинулась относительно своей обычной волатильности. Если VAM = 2 — цена прошла расстояние в 2 ATR за период. Помогает сравнивать импульс на разных инструментах и таймфреймах.
Встроенные индикаторы:
— Momentum (период 10) — импульс цены
— ATR (период 14) — волатильность
Параметры:
— MomentumPeriod (10) — период импульса
— AtrPeriod (14) — период ATR
— Smoothing (3) — период сглаживания результата (SMA), 1 = без сглаживания
Выходные данные:
— VAM Line — основная линия (синий, Line)
— ZeroLine — нулевой уровень (серый, пунктир)
— PlusTwo — уровень +2 (зелёный, пунктир)
— MinusTwo — уровень -2 (красный, пунктир)
Логикарасчёта:
Пример для заимствования:
Сделай по структуре Momentum из CONTEXT_INDICATORS.md, но добавь встроенный ATR и нормируй результат. Или используй KeltnerChannel как пример работы с двумя встроенными индикаторами.
Особые случаи:
— Проверка индекса: пока свечей меньше max(MomentumPeriod, AtrPeriod, Smoothing) — значение 0
— Защита от деления на ноль: если ATR = 0 или NormalizedVolatility = 0 — вернуть 0
— Не использовать source[source.Count — 1] в OnProcess
Используйте эти документы как заготовки, при создании индикаторов. Не торопитесь.
Удачных алгоритмов!
Комментарии открыты для друзей, добавляйтесь!

https://smart-lab.ru/company/os_engine/blog/1024149.php
Скачать OsEngine: https://github.com/AlexWan/OsEngine
Официальная поддержка OsEngine в MAX: https://max
Канал Научный трейдинг в MAX: https://max.ru/
Поддержка OsEngine в Телеграм: https://t.me/osengine_official_support
Канал Научный трейдинг (Bad Quant) в Телеграм: https://t.me/bad_quant