# ICT Institutional Suite v11 — Инструкция по подключению TradingView → Webhook

> **Важно:** Webhook endpoint работает **только на опубликованном (published) домене**. Preview-ссылка не доступна извне.

---

## 📋 Содержание

1. [Что понадобится](#что-понадобится)
2. [Шаг 1. Настройка секретов в проекте](#шаг-1-настройка-секретов-в-проекте)
3. [Шаг 2. Загрузка Pine-скрипта в TradingView](#шаг-2-загрузка-pine-скрипта-в-tradingview)
4. [Шаг 3. Настройка Alert в TradingView](#шаг-3-настройка-alert-в-tradingview)
5. [Шаг 4. Проверка Webhook](#шаг-4-проверка-webhook)
6. [Дополнительно: MTF и корреляция](#дополнительно-mtf-и-корреляция)
7. [Дополнительно: Telegram-уведомления](#дополнительно-telegram-уведомления)
8. [Troubleshooting](#troubleshooting)

---

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

| Компонент | Описание |
|-----------|----------|
| **Аккаунт TradingView** | Любой тариф (бесплатный тоже подходит для webhook) |
| **Файл скрипта** | `ict_pro_signals_v11.pine` (скачай с дашборда) |
| **Опубликованный проект** | URL: `https://ictsystem.de` |
| **Webhook Secret** | Произвольная строка минимум 8 символов (придумай сам) |

---

## Шаг 1. Настройка секретов в проекте

Прежде чем TradingView сможет отправлять сигналы, нужно задать секрет в backend (Lovable Cloud).

### 1.1. Создай `TV_WEBHOOK_SECRET`

1. Открой настройки проекта → **Secrets / Environment Variables**
2. Добавь секрет с именем `TV_WEBHOOK_SECRET`
3. Значение — любая строка минимум 8 символов, например:
   ```
   MySuperSecret123
   ```
   ⚠️ Запомни это значение — оно понадобится в Pine-скрипте.

### 1.2. (Опционально) Telegram-уведомления

Если хочешь получать сигналы в Telegram:

| Секрет | Откуда взять |
|--------|-------------|
| `TELEGRAM_API_KEY` | У BotFather создай бота → скопируй токен вида `123456:ABC-DEF...` |
| `TELEGRAM_CHAT_ID` | Напиши боту `@userinfobot` или используй ID своей группы |
| `LOVABLE_API_KEY` | В настройках проекта → **Lovable API Key** |

---

## Шаг 2. Загрузка Pine-скрипта в TradingView

### 2.1. Скачай скрипт

Скачай файл `ict_pro_signals_v11.pine` с дашборда (кнопка Setup Guide → .pine скрипт).

### 2.2. Создай стратегию в TradingView

1. Открой график любой валютной пары (рекомендуется **EURUSD**, **GBPUSD**, **XAUUSD**)
2. Внизу графика нажми **Pine Editor** (или `</>`)
3. Удали всё, что есть в редакторе, и **вставь скопированный скрипт**
4. Нажми **«Добавить в график»** (Add to chart) или **Ctrl+Enter**

> 💡 **Важно:** это `strategy()`, а не `indicator()`. Стратегия открывается в отдельной панели под графиком и содержит встроенный бэктестер. Торговые сигналы отправляются через `alert()`, а не через `strategy.entry()`.

### 2.3. Настрой входные параметры

Правый клик по названию стратегии на графике → **Settings** (Настройки):

| Параметр | Значение | Описание |
|----------|----------|----------|
| **Webhook Secret** | `MySuperSecret123` | Тот же секрет, что в Step 1 |
| **Strategy Version** | `v11.0-pro` | Версия для логов |
| **Send skip alerts** | ☑ | Отправлять skip-события на сервер |
| **HTF Bias TF** | `60` | Таймфрейм для определения тренда (H1 = 60 минут) |
| **HTF POI TF** | `240` | Таймфрейм для поиска POI (H4 = 240 минут) |
| **HTF EMA Length** | `50` | Период EMA для определения тренда |
| **External Swing Length** | `10` | Период для поиска внешних свингов |
| **Internal Structure Length** | `5` | Период для внутренней структуры |
| **Max bars BOS wait** | `5` | Максимум баров ожидания BOS после sweep |
| **ATR Length** | `14` | Период ATR для расчёта SL/TP |
| **SL ATR Floor** | `1.0` | Минимальный SL в ATR |
| **SL Buffer ATR** | `0.3` | Буфер SL за свингом |
| **TP1 Risk Ratio** | `1.0` | Первый тейк-профит (1R) |
| **Dynamic Adaptive RR** | ☑ | Адаптивный RR по confidence |
| **Auto-Breakeven at TP1** | ☑ | Перевод в безубыток при достижении TP1 |
| **ADX Length** | `14` | Период ADX |
| **ADX Trend Threshold** | `22` | Минимальный ADX для тренда |
| **ATR/SMA Min** | `0.6` | Минимальное отношение ATR/SMA |
| **ATR/SMA Max** | `2.0` | Максимальное отношение ATR/SMA |
| **Volume Z-Score Threshold** | `1.5` | Порог Z-score объёма |
| **Min FVG ATR Size** | `0.15` | Минимальный размер FVG в ATR |
| **FVG TTL (bars)** | `40` | Время жизни FVG в барах |
| **Render Active FVG Boxes** | ☑ | Отрисовка FVG-боксов |
| **Display Institutional Panel** | ☑ | Показывать панель информации |
| **Minimum Confidence** | `70` | Минимум confidence для сигнала |

> 💡 **Tip:** Чтобы в шапке графика не отображались значения параметров: в настройках стратегии → вкладка **Style** → сними галочки **«Values in status line»** и **«Arguments»**.

---

## Шаг 3. Настройка Alert в TradingView

### 3.1. Создание алерта

1. Справа на графике нажми кнопку **Alert** (🔔) или `Alt+A`
2. В поле **Condition** (Условие) выбери:
   - `ICT Institutional Suite v11`
   - `Order fills only`

   ✅ Это правильный вариант для стратегии. JSON берётся из `alert_message` внутри `strategy.entry()`.

3. В поле **Message** (Сообщение) вставь **ровно**:
   ```
   {{strategy.order.alert_message}}
   ```

   ⚠️ **Важно:** старый `{{message}}` удали — он отправляется как обычный текст и не превращается в JSON.

4. В поле **Webhook URL** вставь:
   ```
   https://ictsystem.de/api/public/tv-webhook
   ```

5. **Expiration** → выбери **Open-ended** (бессрочный), иначе алерт отключится через месяц.

6. Нажми **Create**.

### 3.2. Повтори для каждого символа

Создай отдельный алерт для каждой пары и таймфрейма, где работает стратегия. Например:
- EURUSD / M5
- GBPUSD / M5
- XAUUSD / M15

> 💡 **Note:** TradingView позволяет создать **несколько вебхук-алертов** на один сигнал. Можно параллельно отправлять в Make/Zapier + в этот проект.

---

## Шаг 4. Проверка Webhook

### 4.1. Проверь, что проект опубликован

Открой URL: `https://ictsystem.de`

Если страница загружается — всё ок. Если 404 — нужно нажать **Publish** в Lovable.

### 4.2. Простой тест через curl

```bash
curl -X POST https://ictsystem.de/api/public/tv-webhook \
  -H "Content-Type: application/json" \
  -d '{
    "secret": "MySuperSecret123",
    "event": "signal",
    "mode": "backtest",
    "symbol": "EURUSD",
    "timeframe": "5",
    "pattern": "test",
    "side": "long",
    "price": 1.0850,
    "stop_loss": 1.0800,
    "take_profit": 1.0900,
    "time": "2024-01-01T12:00:00Z"
  }'
```

Ожидаемый ответ:
```json
{
  "ok": true,
  "mtf_confluence": false,
  "correlation_aligned": false,
  "killzone": "ny_am"
}
```

> `mode: "backtest"` обходит live-фильтры (killzone, cooldown, лимиты) и позволяет просто проверить что webhook работает.

### 4.3. Проверка через Pine Script (визуально)

1. Дождись появления стрелки LONG (▲ зелёная) или SHORT (▼ красная) на графике
2. Если алерт настроен правильно — в правом нижнем углу TradingView появится значок сработавшего алерта
3. Проверь в проекте: перейди в раздел сигналов — новый сигнал должен появиться

### 4.4. Где смотреть логи

Если сигнал не приходит:

1. Проверь **DevTools → Network** в браузере (если тестишь через UI)
2. Проверь логи backend в Lovable → **Logs**
3. Убедись что `TV_WEBHOOK_SECRET` в Pine-скрипте **точно совпадает** с секретом в проекте

---

## Дополнительно: MTF и корреляция

Проект автоматически проверяет:

### MTF Confluence (Multi-Timeframe)
Если на том же символе за последние 6 часов был сигнал в ту же сторону на **большем** таймфрейме (например, M15 или H1, когда текущий M5), сигнал помечается `mtf_confluence: true`.

### Корреляция пар
| Символ | Коррелирует с |
|--------|--------------|
| EURUSD | GBPUSD |
| GBPUSD | EURUSD |
| AUDUSD | NZDUSD |
| NZDUSD | AUDUSD |
| USDCHF | USDJPY |
| USDJPY | USDCHF |
| XAUUSD | XAGUSD |
| XAGUSD | XAUUSD |

Если коррелирующая пара недавно дала **противоположный** сигнал → текущий блокируется (дивергенция). Если **тот же** сигнал → помечается `correlation_aligned: true`.

---

## Дополнительно: Telegram-уведомления

Если настроены секреты `TELEGRAM_API_KEY`, `TELEGRAM_CHAT_ID` и `LOVABLE_API_KEY`, каждый live-сигнал автоматически дублируется в Telegram в формате:

```
🟢 LONG  EURUSD  M5
Pattern: sweep_bos_long
Session: NY AM
Entry: 1.08500
SL: 1.08000
TP1: 1.09000
HTF: bullish
Confidence: 75%
```

---

## Troubleshooting

| Проблема | Решение |
|----------|---------|
| **«Unauthorized» 401** | Проверь что `secret` в JSON точно совпадает с `TV_WEBHOOK_SECRET` в проекте. Проверь регистр и пробелы. |
| **«Invalid request» 400** | В Message алерта должно быть ровно `{{strategy.order.alert_message}}`. Старый `{{message}}` отправляется как обычный текст. |
| **Сигнал приходит, но не записывается** | Проверь таблицу `signals` в backend. Возможно, сигнал был отфильтрован (см. причину в `signal_skips`). |
| **Нет сигналов на графике** | Проверь что стратегия добавлена, график обновляется, и текущее время попадает в killzone (London 07–10, NY AM 12–14, NY PM 14–16 UTC). |
| **Webhook URL not reachable** | Убедись что проект опубликован (не preview). TradingView не может достучаться до preview-ссылок. |
| **Cooldown — сигнал пропущен** | На один символ действует cooldown 30 минут. Это нормально. |
| **Нет Telegram-уведомлений** | Проверь что все 3 секрета заполнены и бот имеет право писать в чат/группу. |

---

## Структура JSON от Pine-скрипта

```json
{
  "secret": "MySuperSecret123",
  "event": "signal",
  "signal_id": "EURUSD_5_20260115T123000Z_long_v11.0-pro",
  "strategy_version": "v11.0-pro",
  "mode": "live",
  "symbol": "EURUSD",
  "timeframe": "5",
  "pattern": "sweep_bos_long",
  "side": "long",
  "price": 1.08500,
  "stop_loss": 1.08000,
  "take_profit": 1.09000,
  "take_profit_2": 1.09500,
  "risk_reward": 2.0,
  "confidence": 75,
  "htf_bias": "bullish",
  "atr": 0.00350,
  "atr_ratio": 1.2,
  "adx": 28.5,
  "displacement": true,
  "sweep_validated": true,
  "bos_confirmed": true,
  "htf_poi": true,
  "structural_sl": true,
  "time": "2024-01-15T12:30:00Z"
}
```

---

## Контакты и ссылки

- **Published URL:** `https://ictsystem.de`
- **Webhook Endpoint:** `https://ictsystem.de/api/public/tv-webhook`
- **Preview URL:** `https://id-preview--db7b2781-e5df-4c7d-b0bc-5f784d083e33.lovable.app`

---

*Последнее обновление: май 2026 · ICT Institutional Suite v11 · Lovable Cloud*
