# День 1. Настрой и подготовка

> Сегодняшняя цель — поставить голову на место и подготовить рабочее окружение. К концу вечера у тебя будет работающее Python окружение, ключ к тестовому счёту Binance, и честное понимание во что ты ввязываешься. Без этого всё остальное — пустая трата времени.

---

## Зачем сегодня вообще что-то читать, а не сразу писать код

Алгоритмический трейдинг — самая обманчивая ниша программирования. Барьер входа кажется низким (Python знаешь, API простое, примеров полный GitHub), а статистика жёсткая: **больше 90% розничных алготрейдеров за первый год теряют деньги или сдаются**. Не потому что они плохие программисты. Потому что они хорошие программисты, попавшие в задачу, где навыков программирования **недостаточно**.

Знакомая мне ловушка выглядит так: программист видит на YouTube видео «как я заработал $5,000 за месяц на торговом боте», скачивает с GitHub чужой проект на 200 звёздочек, запускает на реальном счёте, теряет $1,500 за две недели, удаляет всё и говорит «эта ваша алготорговля — обман». На самом деле обман — не сама ниша. Обман — формат «скачай чужой код и нажми Run».

Этот первый день мы потратим на то, чтобы у тебя такой ловушки не было. Будут три вещи:

1. Почему 90% теряют (три причины, очень конкретно)
2. Как выглядит честный путь от «ничего нет» до «бот стабильно работает»
3. Подготовка инструментов — Python, IDE, ключ к тестовому счёту

Ни одного куска моего рабочего кода ты сегодня не увидишь. Сегодня — только головой работаем.

---

## Три причины почему программисты теряют на алготрейдинге

### Причина 1. Перегон по бэктесту (overfitting)

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

Потому что ты подобрал параметры под историю. Если на BTC за 2023 год средняя скользящая в 27 баров даёт лучший результат чем 26 или 28 — это не значит что 27 лучше работает. Это значит что 27 случайно совпало с конкретными движениями именно в 2023 году. На 2024-м или вживую этот номер с 27 уже не сработает.

Признак перегона — стратегия с win-rate 75% и Sharpe 3 на бэктесте. Реальные стратегии в крипте имеют win-rate 40-55% и Sharpe 0.8-1.5. Если ты видишь что-то лучше — почти всегда это перегон.

### Причина 2. Отсутствие риск-менеджмента

Программист пишет стратегию которая выдаёт сигналы. И всё. Он входит на «всю котлету» (или на крупную часть капитала) на каждый сигнал. Первая же серия из 4-5 убытков подряд (которая случается даже у хороших стратегий — это математика, не неудача) уносит половину депозита.

Правильно — заранее, **до** запуска бота, определить:

- сколько процентов капитала можешь потерять на одной сделке (типично 0.5-2%)
- сколько процентов капитала можешь потерять за день, прежде чем бот выключается до завтра
- сколько максимально открытых сделок одновременно
- что делает бот когда серия из N убытков подряд (типично — пауза на сутки)

Без этих четырёх ограничений ты не торгуешь — ты ставишь.

### Причина 3. Отсутствие дисциплины итерации

Бот теряет три дня подряд → программист в панике меняет 5 параметров одновременно → бот зарабатывает день → программист в эйфории добавляет 3 новых индикатора → следующая неделя худшая чем была → программист всё ломает и начинает заново.

Это смерть от тысячи правок. Любая хорошая стратегия проходит через серии убытков. Если ты после каждой такой серии меняешь логику — у тебя нет стратегии вообще, у тебя есть случайный генератор поведения.

Правильно — **одна гипотеза, одна проверка, один лог, одно решение**. И между правками — минимум 50-100 сделок чтобы статистически отделить шум от сигнала.

---

## Как выглядит честный путь

Если по уму, то от «ничего не знаю» до «бот стабильно зарабатывает на реальных деньгах» нормально проходит **6-12 месяцев**. Не неделю, не месяц, не три. Полгода-год.

Вот примерный расклад:

| Этап | Что происходит | Сколько по времени |
|---|---|---|
| Подготовка | Setup, понимание, выбор архетипа стратегии | 1-2 недели |
| Первый бот на бумаге | Простая стратегия из учебных кубиков, тестовый счёт | 2-4 недели |
| Проверка качества | Бэктест с walk-forward, выявление слабостей | 2-4 недели |
| Итерации | Десятки маленьких улучшений, разработка инфраструктуры | 2-4 месяца |
| Малые реальные деньги | Запуск с депозитом который не жалко (например $200) | 1-2 месяца |
| Постепенное наращивание | Если статистика стабильна — увеличение позиции | 3-6 месяцев |

