#!/bin/bash

# Функция для очистки файла
clean_file() {
    local file="$1"
    local filename=$(basename "$file")
    
    echo "Очистка $filename..."
    
    # Создаём временный файл
    cat > "${file}.tmp" << 'TMPEOF'
# {TICKER} — Актуальный анализ

> **Дата анализа:** {DATE}
> **Агент:** @tech-analyst (speculative technical analysis)
> **Сессия MOEX:** {SESSION}
> **Confidence коррекция:** {CONFIDENCE}
> **Статус сделки:** {STATUS}

---

## Текущая цена

| Last Price | Bid | Ask | Spread | Источник |
|:----------:|:---:|:---:|:------:|:--------:|
| **{PRICE}** | {BID} | {ASK} | {SPREAD}% | T-Bank API ({TIME})

> {COMMENT}

---

## Wyckoff Schema (W1/D1)

**Идентифицированная схема:** **{SCHEMA}**

**Торговый диапазон TR:** {TR}

**Всего элементов: {TOTAL} | Пройдено: {PASSED}/{TOTAL} | Ожидается: {EXPECTED}**

| # | Элемент | Дата | Подтверждение |
|---|---------|:----:|---------------|
| 1 | **SC** Selling Climax | {SC1} | {SC1_CONFIRM} |
| 2 | **AR** Automatic Rally | {AR1} | {AR1_CONFIRM} |
| 3 | **SC#2 / Spring** ⭐ | {SPRING} | {SPRING_CONFIRM} |
| 4 | **ST** Secondary Test | {ST1} | {ST1_CONFIRM} |
| 5 | **Test #2** | {TEST1} | {TEST1_CONFIRM} |
| 6 | **LPS** Last Point of Support | {LPS1} | {LPS1_CONFIRM} |
| 7 | **SOS** Sign of Strength | {SOS1} | {SOS1_CONFIRM} |

### Оценка фазы

| Фаза | Статус | Вес |
|:----:|:------:|:---:|
| A (SC→AR) | {PHASE_A} | 15% |
| B (ST) | {PHASE_B} | 15% |
| C (Spring) | {PHASE_C} | 25% |
| D (SOS→LPS→Backup) | {PHASE_D} | 30% |
| E (Markup) | {PHASE_E} | 15% |

**9 Buying Tests:** **{BUY_TESTS}/{TOTAL}** ({BUY_TESTS_STATUS})

---

## Стакан (T-Bank API)

> **Источник:** `reports/tickers/{TICKER}_orderbook.md` — **свежий ({TIME})**

| Параметр | Значение |
|----------|----------|
| Bid / Ask | **{BID_PRICE} / {ASK_PRICE}** |
| Спред | **{SPREAD_PRICE}** — узкий, высокая ликвидность |
| Дисбаланс (bid/ask vol) | **{BIAS}** → bias: {BIAS_TEXT} |
| Bid vol / Ask vol | {BID_VOL} / {ASK_VOL} лотов |
| Крупные стены | {WALLS} |

**Последнее изменение (Δ):**

| Метрика | Δ |
|---------|---|
| Δ bid | {DELTA_BID} |
| Δ ask | {DELTA_ASK} |
| Δ bid_vol | {DELTA_BID_VOL} |
| Δ ask_vol | {DELTA_ASK_VOL} |
| Δ спред | {DELTA_SPREAD} |
| Δ дисбаланс | {DELTA_BIAS} |
| Стены | {DELTA_WALLS} |

**Bias стакана (20 тиков):** **{TICK_BIAS}**

| Метрика | Значение |
|:-------:|:--------:|
| **Всего бычьих тиков** | **{BULL_TICKS} ({BULL_TICKS_PCT}%)** |
| **Всего медвежьих** | **{BEAR_TICKS} ({BEAR_TICKS_PCT}%)** |
| **Последние тики** | {LAST_TICKS} |

**Ключевые события (из истории 20 тиков):**
{KEY_EVENTS}

**Взвешенный bias (Hard Block #7):** 60% история + 40% snapshot = {WEIGHTED_BIAS}

**Вердикт:** {STAKAN_VERDICT}

---

## Тренд (Multi-Timeframe)

| ТФ | Тренд | EMA9/21/50 | ADX | +DI/−DI | RSI | MACD Hist | Stoch K/D | Комментарий |
|:--:|:-----:|:----------:|:---:|:-------:|:---:|:---------:|:---------:|:-----------|
| W1 | {W1_TREND} | {W1_EMA} | {W1_ADX} | {W1_DI} | {W1_RSI} | {W1_MACD} | {W1_STOCH} | {W1_COMMENT} |
| D1 | {D1_TREND} | {D1_EMA} | {D1_ADX} | {D1_DI} | {D1_RSI} | {D1_MACD} | {D1_STOCH} | {D1_COMMENT} |
| H1 | {H1_TREND} | {H1_EMA} | {H1_ADX} | {H1_DI} | {H1_RSI} | {H1_MACD} | {H1_STOCH} | {H1_COMMENT} |

### МТФ-анализ (взвешенный)

**Взвешенный тренд:** {WEIGHTED_TREND}

**Ключевые наблюдения:**
{KEY_OBSERVATIONS}

---

## ⛔ Hard Block проверки (X5 Post-Mortem)

| # | Правило | Статус | Детали |
|---|---------|:------:|--------|
| 1 | **W1↓ блокирует BUY** | {BLOCK1} | {BLOCK1_DETAILS} |
| 2 | **MACD D1 crossover обязателен** | {BLOCK2} | {BLOCK2_DETAILS} |
| 3 | **SL не выше H1 EMA50** | {BLOCK3} | {BLOCK3_DETAILS} |
| 4 | **TR двойная верификация** | {BLOCK4} | {BLOCK4_DETAILS} |
| 5 | **Backup Volume ≤30% SOS** | {BLOCK5} | {BLOCK5_DETAILS} |
| 6 | **Pre-div cap 55% в медвежьем** | {BLOCK6} | {BLOCK6_DETAILS} |
| 7 | **OrderBook взвешенный bias** | {BLOCK7} | {BLOCK7_DETAILS} |

**Вердикт:** {HARD_BLOCKS_VERDICT}

---

## Ключевые уровни

| Уровень | Тип | Значение | Комментарий |
|---------|-----|:--------:|------------|
| **TR top** | Reactive | {TR_TOP} | {TR_TOP_COMMENT} |
| **TR bottom** | Reactive | {TR_BOTTOM} | {TR_BOTTOM_COMMENT} |
| **LPS** | Reactive | {LPS} | {LPS_COMMENT} |
| **Backup** | Reactive | {BACKUP} | {BACKUP_COMMENT} |
| **H1 EMA50** | Proactive | {H1_EMA50} | {H1_EMA50_COMMENT} |
| **Pre-div** | Catalyst | {PRE_DIV} | {PRE_DIV_COMMENT} |
| **SOS** | Reactive | {SOS} | {SOS_COMMENT} |

---

## Индикаторы (последнее значение)

| Индикатор | W1 | D1 | H1 | Комментарий |
|-----------|:--:|:--:|:--:|-------------|
| **RSI** | {RSI_W1} | {RSI_D1} | {RSI_H1} | {RSI_COMMENT} |
| **MACD hist** | {MACD_W1} | {MACD_D1} | {MACD_H1} | {MACD_COMMENT} |
| **Stoch K/D** | {STOCH_W1} | {STOCH_D1} | {STOCH_H1} | {STOCH_COMMENT} |
| **ADX** | {ADX_W1} | {ADX_D1} | {ADX_H1} | {ADX_COMMENT} |
| **+DI/−DI** | {DI_W1} | {DI_D1} | {DI_H1} | {DI_COMMENT} |
| **OBV** | — | — | — | {OBV_COMMENT} |

---

## Сигналы

| Сигнал | Уровень | Значение | Комментарий |
|--------|:-------:|:--------:|-------------|
| **Wyckoff SOS** | {SOS_STATUS} | {SOS_VALUE} | {SOS_COMMENT} |
| **Wyckoff Backup** | {BACKUP_STATUS} | {BACKUP_VALUE} | {BACKUP_COMMENT} |
| **Wyckoff LPS** | {LPS_STATUS} | {LPS_VALUE} | {LPS_COMMENT} |
| **9 Buying Tests** | {BUY_TESTS_STATUS} | {BUY_TESTS_VALUE} | {BUY_TESTS_COMMENT} |
| **OrderBook bias** | {OB_BIAS_STATUS} | {OB_BIAS_VALUE} | {OB_BIAS_COMMENT} |
| **Pre-div rally** | {PRE_DIV_STATUS} | {PRE_DIV_VALUE} | {PRE_DIV_COMMENT} |
| **X5#1 (W1↓)** | {X5_1_STATUS} | {X5_1_VALUE} | {X5_1_COMMENT} |
| **X5#2 (MACDh<0)** | {X5_2_STATUS} | {X5_2_VALUE} | {X5_2_COMMENT} |

---

## Резюме

### Аргументы за BUY (если бы не блоки)

| Аргумент | Вес | Детали |
|----------|:---:|--------|
| **Wyckoff SOS** | 25% | {ARG_SOS} |
| **Wyckoff Backup** | 20% | {ARG_BACKUP} |
| **Wyckoff LPS** | 15% | {ARG_LPS} |
| **Pre-div rally** | 15% | {ARG_PRE_DIV} |
| **OrderBook absorption** | 10% | {ARG_ABSORPTION} |
| **9 Buying Tests** | 10% | {ARG_TESTS} |

**Сумма (без блоков):** {SUM_NO_BLOCKS}% → {VERDICT_NO_BLOCKS}

### Аргументы против / риски

| Аргумент | Вес | Детали |
|----------|:---:|--------|
| **W1↓ Hard Block #1** | 30% | {ARG_W1_BLOCK} |
| **D1 MACD crossover НЕ СОСТОЯЛСЯ** | 25% | {ARG_MACD_BLOCK} |
| **Backup Volume** | 15% | {ARG_BACKUP_VOL} |
| **OrderBook bias** | 10% | {ARG_BIAS} |
| **ASK wall** | 10% | {ARG_ASK_WALL} |
| **Pre-div rally НЕ ГАРАНТИРОВАН** | 10% | {ARG_PRE_DIV_RISK} |

**Сумма (с блоками):** {SUM_WITH_BLOCKS}% → {VERDICT_WITH_BLOCKS}

### Итоговая оценка

**Wyckoff:** {WYCKOFF_EVAL}
**Тренд:** {TREND_EVAL}
**Стакан:** {STAKAN_EVAL}
**Hard Blocks:** {HARD_BLOCKS_EVAL}

### Вердикт

**{VERDICT}%** {VERDICT_EMOJI}

**Причина:** {REASON}

**План:** {PLAN}

---

## Фундаментальный анализ

> **Источник:** `reports/00-STATE.md` — @fund-analyst ({FA_TIME})

| Метрика | Значение | Комментарий |
|---------|:--------:|-------------|
| **P/E** | {FA_PE} | {FA_PE_COMMENT} |
| **EV/EBITDA** | {FA_EV_EBITDA} | {FA_EV_EBITDA_COMMENT} |
| **DY** | {FA_DY} | {FA_DY_COMMENT} |
| **Дивиденд** | {FA_DIVIDEND} | {FA_DIVIDEND_COMMENT} |
| **Fair Value** | {FA_FAIR} | {FA_FAIR_COMMENT} |
| **3-level контекст** | {FA_3LEVEL} | {FA_3LEVEL_COMMENT} |
| **Pre-div rally** | {FA_PRE_DIV} | {FA_PRE_DIV_COMMENT} |

**Вердикт ФА:** **{FA_VERDICT}** {FA_EMOJI}

---

## Итоговая комбинированная рекомендация

| Компонент | Значение | Вес |
|-----------|:--------:|:---:|
| **Wyckoff** | {COMBO_WYCKOFF}% | 40% |
| **Тренд** | {COMBO_TREND}% | 30% |
| **Стакан** | {COMBO_STAKAN}% | 20% |
| **ФА** | {COMBO_FA}% | 10% |

**Итоговый вердикт:** **{COMBO_VERDICT}%** {COMBO_EMOJI}

**Комментарий:** {COMBO_COMMENT}

---

## X5 Post-Mortem Lessons Applied

| Урок | Статус | Применение |
|------|:------:|------------|
| **W1↓ блокирует BUY** | {PM1} | {PM1_DETAILS} |
| **MACD D1 crossover обязателен** | {PM2} | {PM2_DETAILS} |
| **SL не выше H1 EMA50** | {PM3} | {PM3_DETAILS} |
| **TR двойная верификация** | {PM4} | {PM4_DETAILS} |
| **Backup Volume ≤30% SOS** | {PM5} | {PM5_DETAILS} |
| **Pre-div cap 55% в медвежьем** | {PM6} | {PM6_DETAILS} |
| **OrderBook взвешенный bias** | {PM7} | {PM7_DETAILS} |

**Вывод:** {PM_SUMMARY}

TMPEOF
    
    # Заменяем плейсхолдеры (это упрощённый пример, нужно будет доработать)
    # В реальности нужно будет парсить исходный файл и извлекать данные
    
    # Удаляем временный файл
    rm -f "${file}.tmp"
}

# Очищаем все файлы (кроме X5 и VTBR)
for file in *.md; do
    if [ "$file" != "X5.md" ] && [ "$file" != "VTBR.md" ]; then
        clean_file "$file"
    fi
done

echo "Очистка завершена!"
