# День 4. Как объяснить ИИ-помощнику что построить — и проверить результат

> Сегодняшняя цель — превратить твою бумагу из вчерашнего дня (одно предложение + четыре правила + блок-схема) в **рабочий бот на тестовом счёте**, **не написав сам ни одной строчки кода**. Это будет странно для программиста старой школы. Для 2026 года это норма.

---

## Зачем сегодня не писать код руками

Большая правда 2026 года: **писать код руками — устаревший навык для большинства задач**. Claude, GitHub Copilot, Cursor, Gemini Code Assist пишут код быстрее и чище чем средний программист — если им поставить **чёткую задачу**.

Самое ценное в современной разработке — это **не синтаксис**. Синтаксис теперь общедоступен. ИИ-помощник напишет тебе функцию на Python, на Rust, на Go, на чём угодно — за секунды. Дешевле твоего часа времени.

Что **не делегируется** ИИ:

1. Постановка задачи. ИИ не знает что **ты** хочешь.
2. Проверка результата. ИИ не знает работает ли код в твоей конкретной среде.
3. Архитектурные решения. ИИ не выберет за тебя что строить вообще.
4. Итерация на основе данных. ИИ не сидит у твоего экрана и не видит что бот ведёт себя странно.
5. Бизнес-решения. ИИ не знает когда тебе выключить эксперимент.

То есть: **постановка**, **проверка**, **итерация** — твоё. Всё остальное — ИИ.

Этот день — про эти три вещи. Не про код.

Сегодня:

1. Шаблон промпта для ИИ-помощника — как объяснить что построить
2. Какой ИИ выбрать (Claude Code, Cursor, Copilot — короткий разбор)
3. Как читать результат и не быть обманутым уверенным голосом ИИ
4. Где ИИ типично ошибается в задачах алготрейдинга
5. Как итерировать — что менять в промпте если бот ведёт себя не так
6. Домашка — построить **первый рабочий бот** на тестовом счёте

К концу дня у тебя будет код который ты не написал руками — но **полностью понимаешь** что он делает и почему.

---

## Какой ИИ-помощник выбрать

Для нашей задачи вариантов несколько. Все рабочие, у каждого свои сильные стороны.

### Claude Code (от Anthropic)

- **Сильное место:** глубокое понимание задачи на естественном языке, отличный для сложных промптов
- **Слабое место:** нет родного интегрирования с IDE (запускается из терминала)
- **Цена:** $20/месяц подписка
- **Когда выбрать:** если умеешь работать в терминале, если задача требует глубокого обсуждения

### Cursor

- **Сильное место:** интегрирован в IDE, удобный диалог в коде, может править по живому
- **Слабое место:** платный (бесплатный тариф ограничен)
- **Цена:** $20/месяц после бесплатных запросов
- **Когда выбрать:** если ты привык к IDE, если хочешь рефакторить итеративно

### GitHub Copilot

- **Сильное место:** дешёвый, интегрирован в VSCode/JetBrains
- **Слабое место:** менее «умный» в сложных задачах, чаще ошибается
- **Цена:** $10/месяц или бесплатно для студентов и open-source мейнтейнеров
- **Когда выбрать:** если бюджет узкий, если задача простая

### Бесплатный путь — обычный Claude или ChatGPT через сайт

- **Сильное место:** $0
- **Слабое место:** нет интеграции с IDE, нужно копировать-вставлять
- **Когда выбрать:** для самого начала, чтобы понять процесс. Потом перейти на платный.

**Для этого дня:** возьми **любой** из них. Принцип одинаковый — формулируешь задачу, читаешь результат, итерируешь. Конкретный инструмент — деталь.

Если тебе совсем не из чего выбирать — открой claude.ai (или chat.openai.com), это бесплатно для базового использования и достаточно для первого бота.

---

## Шаблон промпта для построения бота

Промпт — это твоё **техническое задание** для ИИ. Чем чётче — тем лучше код.

### Структура промпта (универсальная)

Хороший промпт состоит из шести частей:

```
[Контекст]
Кто я и что я строю в одном предложении.

[Задача]
Что именно нужно сделать сейчас, конкретно.

[Входные данные]
Какие источники данных, какие API, какие форматы.

[Логика]
Чёткое описание правил которое мы выписали на бумаге.

[Ограничения]
Что код НЕ должен делать. Чего избегать. Какие риски.

[Формат вывода]
Какой результат ожидаем от ИИ — один файл, несколько, с тестами или без, с комментариями или нет.
```

Шесть блоков. Каждый по-своему важен. Половина плохих ответов от ИИ — потому что промпт плохой, не потому что ИИ глупый.