Этот 5-дневный курс охватывает только **самое начало** — этап подготовки и первого бота на бумаге. Цель этих пяти дней — чтобы у тебя был свой работающий первый бот, и чтобы ты понимал куда идти дальше. Сами эти пять дней не делают тебя профессиональным алготрейдером. Это **первый шаг по правильному маршруту вместо случайных метаний**.

---

## Установка инструментов

Теперь к практике. Полчаса работы — и среда готова.

### Что понадобится

1. Python 3.10 или новее
2. Любой IDE (рекомендую VSCode — бесплатный, удобный)
3. Виртуальное окружение для проекта
4. Библиотеки `python-binance`, `pandas`, `numpy`
5. API-ключ для тестового счёта Binance Spot Testnet

### Шаг 1. Python и виртуальное окружение

Проверяем что Python нужной версии установлен:

```bash
python3 --version
# Должно быть Python 3.10.x или новее
```

Если нет — ставим. Под Linux/Mac обычно через системный пакетный менеджер. Под Windows — с python.org.

Создаём папку проекта и виртуальное окружение:

```bash
mkdir my-first-bot
cd my-first-bot
python3 -m venv venv
source venv/bin/activate  # Linux/Mac
# venv\Scripts\activate  # Windows
```

### Шаг 2. Библиотеки

Внутри активированного окружения:

```bash
pip install python-binance pandas numpy python-dotenv
```

### Шаг 3. Ключ к тестовому счёту Binance

Это **тестовый счёт**, не настоящий. Деньги ненастоящие. Не надо паспорт, не надо прохождения KYC, ничего. Просто инструмент для разработки.

1. Заходишь на https://testnet.binance.vision/
2. Логинишься через GitHub-аккаунт (если нет — заведи бесплатный)
3. Жмёшь «Generate HMAC_SHA256 Key»
4. Сохраняешь два значения: API Key и Secret Key

Создаём в папке проекта файл `.env`:

```
BINANCE_API_KEY=твой_ключ_сюда
BINANCE_API_SECRET=твой_секрет_сюда
```

Создаём `.gitignore` чтобы случайно не выложить ключи в публичный репозиторий:

```
venv/
.env
__pycache__/
*.log
```

### Шаг 4. Проверка что всё работает

Создаём `check_setup.py`:

```python
import os
from dotenv import load_dotenv
from binance.client import Client

load_dotenv()
client = Client(
    os.getenv("BINANCE_API_KEY"),
    os.getenv("BINANCE_API_SECRET"),
    testnet=True,
)

# Проверка соединения
status = client.get_system_status()
print(f"Тестовый счёт статус: {status}")

# Проверка баланса (Testnet даёт стартовый депозит автоматически)
account = client.get_account()
balances = [b for b in account["balances"] if float(b["free"]) > 0]
print(f"Балансы: {balances}")

# Проверка получения свечей
klines = client.get_klines(symbol="BTCUSDT", interval="1h", limit=5)
print(f"Получили {len(klines)} часовых свечей по BTC/USDT")
```

Запускаем:

```bash
python check_setup.py
```

Должно вывести что-то вроде:

```
Тестовый счёт статус: {'status': 0, 'msg': 'normal'}
Балансы: [{'asset': 'USDT', 'free': '10000.00000000', 'locked': '0.00000000'}, ...]
Получили 5 часовых свечей по BTC/USDT
```

Если вывело — всё работает, можно идти спать.

Если не вывело — типичные проблемы:

| Ошибка | Причина | Решение |
|---|---|---|
| `Invalid API-key` | Ключ не от Testnet | Перепроверь что ключ с testnet.binance.vision, а не с binance.com |
| `Invalid signature` | Секрет скопирован не полностью | Скопируй заново, проверь что нет лишних пробелов |
| `Module not found: dotenv` | Библиотеки не установлены | Активируй venv (`source venv/bin/activate`) и повтори `pip install` |
| Тайм-аут / нет соединения | Файрвол / VPN режет Binance | Попробуй с другой сети или VPN |

---

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

1. **Скачать ключ с обычного binance.com вместо testnet.binance.vision.** Тогда любая попытка торговать пойдёт на реальные деньги. Проверь домен от которого получил ключ.

2. **Не активировать виртуальное окружение перед `pip install`.** Тогда библиотеки ставятся в систему, могут конфликтовать с другими проектами.

3. **Положить ключи прямо в код.** Сегодня ты их положишь себе в `bot.py`, завтра выложишь проект на GitHub забыв убрать — и через 10 минут тебя обчистят. Всегда `.env` + `.gitignore`.

4. **Сразу ставить много библиотек "на будущее" — ta-lib, ccxt, backtrader, vectorbt и т.д.** Не надо. На каждом этапе ставь только то что прямо сейчас нужно. Иначе утонешь в зависимостях которые потом конфликтуют.

