Изображение блога
Алексей Ван <o-s-a.net>
Алексей Ван <o-s-a.net> Блог компании OsEngine
Сегодня в 11:48

Промпты для создания торговых роботов. Вайбкодинг в трейдинге #5

Всех приветствую!

Пятая статья в нашей серии про ИИ-вайбкодинг и создание торговых роботов по своим идеям.

И сегодня рассмотрим то, как писать Технические Задания для ИИ. А именно, ТЗ на самих роботов. Современные программисты называют это вместо «ТЗ» — «ПРОМПТ», чтобы это не значило… Я далее тоже буду Тех Задания для ИИ называть ПРОМПТ. Я — «современный малолетний программист».

В общем. Учимся писать Промпты на создание роботов.

Промпты для создания торговых роботов. Вайбкодинг в трейдинге #5

ВАЖНО! Внизу представлены Промпты, которые собираются современными моделями с первого раза и без ошибок. Роботов по ним можно тут же запускать в тестере и в реале. Если у Вас проблемы, используйте хорошую модель.

## Сначала подаём в чат с ИИ контекст

Не забываем, перед тем, как просить ИИ написать робота, надо скормить ему контекст. Мы это уже обсуждали в этой серии, но важно повториться. Без этого мало что получится даже с таким хорошим ИИ как Kimi k2.7.

Пишем в чат с ИИ, чтобы очень подробно прочитал контекст в папке проекта.

Выглядеть в чате это может так:

Промпты для создания торговых роботов. Вайбкодинг в трейдинге #5

## Зачем правильные промпты?

Если открыть чат с ИИ и написать: «Напиши робота на московскую биржу, чтобы знал, когда зарабатывать, только в прибыль работал» — можно получить исключительно плохой результат (натуральный Кал!). Вполне возможно, конкретно Kimi даже напишет с первого раза робота, который будет работать, но это не то, что нужно.

Поэтому никогда так не делайте!

И если вспомнить, что «ПРОМПТ» – это ТЗ, то есть замечательная поговорка про это дело:

«Плохое ТЗ — Результат ХЗ»

Тут – то же самое! Поэтому наберитесь терпения, прежде чем мучить ИИ. Научитесь составлять Промпты.

 

## Структура нормального промпта

Было бы замечательно, если бы в Промпте было семь пунктов.

 

**1. Идея робота своими словами**

Перед цифрами и индикаторами опишите суть стратегии простым языком. Одно-два предложения. Это самый важный пункт, он задаёт направление всему остальному.

Примеры:

— «Ловим тренд по EMA. Не входим во флэт, фильтруем через ADX.»

— «Торгуем отскок от границы канала Bollinger Bands.»

— «Скринер: ищем бумаги, у которых цена пробила верхнюю границу канала.»

ИИ прочитает эту фразу и поймёт, что вы хотите. Всё остальное — детализация.

 

**2. Тип источника (таб)**

В OsEngine девять типов источников. Выбираем один:

— `BotTabSimple` — один инструмент, один таймфрейм. Самый распространённый. Для трендовых, контртрендовых, паттерновых стратегий.

— `BotTabScreener` — несколько инструментов одновременно. Один робот торгует по десятку бумаг. Для скринеров и мультитикерных стратегий.

— `BotTabPair` — два коррелирующих инструмента. Для парного арбитража. Имеет встроенный расчёт корреляции и графика минимальных остатков от разницы между двумя инструментами с оптимальным мультипликатором.

— `BotTabIndex` — пользовательский индекс из нескольких бумаг. Веса задаются вручную. Для торговли против индекса или спреда.

— `BotTabCluster` — кластерный график. Доступны горизонтальные объёмы по ценам. Для анализа кластеров + торговли через `BotTabSimple`

— `BotTabPolygon` — валютный арбитраж. Три инструмента, образующие замкнутый треугольник.

— `BotTabOptions` — опционы. Отдельный таб для работы с опционными сериями.

— `BotTabNews` — лента новостей. События по новостям, можно комбинировать с `BotTabSimple`.

— `BotTabSyntheticBond` — синтетические облигации. Конструирование облигаций из доступных инструментов.

В 95% случаев хватает `BotTabSimple`. Для скринеров — `BotTabScreener`. Для пар — `BotTabPair`

 

**3. Индикаторы**

Какие индикаторы, параметры, область на графике:

— Название: `Sma`, `Bollinger`, `Rsi`, `Macd`, `Atr`

— Параметры: период, отклонение, сглаживание