### Как заполнить блоки для нашего бота

Берёшь свою бумагу с третьего дня и **переписываешь** её в формат промпта.

**Контекст:**

```
Я разрабатываю торгового бота для криптобиржи Binance в учебных целях. 
Запускаю его на тестовом счёте Binance Spot Testnet (testnet.binance.vision), 
не на реальные деньги. Использую Python 3.10+, 
библиотеки python-binance и pandas. У меня уже настроены API-ключи в .env.
```

**Задача:**

```
Напиши скелет торгового бота: функции получения свечей, генерации сигнала, 
управления позицией, логирования сделок. Главный цикл должен запускаться раз в N минут. 
Тестировать пока что **не нужно** — мы делаем минимально жизнеспособную версию.
```

**Входные данные:**

```
- API: Binance Spot Testnet через библиотеку python-binance
- Свечи: пара BTC/USDT, таймфрейм 1 час, последние 100 свечей
- Источник ключей: переменные окружения BINANCE_API_KEY и BINANCE_API_SECRET 
  через python-dotenv
```

**Логика** — это самая важная часть. Сюда переписываешь свои четыре правила буквально:

```
СТРАТЕГИЯ — учебная трендовая, простая для первой версии:

ВХОД: открыть BUY-позицию когда:
1. Быстрая SMA (20 баров) пересекла медленную SMA (50 баров) снизу вверх 
   на последней закрытой свече.
2. И последний объём выше среднего объёма за 20 свечей.
3. И нет открытой позиции.

ВЫХОД: закрыть позицию когда:
1. Цена достигла +2% от цены входа (тейк-профит), ИЛИ
2. Цена упала на -1% от цены входа (стоп-лосс), ИЛИ
3. Прошло более 24 часов с момента входа (тайм-стоп).

РИСК:
1. Размер позиции = 1% от баланса USDT (фиксированный размер для простоты).
2. Максимум одна открытая позиция одновременно.

АВАРИЙНЫЙ СТОП:
1. Если три подряд вызова API возвращают ошибку — бот пишет в лог 
   "EMERGENCY STOP" и завершается.
```

**Ограничения** — что НЕ делать:

```
- Не используй настоящий счёт. Всегда testnet=True.
- Не подбирай и не оптимизируй параметры — все числа взяты вручную для первой версии.
- Не добавляй сложных индикаторов кроме SMA — оставь простоту.
- Не делай многопоточность или асинхронность — обычный синхронный цикл достаточно.
- Не используй внешние библиотеки для стратегий (backtrader, vectorbt) — пиши с нуля 
  на python-binance и pandas.
```

**Формат вывода:**

```
Один файл bot.py.
Структурированный, с комментариями на русском.
Логи каждой сделки в файл trades.csv (timestamp, side, price, qty, balance).
Логи общих событий в stdout.
Внизу файла — блок `if __name__ == "__main__":` который запускает основной цикл.
```

### Полный промпт собранный воедино — это то что ты копируешь в Claude/Cursor

Сложи все шесть блоков в один длинный текст. Получится примерно 400-600 слов. Это и есть **техзадание**.

Большинство людей пишут «напиши мне торгового бота» — и потом удивляются что результат не подходит. С нашим шаблоном результат будет на 80% правильный с первого раза.

---

## Как читать результат от ИИ

ИИ часто говорит уверенным голосом то что **на самом деле неверно**. Это особенно опасно в трейдинге, где ошибка стоит реальных денег (даже на тестовом счёте — ты потеряешь учебное время).

Твоя задача — **не понимать каждую строчку**, но проверить **что код делает на уровне логики**.

### Семь вещей которые надо проверить

**1. Используется ли testnet=True?**

Открой код, найди инициализацию клиента Binance. Должно быть что-то вроде:

```python
client = Client(API_KEY, API_SECRET, testnet=True)
```

Если **testnet=True** не написано или написано **testnet=False** — **остановись**. Это значит код пойдёт на настоящий счёт. Перезапроси у ИИ: «исправь, я работаю только на testnet».

**2. Где правило входа?**

Найди функцию которая решает входить или нет. Прочитай вслух её логику. Должна совпадать с твоим правилом из третьего дня. Если не совпадает — попроси переписать.

**3. Где правило выхода?**

Найди функцию выхода. Должна закрывать позицию по любому из трёх условий: тейк-профит, стоп-лосс, тайм-стоп. Если только одно — попроси добавить остальные.

**4. Где аварийный стоп?**