5. **Решить что Testnet "ненастоящий" и сразу попробовать на реальных деньгах "просто посмотреть".** Никогда. Любой код который ты не прогнал минимум 2 недели на тестовом счёте — это не код, это лотерейный билет.

---

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

Простое. К концу вечера у тебя должно быть всё это:

- [ ] Python 3.10+ работает (`python3 --version` показывает версию)
- [ ] Создана папка `my-first-bot` с виртуальным окружением
- [ ] Установлены `python-binance`, `pandas`, `numpy`, `python-dotenv`
- [ ] Получен ключ от Binance Spot Testnet
- [ ] Файлы `.env` и `.gitignore` созданы
- [ ] Скрипт `check_setup.py` запущен и вывел успешный результат

И ответь себе на три вопроса (письменно, в свой рабочий блокнот, не в воздух):

1. Какой капитал я **готов реально потерять** на этом эксперименте? (Не «никакой» — это самообман. Любой алгоритм может проиграть. Прикинь честно.)
2. Сколько часов в неделю я могу выделить на это **реалистично**? (Не «10», если на самом деле 3.)
3. Что я **сделаю** через 6 месяцев если бот не работает? (Бросить? Учиться дальше? Нанять помощника? Серьёзно подумай заранее.)

Эти три ответа определят твою дисциплину на следующие месяцы. Без них всё остальное — игра в код.

---

## Что завтра

Завтра разбираемся **какую стратегию ты вообще будешь делать**. Не нашу секретную (она секретная). А выбираем из четырёх известных подходов один, который подходит твоему характеру и капиталу. Учимся искать публичные примеры реализаций и **разбирать их**, а не копировать. К концу дня 2 у тебя будет выбран архетип и изучены 2 публичных примера в нём.

До завтра.


---


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

## Чек-лист готовности окружения

Отметь когда сделано:

- [ ] **Python 3.10+** установлен и доступен из терминала
- [ ] **Папка проекта** `my-first-bot` создана
- [ ] **Виртуальное окружение** активировано
- [ ] **Библиотеки** установлены: `python-binance`, `pandas`, `numpy`, `python-dotenv`
- [ ] **Ключ Testnet Binance** получен (на testnet.binance.vision, не на основном binance.com)
- [ ] **Файл `.env`** создан с ключами
- [ ] **Файл `.gitignore`** создан и содержит `.env`
- [ ] **Скрипт `check_setup.py`** запущен, вывел статус и баланс

Если всё помечено — твоё рабочее окружение готово ко второму дню.

---

## Письменное упражнение «Три честных вопроса»

> Открой блокнот (бумажный, текстовый файл, заметки в телефоне — не важно). Запиши развёрнутые ответы. Они нужны не мне — они нужны тебе. Через три месяца ты к ним вернёшься.

**Вопрос 1.** Какой капитал я готов реально потерять на этом эксперименте?

Подсказка для честности: «Никакой» — самообман. Любой алгоритм может уйти в просадку 30-50% за месяц. Если у тебя $5,000 и ты говоришь «могу потерять $5,000» — это ложь, ты потом будешь паниковать и всё разрушать. Если у тебя $5,000 и ты говоришь «могу потерять $300» — это правда, и это правильная стартовая планка.

Запиши: ___________

---

**Вопрос 2.** Сколько часов в неделю я выделю на это **реалистично**?

Подсказка для честности: 5 вечеров по 1.5-2 часа = 7-10 часов в неделю. Если ты планируешь 20 часов в неделю на торгового бота помимо основной работы и семьи — почти всегда это ложь. Алготрейдинг не сделает тебя миллионером за месяц, и заявка на 20 часов в неделю быстро превратится в 0 часов через месяц.

Запиши: ___________

---

**Вопрос 3.** Что я сделаю через 6 месяцев, если бот не работает?

Варианты для подумать:
- Брошу и попробую другую нишу программирования
- Продолжу учиться, потому что мне сам процесс интересен
- Перейду от своего бота к подписке на готовые сигналы
- Возьму платный курс и наставничество
- Нанять помощника / партнёра

Заранее знать ответ — значит не паниковать через 4 месяца когда что-то идёт не так.

Запиши: ___________

---

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

В наш Telegram-канал (ссылка на странице курса) — короткое сообщение:

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

Окружение настроено: [Python ✓ / venv ✓ / Testnet ✓]
Самый большой страх: [одно предложение]
```

Это нужно для двух вещей:

1. Ты публично закрепил факт что Day 1 пройден — это работает на дисциплину.
2. Видишь что ты не один — таких же людей в чате десятки.

---

До завтра.