— Область: `Prime` (основная, на графике цены) или `NewArea0` (отдельная область ниже)

— Как создавать: `_tab.CreateCandleIndicator(indicator, «Prime»)`

 

**4. Точки входа и выхода**

— Условие входа Long (например: цена пересекла SMA снизу вверх)

— Условие входа Short (например: цена пересекла SMA сверху вниз)

— Тип ордера: `Market`, `Limit`, `Stop`

— Объём позиции (фиксированный лот, риск в процентах, расчёт через `GetVolume`)

— Стоп-лосс (фиксированный, по ATR, за локальным экстремумом)

— Тейк-профит (фиксированный, 1:2, 1:3)

— Трейлинг-стоп (если нужен — шаг, активация)

 

**5. Примеры для заимствования**

Из `CONTEXT_ROBOTS.md` находим похожего робота и говорим ИИ:

— «Сделай как в роботе `EnvelopTrend`, но период 50 вместо 20»

— «Возьми структуру из `SmaScreener`, а логику входа свою»

— «Используй как базу `PinBarTrade`, добавь трейлинг-стоп»

 

Это сильно упрощает задачу. ИИ копирует проверенную структуру, а не выдумывает с нуля.

 

**6. Параметры робота**

Что должно быть в настройках:

— `Regime` (On / Off / OnlyLong / OnlyShort / OnlyClose)

— Параметры индикаторов (периоды, отклонения)

— **Стандартный расчёт объёма** (как в большинстве роботов проекта):

  — `VolumeType` — тип объёма: `Contracts` / `Contract currency` / `Deposit percent`

  — `Volume` — значение: лоты, сумма в валюте или процент от депозита

  — `TradeAssetInPortfolio` — актив для расчёта: `Prime` (основной) или код актива

— Стоп-лосс (в пунктах или ATR-множитель)

— Тейк-профит (в пунктах или соотношение к стопу)

— Трейлинг-стоп (шаг активации, шаг трейлинга)

— Время торговли (если нужно — начало, конец, перерыв)

 

Объём в коде рассчитывается через метод `GetVolume(tab)`, который учитывает тип объёма, лотность и округление.

 

**7. Особые случаи**

— Проверка готовности индикатора (`candles.Count + N < indicator.Values.Count`) — не торговать, пока индикатор не накопил достаточно данных

— Защита от повторного входа (`_tab.PositionsOpenAll.Count > 0`) — не открывать вторую позицию, пока первая открыта

— `try-catch` вокруг всей торговой логики, чтобы робот не падал на ошибке

— Проверка режима (`_regime.ValueString == «Off»` — выходим, не торгуем)

— Проверка типа запуска (`StartProgram.IsOptimizer` — не рисовать на графике, не логировать лишнее)

— Отмена стоп-ордеров при открытии позиции (`BuyAtStopCancel()`) — чтобы не осталось висячих ордеров

 

## Пример 1. ПРОМПТ трендового робота

Идея робота: Ловим тренд по EMA. Не входим во флэт — фильтруем через ADX.

Тип источника: BotTabSimple. Один инструмент, один таймфрейм.

Индикаторы:

  1. EMA (период 50, область Prime) — определяет направление тренда
  2. ADX (период 14, область NewArea0) — фильтрует силу тренда. Торгуем только при ADX > 25
  3. ATR (период 14, область NewArea1) — для расчёта стоп-лосса и тейк-профита

Точки входа и выхода:

— Вход Long: свеча закрылась выше EMA(50), ADX > 25, позиции нет

— Вход Short: свеча закрылась ниже EMA(50), ADX > 25, позиции нет

— Тип ордера: Market

— Объём: рассчитывается через GetVolume(tab). VolumeType = Deposit percent, Volume = 20, TradeAssetInPortfolio = Prime

— Стоп-лосс: за EMA на расстоянии ATR * 2

— Тейк-профит: 1:2 к стопу (ATR * 4)

— Трейлинг-стоп: при достижении половины тейка переносим стоп в безубыток, далее трейлим за EMA

Пример для заимствования:

Сделай по структуре робота EnvelopTrend из CONTEXT_ROBOTS.md, но вместо Envelop используй EMA+ADX+ATR

Параметры:

— Regime (On/Off/OnlyLong/OnlyShort)

— EmaPeriod (50)

— AdxPeriod (14)

— AdxMinValue (25)

— AtrPeriod (14)

— AtrStopMultiplier (2.0)

— AtrTakeMultiplier (4.0)

— VolumeType (Deposit percent)