Найди обработку ошибок. Если код сразу падает на любой ошибке API — это плохо. Должен быть счётчик ошибок и условие выхода после N ошибок подряд.

**5. Где логи сделок?**

Найди где пишется `trades.csv` или подобное. Если только в стандартный вывод — скажи «добавь файл-лог, чтобы потом проанализировать».

**6. Что с конфигурацией?**

Параметры (период SMA, проценты тейка-стопа) должны быть **в начале файла как константы**, а не разбросаны по коду. Если разбросаны — попроси «вынеси все настройки в начало в одну секцию CONFIG».

**7. Что с тестами?**

На первом этапе тестов **может не быть**. Это нормально. Но **тестовый запуск** должен быть лёгким — функции получения свечей и генерации сигнала должны работать **отдельно** от живого цикла. Это даст возможность проверить логику не запуская бота на реальный API.

### Как обсуждать код с ИИ

После того как ИИ выдал первую версию — **не запускай её сразу**. Открой диалог с ИИ:

- «Объясни простыми словами что делает функция X.»
- «Что произойдёт если API вернёт пустой массив свечей?»
- «Что если позиция открылась, но цена тут же упала на 5%?»

ИИ ответит. Если ответ совпадает с тем что ты хотел — хорошо. Если нет — скажи «исправь, должно быть так-то».

Через 3-5 итераций обсуждения у тебя будет код который **ты понимаешь** — даже если не написал ни строчки.

---

## Где ИИ типично ошибается в задачах алготрейдинга

Опыт показывает что ИИ-помощники в нашей нише делают **те же ошибки что и начинающие программисты**:

1. **Забывают `testnet=True`.** Это самое опасное. Всегда проверяй.

2. **Используют последнюю несформированную свечу для решений.** Свеча текущего часа меняется каждую секунду. Нельзя по ней принимать решение. Должно быть «последняя **закрытая** свеча». Если этого уточнения нет — попроси добавить.

3. **Не проверяют ответ API.** Если биржа вернула ошибку — код должен её обработать, не делать вид что всё в порядке.

4. **Открывают позицию без проверки баланса.** Если на счёте не хватает USDT — попытка купить вызовет ошибку. Должна быть проверка перед каждым ордером.

5. **Не учитывают комиссии.** Тейк-профит +2% при комиссии 0.1% входа + 0.1% выхода = реально +1.8%. Часто ИИ забывает это упомянуть.

6. **Жёстко зашивают параметры в логику.** Период SMA лежит как `20` прямо в формуле, а не в константе. Это плохо для дальнейшей итерации.

7. **Игнорируют гонку условий.** Если бот спит 5 минут между тиками — за это время многое может произойти. Хороший код учитывает что состояние мира могло измениться.

Все семь — типовые. ИИ их не делает специально. Просто такие задачи статистически редкие в его обучающем материале. Твой долг — поймать их **до** запуска.

---

## Как итерировать

Бот не работает с первого раза. Это нормально. Что **не нормально** — менять промпт хаотично, тыкаясь в случайные места.

Правильная итерация:

1. **Запустил бот.** Поработал 1-2 часа. Заметил что-то странное.
2. **Записал что странное.** Одно конкретное наблюдение. Не «бот плохой» — «бот не закрыл позицию через 24 часа как должен по тайм-стопу».
3. **Открыл диалог с ИИ.** Скопировал часть кода которая по идее отвечает за это поведение. Спросил «почему это не работает?».
4. **ИИ объяснил или предложил исправление.** Прочитал, понял.
5. **Применил одно изменение.** Не три. Одно.
6. **Запустил снова.** Подождал ещё 1-2 часа. Проверил исчезло ли странное поведение.

Это медленно. Это правильно. **Один цикл итерации = одна гипотеза**. Так работают все профессионалы. Хаос с одновременными изменениями десяти параметров — путь начинающего.

---

## Частые ошибки именно сегодня

1. **Скопировать код от ИИ и запустить не глядя.** Самая частая ошибка. Семь вещей из списка выше — обязательны к проверке. Без этого ты не разработчик, а просто запускальщик чужого.

2. **Просить ИИ «оптимизировать стратегию».** ИИ не знает что хорошо для **твоей** стратегии. Если он поправит параметры по своему мнению — он подгонит их под историю и ты получишь перегон. Параметры — твоё решение, на основе бэктеста, не на основе мнения ИИ.

3. **Принимать первый вариант кода.** Хороший рабочий процесс — это **3-5 итераций** обсуждения. Первый вариант редко идеален. Не торопись запускать.