— Volume (20)

— TradeAssetInPortfolio (Prime)

Особыеслучаи:

— Проверка готовности индикаторов: candles.Count >= max(EmaPeriod, AdxPeriod, AtrPeriod) + 5

— Защита от повторного входа: _tab.PositionsOpenAll.Count > 0 — выходим

— Отмена стоп-ордеров при открытии позиции

— try-catch вокруг всей торговой логики

— Проверка режима: _regime.ValueString == «Off» — не торгуем

— Проверка IsOsOptimizer — не логировать лишнее при оптимизации

— Обязательно нужно добавить контроль неторгового времени. Надо внедрить стандартные неторговые периоды с MOEX. По выходным не торгуем. В будние дни торгуем с 10 утра и до 18.

 

## Пример 2. ПРОМПТ на скринер

Идея робота: Скринер ищет бумаги в восходящем тренде. Покупаем при пробое верхней границы Bollinger Bands.

Тип источника: BotTabScreener. Несколько инструментов одновременно.

Индикаторы:

  1. Bollinger Bands (период 20, отклонение 2, область Prime) — канал для входа и выхода
  2. EMA (период 50, область Prime) — фильтр направления. Торгуем только выше EMA
  3. RSI (период 14, область Second) — фильтр перекупленности. Не входим при RSI > 70

Точки входа и выхода:

— Вход Long: свеча закрылась выше верхней линии Bollinger, цена выше EMA(50), RSI < 70, позиции на этом инструменте нет

— Вход Short: нет. Только лонг

— Тип ордера: Market

— Объём: рассчитывается через GetVolume(tab). VolumeType = Deposit percent, Volume = 20, TradeAssetInPortfolio = Prime

— Максимум открытых позиций: 5 одновременно (параметр MaxPositions)

— Стоп-лосс: нижняя линия Bollinger. Это единственный тип выхода


Пример для заимствования:

Сделай по структуре робота SmaScreener из CONTEXT_ROBOTS.md, но вместо SMA используй Bollinger+EMA+RSI

Параметры:

— Regime (On/Off/OnlyLong)

— BollingerPeriod (20)

— BollingerDeviation (2.0)

— EmaPeriod (50)

— RsiPeriod (14)

— RsiMax (70)

— VolumeType (Deposit percent)

— Volume (20)

— TradeAssetInPortfolio (Prime)

— MaxPositions (5)

 

Особыеслучаи:

— Проверка готовности индикаторов: candles.Count >= max(BollingerPeriod, EmaPeriod, RsiPeriod) + 5

— Защита от повторного входа: tab.PositionsOpenAll.Count > 0 — выходим

— Проверка лимита позиций: _tabScreener.PositionsOpenAll.Count >= MaxPositions — не открываем новые

— try-catch вокруг всей торговой логики

— Проверка режима: _regime.ValueString == «Off» — не торгуем

— Проверка IsOsOptimizer — не логировать лишнее при оптимизации

— Обязательно нужно добавить контроль неторгового времени. Надо внедрить стандартные неторговые периоды с MOEX. По выходным не торгуем. В будние дни торгуем с 10 утра и до 18.

 

## Пример 3. ПРОМПТ на HFT-робота

Идея робота: Ловим импульс по ленте сделок. Выставляем лимитную заявку по краю стакана в сторону импульса и переставляем вслед за ценой. Держим несколько минут. Если цена отошла на 0.5% от точки импульса — отменяем.

Тип источника: BotTabSimple. Один инструмент, тики и стакан.

Индикаторы:

Нет классических индикаторов. Используем ленту сделок и стакан.

Точки входа и выхода:

— Фиксация импульса: объём за 5 секунд превысил средний объём за минуту в 3 раза. Запоминаем цену входа (LastPrice)

— Направление: если последняя сделка была на покупку (Trade.BuySell == Buy), ищем вход Long. Если на продажу — Short

— Выставление заявки: лимитная BuyAtLimit по лучшему bid + 1 шаг цены. Или SellAtLimit по лучшему ask — 1 шаг

— Перестановка: каждую секунду проверяем стакан. Если цена сдвинулась, отменяем старую заявку, ставим новую по краю стакана

— Вход: заявка исполнилась

— Стоп-лосс: если позиция открыта, и цена ушла на 0.3% против — закрываем по рынку

— Тейк-профит: если позиция открыта, и цена ушла на 0.5% в плюс — закрываем по рынку

— Отмена: если с момента импульса прошло 3 минуты и заявка не исполнилась — отменяем