4. **Делегировать **архитектурные** решения ИИ.** «Какую стратегию мне выбрать?» — нет. Это **твоё** решение, на основе твоего профиля и капитала (см. второй день). ИИ может дать нейтральный обзор, но **выбор** — твой.

5. **Не вести лог промптов.** Через две недели ты не вспомнишь почему попросил ИИ изменить функцию выхода. Заведи файл `prompts.md` где сохраняешь все важные промпты — он же будет твоей документацией кода.

6. **Думать что код от ИИ — это «не твой» код.** Юридически — может быть, в зависимости от лицензии помощника. **Морально** — это **твой** код, потому что ты поставил задачу, проверил, итерировал. Программирование — это **формулировка**, а не **печатание букв**.

---

## Задание на сегодня

Это самый практический день. К концу вечера у тебя должен быть **запущенный бот на тестовом счёте**.

Чек-лист:

- [ ] Выбрал ИИ-помощника (Claude / Cursor / Copilot / бесплатный Claude через сайт)
- [ ] Собрал полный промпт по шаблону шести блоков (контекст / задача / входные / логика / ограничения / формат)
- [ ] Получил первую версию кода от ИИ
- [ ] Прошёл по семи проверкам из урока (testnet, вход, выход, аварийный стоп, логи, конфиг, тесты)
- [ ] Прошёл 2-3 итерации обсуждения с ИИ (минимум)
- [ ] Бот **запустился** и работает на Testnet 1+ час
- [ ] Бот сделал **минимум одну** сделку (если повезло — больше)
- [ ] Файл `prompts.md` создан, в нём сохранены ключевые промпты

В Telegram канал короткое сообщение:

```
День 4 — готово.

Использовал ИИ: ___________
Сколько итераций ушло на рабочий бот: ___________
Самое неожиданное в коде что ИИ сделал хорошо: ___________
Самое неожиданное в коде что ИИ сделал плохо: ___________
```

---

## Что завтра

Завтра последний день. Самый важный с точки зрения **долгосрочного** успеха. У тебя есть запущенный бот, ты сделал несколько сделок — но это **ничего не значит** статистически. Завтра разбираемся как **измерять** работу бота честно (а не «нравится / не нравится»), как итерировать **по данным**, а не на эмоциях. И как принимать решение «продолжать или бросить».

В конце пятого дня я расскажу что у нас есть **дальше**, для тех кто всерьёз хочет идти глубже. Но это будет в **самом конце**, без давления.

До завтра.


---


# Домашнее задание — День 4

> Главная задача дня — получить **запущенный бот** на тестовом счёте, **не написав ни одной строчки кода руками**. Все строчки пишет ИИ-помощник, ты ставишь задачу и проверяешь.

## Чек-лист

- [ ] **Выбран ИИ-помощник** (Claude / Cursor / Copilot / бесплатный Claude через сайт)
- [ ] **Собран полный промпт** по шаблону шести блоков
- [ ] **Получена первая версия кода** от ИИ
- [ ] **Пройдены семь проверок:** testnet=True / правило входа / правило выхода / аварийный стоп / логи / конфиг в начале / возможность тестового запуска
- [ ] **Проведены 2-3 итерации** обсуждения с ИИ (улучшения, исправления, объяснения)
- [ ] **Бот запустился** и работает на Testnet минимум 1 час
- [ ] **Минимум одна сделка** сделана (или хотя бы зарегистрирован сигнал в логе)
- [ ] **Файл `prompts.md`** создан, в нём сохранены ключевые промпты для будущей итерации

---

## Шаблон промпта для копирования

> Замени всё что в `___` на свои данные с третьего дня. Получится **твоё** техзадание для ИИ.