— Отмена 2: если цена отошла на 0.5% от точки импульса — отменяем заявку, не входим

Пример для заимствования:

Сделай по структуре HFT-роботов из CONTEXT_HIGH_FREQUENCY.md. Используй NewTickEvent для ленты, MarketDepthUpdateEvent для стакана, OrderUpdateEvent для отслеживания заявок.

Параметры:

— Regime (On/Off/OnlyLong/OnlyShort)

— ImpulseWindowSeconds (5) — окно подсчёта импульса

— ImpulseVolumeMultiplier (3.0) — во сколько раз объём должен превысить средний

— MaxWaitMinutes (3) — сколько минут ждать исполнения заявки

— CooldownSeconds (1) — минимальное время между входами в логику

— CancelDeviationPercent (0.5) — отмена, если цена отошла на 0.5%

— StopLossPercent (0.3) — стоп после входа

— TakeProfitPercent (0.5) — тейк после входа

— VolumeType (Deposit percent)

— Volume (20)

— TradeAssetInPortfolio (Prime)

Особые случаи:

— Проверка режима: _regime.ValueString == «Off» — не торгуем

— Защита от повторного входа: пока есть открытая позиция или активная заявка — не ловим новый импульс

— Cooldown: после обработки импульса ждём CooldownSeconds перед следующим входом, иначе на волатильном рынке робот поставит 10 заявок за секунду

— try-catch вокруг логики перестановки заявок

— Проверка IsOsOptimizer — не торгуем в оптимизаторе, для HFT это не имеет смысла

— Проверка на null: стакан может быть пустым на старте

— Обновление стакана: _tab.MarketDepthUpdateEvent += _tab_MarketDepthUpdateEvent

— Обязательно нужно добавить контроль неторгового времени. Надо внедрить стандартные неторговые периоды с MOEX. По выходным не торгуем. В будние дни торгуем с 10 утра и до 18.

 

## Пример 4. ПРОМПТ на сеточную стратегию

Идея робота: Сетка маркет-мейкинга ловит откаты в направлении тренда. EMA определяет тренд. В восходящем — сетка покупок ниже цены. В нисходящем — продаж выше цены. Сетка сама движется за ценой, перестраивать вручную не надо.

Тип источника: BotTabSimple. Один инструмент.

Индикаторы:

1) EMA (период 50, область Prime) — определяет направление тренда.

Точки входа и выхода:

— Определение тренда: цена закрытия выше EMA(50) — восходящий. Ниже — нисходящий.

— Создание сетки: при восходящем тренде — Buy-сетка через GridsMaster. При нисходящем — Sell-сетка. Тип MarketMaking. Параметры сетки: GridLevels линий, шаг GridStep%, тейк равен шагу.

— Объём: рассчитывается через GetVolume(tab) и передаётся в сетку.

— Движение за ценой: включить TrailingUp и TrailingDown с параметрами GridTrailingStep и GridTrailingLimit. Тейк-профитные ордера при сдвиге не двигаем.

— Защита сетки: автозакрытие по времени жизни (GridLifeTime) и по количеству сделок (GridMaxPositions) через StopBy.

— Закрытие по смене тренда: если цена пересекла EMA в обратную сторону — закрыть сетку принудительно и удалить после закрытия позиций.

— Защита от двойной сетки: пока сетка активна — не создаём новую.

Пример для заимствования:

Сделай по структуре GridTwoSignals из CONTEXT_GRIDS.md. Используй TrailingUp/Down с лимитом и StopBy для защиты.

Параметры:

— Regime (On/Off/OnlyLong/OnlyShort)

— EmaPeriod (50)

— GridLevels (5) — количество линий сетки

— GridStep (0.1) — шаг сетки в процентах от цены

— GridTrailingStep (0.1) — порог сдвига сетки в процентах от цены

— GridTrailingLimit (10.0) — предел сдвига сетки в процентах от цены

— GridLifeTime (600) — время жизни сетки в секундах

— GridMaxPositions (50) — максимум позиций по сетке

— VolumeType (Deposit percent)

— Volume (5)

— TradeAssetInPortfolio (Prime)

Особыеслучаи:

— Проверка готовности EMA: candles.Count >= EmaPeriod + 5

— Проверка режима: _regime.ValueString == «Off» — не торгуем

— Защита от двойной сетки: не создавать вторую, пока первая работает

— try-catch вокруг логики создания и управления сеткой

— Проверка IsOsOptimizer — не выставлять ордера в оптимизаторе

— Обязательно нужно добавить контроль неторгового времени. Надо внедрить стандартные неторговые периоды с MOEX. По выходным не торгуем. В будние дни торгуем с 10 утра и до 18.

 

## Пример 5. ПРОМПТ на межсекторный арбитраж

Идея робота: Межсекторный арбитраж. Создаём два индекса — условно банковский и нефтегазовый. Торгуем расхождение между секторами: когда один убегает от другого, шортим лидера, лонгим аутсайдера. Закрываем при возврате спреда.

Тип источника: Два BotTabIndex (для расчёта индексов) + два BotTabScreener (для торговли бумагами каждого сектора).

Индикаторы:

Нет классических индикаторов. Используем корреляцию и коинтеграцию между двумя индексами.

Точки входа и выхода:

— Индексы: BankIndex из банков (Сбер, ВТБ, СберПреф) с равными весами. OilIndex из нефтегаза (Лукойл, Газпром, Татнефть) с равными весами. Формулы задаются в интерфейсе OsEngine (формула: A0+A1+A2)

— Скринеры: BankScreener с теми же банками. OilScreener с теми же нефтегазовыми.

— Сигнал: на SpreadChangeEvent обоих индексов считаем коинтеграцию. Если BankIndex отклонился вверх от OilIndex (CointegrationLineSide.Down) — шортим весь BankScreener, лонгим весь OilScreener. Если наоборот — зеркально.

— Фильтр: торгуем, только если корреляция между индексами выше MinCorrelation.

— Объём: рассчитывается через GetVolume. Депозит делится поровну между двумя скринерами, внутри скринера — равномерно между бумагами.

— Закрытие: при возврате коинтеграции к нулю (No signal) — закрываем все позиции обоих скринеров.

— Стоп: если позиции открыты, и коинтеграция ушла ещё дальше против нас на StopDeviation, то закрываем всё.

Пример для заимствования:

Сделай по структуре IndexArbitrageClassic из CONTEXT_INDEX_AND_SPREAD.md. Два индекса, два скринера, корреляция + коинтеграция.

Параметры:

— Regime (On/Off/OnlyLong/OnlyShort/OnlyClosePosition)

— CorrelationPeriod (50) — период корреляции

— MinCorrelation (0.7) — минимальная корреляция для входа

— CointegrationLookBack (100) — глубина коинтеграции

— EntryDeviation (2.0) — множитель стандартного отклонения для входа

— ExitDeviation (0.5) — множитель для выхода

— StopDeviation (3.0) — стоп, если отклонение усилилось

— VolumeType (Deposit percent)

— Volume (5)

— TradeAssetInPortfolio (Prime)

Особые случаи:

— Синхронизация: свечи всех табов должны иметь одинаковый TimeStart. Без синхронизации не торгуем

— Проверка готовности: индексы должны накопить минимум CorrelationPeriod + 5 свечей

— Проверка режима: _regime.ValueString == «Off» — не торгуем

— Защита от пустых скринеров: проверять, что Tabs.Count > 0, перед торговлей

— try-catch вокруг всей логики расчёта коинтеграции и выставления ордеров

— Проверка IsOsOptimizer — не логировать лишнее при оптимизации

— Обязательно нужно добавить контроль неторгового времени. Надо внедрить стандартные неторговые периоды с MOEX. По выходным не торгуем. В будние дни торгуем с 10 утра и до 18.

— Режима торгов в этом роботе только два: “Off” и “On”

 

## Пример 6. ПРОМПТ на монитор ПИЛЫ

Идея робота: Монитор-робот отслеживает, на каких инструментах скринера сейчас пила (боковик с частыми колебаниями), а на каких — тренд. Использует индикаторы EfficiencyRatio и VHFilter. Выводит таблицу с метриками, выбрасывает алерты при смене режима и может автоматически входить при выходе цены из пилы в направлении пробоя.

Тип источника: BotTabScreener. Несколько инструментов одновременно.

Индикаторы:

  1. `EfficiencyRatio` (период 14, область NewArea0) — основная метрика пилы. 0 = сильная пила, 1 = сильный тренд.
  2. `VHFilter` (период 28, область NewArea1) — дополнительная проверка: низкие значения = пила, высокие = тренд.

Точки входа и выхода:

— Расчёт метрик: для каждого инструмента в скринере читаем последние значения ER и VHFilter

— Статус «Пила»: ER < `_erSawThreshold` И VHFilter < `_vhfSawThreshold`