```
[КОНТЕКСТ]
Я разрабатываю учебный торговый бот для криптобиржи Binance.
Запускаю его на тестовом счёте Binance Spot Testnet (testnet.binance.vision),
не на реальные деньги. Использую Python 3.10+, библиотеки python-binance и pandas.
У меня уже настроены API-ключи в .env через python-dotenv.

[ЗАДАЧА]
Напиши скелет торгового бота: функции получения свечей, генерации сигнала,
управления позицией, логирования сделок. Главный цикл должен запускаться раз
в N минут (N я укажу позже). Это минимально жизнеспособная версия.

[ВХОДНЫЕ ДАННЫЕ]
- API: Binance Spot Testnet через python-binance
- Свечи: пара ___ , таймфрейм ___ , последние 100 свечей
- Источник ключей: переменные окружения BINANCE_API_KEY и BINANCE_API_SECRET

[ЛОГИКА]
Стратегия — ___ (трендовая / контр-трендовая / ...).

ВХОД: открыть позицию когда:
1. ___
2. ___
3. И нет открытой позиции.

ВЫХОД: закрыть позицию когда (любое из):
1. Цена достигла +___% от цены входа (тейк-профит)
2. Цена упала на -___% от цены входа (стоп-лосс)
3. Прошло более ___ часов с момента входа (тайм-стоп)

РИСК:
1. Размер позиции = ___% от баланса USDT
2. Максимум одна открытая позиция одновременно

АВАРИЙНЫЙ СТОП:
1. Если три подряд вызова API возвращают ошибку — бот пишет в лог
"EMERGENCY STOP" и завершается.

[ОГРАНИЧЕНИЯ]
- Не используй настоящий счёт. Всегда testnet=True.
- Не подбирай и не оптимизируй параметры — все числа фиксированные.
- Не используй сложных индикаторов.
- Не используй внешние библиотеки кроме python-binance, pandas, python-dotenv.
- Используй только последнюю **закрытую** свечу для решений, не текущую.

[ФОРМАТ ВЫВОДА]
Один файл bot.py.
Структурированный, с комментариями на русском.
Логи каждой сделки в файл trades.csv (timestamp, side, price, qty, balance).
Логи общих событий в stdout.
Все настройки (периоды, проценты, таймфрейм) — в начале файла как константы CONFIG.
Внизу блок `if __name__ == "__main__":` запускающий основной цикл.
```

---

## Семь проверок результата от ИИ

> Не пропускай ни одной. Это твоя **гарантия** что бот не сделает что-то страшное.

1. **`testnet=True`** в инициализации клиента — есть?
2. **Правило входа** — совпадает с твоей бумагой?
3. **Правило выхода** — все три условия (тейк / стоп / тайм) присутствуют?
4. **Аварийный стоп** — счётчик ошибок API есть, после N ошибок бот выходит?
5. **Логи сделок** — пишутся в CSV файл?
6. **Конфиг** — все параметры в начале как константы, не разбросаны по коду?
7. **Тестовый запуск** — функции получения свечей и сигнала можно вызвать **отдельно** от живого цикла?

Если **любая** проверка не проходит — отправь ИИ скриншот / цитату кода и попроси исправить. Не запускай бот пока все семь не пройдены.

---

## Промпты для итераций (примеры)

После первой версии кода — открой диалог. Вот фразы которые работают:

- «Объясни простыми словами что делает функция [имя].»
- «Что произойдёт если API вернёт пустой массив свечей?»
- «Что если бот открыл позицию, а Internet отвалился на 5 минут?»
- «Я заметил что [конкретное поведение]. Как это исправить?»
- «Добавь обработку случая когда [ситуация], должно [ожидаемое поведение].»
- «Перепиши функцию [имя] так чтобы [уточнение].»

---

## Что записать в `prompts.md`

Создай файл `prompts.md` рядом с `bot.py`. Туда пиши:

```
## Первый промпт (день 4, дата)
[весь твой первый промпт-техзадание]

## Итерация 1: исправление логики выхода
[что попросил исправить]

## Итерация 2: добавление аварийного стопа
[что попросил добавить]

...
```

Этот файл — твоя **документация** кода. Через две недели ты не вспомнишь почему функция выхода устроена именно так — а в `prompts.md` будет точная история.

---

## Что отправить в общий чат

```
День 4 — готово.

Использовал ИИ: ___________
Сколько итераций ушло на рабочий бот: ___________
Самое неожиданное в коде что ИИ сделал ХОРОШО: ___________
Самое неожиданное в коде что ИИ сделал ПЛОХО: ___________
```

---

## Если ты залип

**ИИ выдаёт код который не запускается?** Скопируй ошибку дословно в диалог. Скажи: «вот ошибка, исправь причину». В 90% случаев ИИ исправит.

**Бот запустился, но молчит — ничего не делает?** Это нормально на учебной стратегии. Сигналы редкие. Уменьши таймфрейм (например с 1 час на 15 минут) для **первого теста** — будет больше сделок и быстрее увидишь что бот живой. Потом вернёшь обратно.

**Бот сделал сделку, но зашёл и сразу вышел в минус?** Это **тоже** нормально — он же на бумажных учебных параметрах. Цель сегодня — **запуск**, не прибыль. Прибыль — после месяцев итерации.

**ИИ настаивает на чём-то с чем ты не согласен?** Помни: **архитектура — твоё решение**. Если ИИ говорит «давай добавим Bollinger Bands для надёжности» — а ты не выбирал контр-трендовую стратегию — отказывай. Это твой бот, не его.

---

До завтра.