— Статус «Тренд»: ER > `_erTrendThreshold` И VHFilter > `_vhfTrendThreshold`

— Up-сигнал: инструмент перешёл из статуса «Пила» в «Тренд», и последняя свеча растущая

— Down-сигнал: инструмент перешёл из статуса «Пила» в «Тренд», и последняя свеча падающая

— Авто-вход Long: `_longIsOn == true`, up-сигнал, текущая свеча бычья (`IsUp`), лонгов по скринеру < `_longMaxPositions`

— Авто-вход Short: `_shortIsOn == true`, down-сигнал, текущая свеча медвежья (`IsDown`), шортов по скринеру < `_shortMaxPositions`

— Стоп-лосс: `_longStopPercent` / `_shortStopPercent` от цены входа (0 = выключен)

— Тейк-профит: `_longProfitPercent` / `_shortProfitPercent` от цены входа (0 = выключен)

— Закрытие по времени: `_longMaxCandlesInPositions` / `_shortMaxCandlesInPositions` свечей в позиции

— Алерты: при смене статуса с «Пила» на «Тренд» (вверх или вниз) — звук + сообщение в лог. Дедупликация по времени свечи через `Dictionary<string, SignalData>`

— Тип ордера: Market

— Объём: рассчитывается через `GetVolume(tab)`. VolumeType = Deposit percent, Volume = 20, TradeAssetInPortfolio = Prime

Пример для заимствования:

Сделай по структуре MonitorHighLow из CONTEXT_MONITORS.md, но вместо PriceChannel и расстояния до High/Low используй EfficiencyRatio + VHFilter для определения пилы/тренда.

Параметры:

— Regime (Off / OnCandleUpdate / OnCandleFinish)

— LookBack (20) — период для расчёта канала High/Low пробоя

— ErSawThreshold (0.3) — ER ниже этого значения = пила

— ErTrendThreshold (0.6) — ER выше этого значения = тренд

— VhfSawThreshold (0.3) — VHFilter ниже этого значения = пила

— VhfTrendThreshold (0.5) — VHFilter выше этого значения = тренд

— LongIsOn (false) — включить автоторговлю в лонг

— LongMaxPositions (5) — максимум одновременных лонгов

— LongStopPercent (0.5) — стоп-лосс в %

— LongProfitPercent (1.0) — тейк-профит в %

— LongMaxCandlesInPositions (50) — закрытие по времени, свечи

— LongVolumeType (Deposit percent)

— LongVolume (20)

— LongTradeAssetInPortfolio (Prime)

— ShortIsOn (false) — включить автоторговлю в шорт

— ShortMaxPositions (5) — максимум одновременных шортов

— ShortStopPercent (0.5)

— ShortProfitPercent (1.0)

— ShortMaxCandlesInPositions (50)

— ShortVolumeType (Deposit percent)

— ShortVolume (20)

— ShortTradeAssetInPortfolio (Prime)

— UpSignalsIsOn (false) — включить алерты вверх

— UpSignalsMusic (Duck / Wolf)

— UpSignalsErrorLogIsOn (true)

— DownSignalsIsOn (false) — включить алерты вниз

— DownSignalsMusic (Wolf)

— DownSignalsErrorLogIsOn (true)

 

Особые случаи:

— Проверка готовности индикаторов: candles.Count >= max(ErPeriod, VhfPeriod, LookBack) + 5 и значения индикаторов != 0

— Проверка режима: _regime.ValueString == «Off» — не торгуем

— Проверка неторгового периода: _tradePeriodsSettings.CanTradeThisTime(tab.TimeServerCurrent) == false — выходим

— Защита от повторного сигнала: signal.Time == candles[^1].TimeStart — пропускаем

— Rate-limited обновление таблицы: не чаще 1 раза в секунду

— Обращение к DataGridView только из UI-потока через InvokeRequired / Invoke

— try-catch вокруг всей логики обработчиков и обновления таблицы

— Проверка IsOsOptimizer — не логировать лишнее при оптимизации

— Обязательно нужно добавить контроль неторгового времени. Надо внедрить стандартные неторговые периоды с MOEX. По выходным не торгуем. В будние дни торгуем с 10 утра и до 18.

 

## Итого

Это заготовки для ПРОМПТОВ для Ваших будущих роботов. Самые базовые. Вот от них и старайтесь работать.

Удачных алгоритмов!

Комментарии открыты для друзей, добавляйтесь!

Промпты для создания торговых роботов. Вайбкодинг в трейдинге #5

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

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн