# CONDITION MANAGER

{% hint style="success" %}
**CONDITION MANAGER** - это ключевой модуль комплекса, который позволяет вам мастерски сочетать различные внешние индикаторы для формирования торговых сигналов или вычисления констант. Благодаря его мощности, вы можете построить большинство своих торговых стратегий, используя лишь **CONDITION MANAGER**, словно это ваш швейцарский армейский нож в мире трейдинга.<br>

*<mark style="color:blue;">**Блоки модуля:**</mark>*

* [*Правила*](#id-1.-rule-pravila) *(RULE)*
* [*Группа правил*](#id-2.-group-gruppa-pravil) *(GROUP)*
* [Объединение групп](#id-3.-obedinenie-grupp) *(GROUP TO GROUP LINK)*
* [*Константы*](#id-4.-konstanty) *(CONSTANT)*
* [*Оповещения*](#id-5.-opovesheniya) *(ALERT)*
* [*Backtesting Line*](#id-6.-backtesting-line)
* [*Выходные данные*](#id-7.-vykhodnye-dannye)
  {% endhint %}

{% hint style="info" %}
**Ассоциация**

Этот модуль реализует ваши идеи, показывает сигналы на истории и организует алго-трейдинг.
{% endhint %}

### Общее описание индикатора

**CONDITION MANAGER** - настоящий помощник для трейдера, который хочет самостоятельно управлять своими торговыми стратегиями. Он позволяет выбрать необходимые данные для анализа, такие как цены на акции, объемы торгов или показатели из других индикаторов. На базе этих данных можно создать правила (**RULE**), которые будут основой стратегии.

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

Для более сложных стратегий, правила можно группировать (**GROUP**). Имеем четыре группы, каждая из которых может содержать набор правил, объединенных логическими операторами "И" (**AND**) или "ИЛИ" (**OR**). Группы также можно соединять между собой по тем же принципам, создавая сложные комбинации условий.

Когда все условия проверены и они соответствуют заданным критериям, индикатор может отправить сигнал во внешнюю систему. Такой сигнал может содержать текстовое сообщение, которое формируется из стандартных переменных *TradingView* и специальных переменных созданных на значениях из правил и констант.

Что касается констант (**CONSTANT**), индикатор предоставляет четыре специальные переменные с числовыми значениями, которые можно использовать для передачи параметров в стратегию или как переменные в оповещениях. Эти константы могут иметь как постоянное значение, так и динамическое, изменяющееся со временем, что делает их полезными для адаптации стратегии к изменениям на рынке, например, когда цена достигает верхней границы Боллинджерових каналов.

В результате, этот индикатор дает возможность трейдерам создавать индивидуальные торговые стратегии любой сложности, используя разнообразные данные и условия, и легко интегрировать их с внешними автоматизированными торговыми системами.

{% hint style="info" %}
**Подсказка**\
В каждом индикаторе вверху есть поле "**DESCRIPTION**", где можно написать любой текст, который поможет промаркировать этот индикатор на графике *TradingView*.
{% endhint %}

<figure><img src="/files/qoZ8nJjVznl6SBdkYgsq" alt=""><figcaption></figcaption></figure>

### 1. RULE - правила

Этот блок помогает трейдерам выбирать различные типы торговых данных, например цену акций, объем продаж или показатели других индикаторов. На основе этих данных можно создавать специальные правила (**RULE**), которые будут управлять вашей торговой стратегией.

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

<figure><img src="/files/adMi8R9QgxHxHZDPCynh" alt=""><figcaption></figcaption></figure>

#### Описание полей:

<table><thead><tr><th width="70.33333333333331">N</th><th width="243" align="center">Название</th><th align="center">Действие</th></tr></thead><tbody><tr><td>1</td><td align="center">Переключатель</td><td align="center">Включает и выключает это правило.</td></tr><tr><td>2</td><td align="center">Выбор группы</td><td align="center">Группа правил к которой принадлежит именно это правило.</td></tr><tr><td>3</td><td align="center">Источник данных 1: S1_1</td><td align="center">Откуда брать данные для формирования условия.</td></tr><tr><td>4</td><td align="center">Указатель источника или функция агрегатор</td><td align="center">Указывает на то, какой источник мы берем для анализа без модификации (S1_1 или S1_2), или какую функцию мы будем выполнять для модификации источника S1_1.</td></tr><tr><td>5</td><td align="center">Ручной ввод или параметр для функции: S1_2</td><td align="center">Можно ввести значение с которым будут сравниваться другие источники в правиле, или задать параметры для выбранной функции в п.4.</td></tr><tr><td>6</td><td align="center">Условие</td><td align="center">Операция уравнивания двух источников данных.</td></tr><tr><td>7</td><td align="center">Источник данных 2: S2_1</td><td align="center">Откуда брать данные для формирования условия.</td></tr><tr><td>8</td><td align="center">Указатель источника или функция агрегатор</td><td align="center">Указывает на то, какой источник мы берем для анализа без модификации (S2_1 или S2_2), или какую функцию мы будем выполнять для модификации источника S2_1.</td></tr><tr><td>9</td><td align="center">Ручной ввод или параметр для функции: S2_2</td><td align="center">Можно ввести значение с которым будут сравниваться другие источники в правиле, или задать параметры для выбранной функции в п. 8.</td></tr></tbody></table>

#### Источник данны&#x445;**:**

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

<figure><img src="/files/U9nfnBt1Q7rWVQuSHnJy" alt="" width="278"><figcaption></figcaption></figure>

Если включить переключатель возле иконки картинки, можно отрисовать график источника данных на графике цены (например нарисовать линию EMA).

<figure><img src="/files/veiIuYUXftitKHyxRWE3" alt="" width="244"><figcaption></figcaption></figure>

#### Указатель источника или функция агрегатор:

Это поле указывает какое из полей данных необходимо использовать для следующего шага правила, или какую функцию-агрегатор необходимо выполнить над **S1\_1** / **S2\_1** с параметрами **S1\_2** / **S2\_2**.

<figure><img src="/files/buiO7uYEUPJG8fCCUJST" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="214">Выбор</th><th>Описание</th></tr></thead><tbody><tr><td>📈</td><td>Получить значение выбранного источника S1_1 или S2_1 <strong>без обработки</strong> (из левого поля).</td></tr><tr><td>                        ✒️</td><td>Получить <strong>введенное пользователем</strong> значение (из правого поля).</td></tr><tr><td>✒️ <strong>BAR_VALUE</strong></td><td><p>Получить <strong>предыдущее значение</strong>: </p><p>Выберите источник, например S1_1 или S2_1, в левом поле, и укажите количество баров назад, в правом поле.</p><p>Если выбрать "close" и ввести "1", вы получите цену закрытия одного бара назад.</p></td></tr><tr><td>✒️ <strong>MAX_BARS</strong></td><td><p>Получить <strong>максимальное значение в прошлом</strong>:</p><p>Выберите источник, например S1_1 или S2_1, в левом поле, и укажите количество баров назад, в правом поле.</p><p>Чтобы найти самую высокую цену за определенный период, выберите источник, например "high", и количество прошлых баров, скажем "5". Таким образом, вы увидите самую высокую цену за последние 5 баров (без учета текущего).</p></td></tr><tr><td>✒️ <strong>MIN_BARS</strong></td><td><p>Получить <strong>минимальное значение в прошлом</strong>:</p><p>Выберите источник, например S1_1 или S1_2, в левом поле, и укажите количество баров назад, в правом поле.</p><p>Чтобы найти самую низкую цену за определенный период, выберите источник, например "low", и количество прошлых баров, скажем "20". Таким образом, вы увидите самую низкую цену за последние 20 баров (без учета текущего).</p></td></tr><tr><td>✒️ <strong>SUM_BARS</strong></td><td><p>Получить <strong>суммы значений в прошлом</strong>:</p><p>Выберите источник, например S1_1 или S2_1, в левом поле, и укажите количество баров назад, в правом поле.</p><p>Чтобы найти суммарный объем за определенный период, выберите источник, например "volume", и количество прошлых баров, скажем "24". Таким образом, вы увидите суммарный объем за последние 24 бара (без учета текущего).</p></td></tr></tbody></table>

<table data-header-hidden><thead><tr><th width="216"></th><th></th></tr></thead><tbody><tr><td>✒️ <strong>AVG_BARS</strong></td><td>Получить <strong>среднее значение в прошлом</strong>: Выберите источник, например S1_1 или S2_1, в левом поле, и укажите количество баров назад, в правом поле. Чтобы найти среднее значение за определенный период, выберите источник, например "volume", и количество прошлых баров, скажем "24". Таким образом, вы увидите суммарный объем за последние 24 бара (без учета текущего).</td></tr><tr><td>✒️ <strong>SMA</strong></td><td><strong>Simple Moving Average</strong> (SMA) <a href="https://www.investopedia.com/terms/s/sma.asp">https://www.investopedia.com/terms/s/sma.asp</a></td></tr><tr><td>✒️ <strong>EMA</strong></td><td><strong>Exponential Moving Average</strong> (EMA) <a href="https://www.investopedia.com/terms/e/ema.asp">https://www.investopedia.com/terms/e/ema.asp</a></td></tr><tr><td>✒️ <strong>HMA</strong></td><td><strong>Hull Moving Average</strong> (HMA) <a href="https://www.technicalindicators.net/indicators-technical-analysis/143-hma-hull-moving-average">https://www.technicalindicators.net/indicators-technical-analysis/143-hma-hull-moving-average</a></td></tr><tr><td>✒️ <strong>RMA</strong></td><td><strong>Relative Moving Average</strong> (RMA) <a href="https://www.tradingcode.net/tradingview/relative-moving-average/">https://www.tradingcode.net/tradingview/relative-moving-average/</a></td></tr><tr><td>✒️ <strong>SSMA</strong></td><td>Smoothed moving average (SSMA)<br><a href="https://devexperts.com/dxcharts/kb/docs/smoothed-simple-moving-average">https://devexperts.com/dxcharts/kb/docs/smoothed-simple-moving-average</a></td></tr><tr><td>✒️ <strong>ATR</strong></td><td><strong>Average True Range</strong> (ATR) <a href="https://www.investopedia.com/terms/a/atr.asp">https://www.investopedia.com/terms/a/atr.asp</a></td></tr><tr><td>✒️ <strong>NATR</strong></td><td><strong>Normalized Average True Range</strong> (NATR) в процентах. Это нормализованный ATR, что означает, что он отображает ATR в процентах, а не абсолютную цену. Например, значение 1 указывает на истинный диапазон в 1% за данный период. Этот индикатор создает скользящее среднее значение волатильности продукта за период.</td></tr><tr><td>✒️ <strong>RSI</strong></td><td><strong>Relative Strength Index</strong> (RSI) <a href="https://www.investopedia.com/terms/r/rsi.asp">https://www.investopedia.com/terms/r/rsi.asp</a></td></tr><tr><td>✒️ <strong>STOCH</strong></td><td><strong>Stochastic Oscillator</strong> (STOCH) <a href="https://www.investopedia.com/terms/s/stochasticoscillator.asp">https://www.investopedia.com/terms/s/stochasticoscillator.asp</a></td></tr><tr><td>✒️ <strong>PRICE_ANGLE</strong></td><td>Расчет <strong>% изменения цены за период</strong> в барах. Считается как % отклонение от Low цены в начале периода и High цены в конце периода.</td></tr><tr><td>✒️ <strong>Z-SCORE</strong></td><td><strong>Z-Score</strong> показывает относительное отклонение цены от ее среднего значения.</td></tr><tr><td>✒️ <strong>HURST</strong></td><td><p><strong>HURST</strong> - Простая экспонента Хёрста.</p><p>Помогает обнаружить разворот тренда/рынка. Значения от 0,5 до 1 - рынок находится в тренде Значения от 0 до 0,5 - рынок склонен к средней реверсии (флэт).</p></td></tr><tr><td><p>⤴️ <strong>CONSTANT_1</strong> ⤴️</p><p> ... </p><p>⤴️ <strong>CONSTANT_6</strong> ⤴️</p></td><td><strong>Специальные переменные-заменители</strong>, которые переносят значение которое было рассчитано в соответствующем блоке <a href="#id-4.-konstanty">CONSTANT</a>. Они позволяют настроить условия основываясь на рассчитанных константах этого самого модуля.</td></tr></tbody></table>

Таким образом после выполнения этих действий мы получим исходное значение для проверки условия правила (**верхнее значение - S1 и нижнее значение S2**).

#### Условие:

Это поле задает условие или действие по которым мы будем определять выполнение правила.

<figure><img src="/files/HPBzgxTgOdDM2ckPsoJZ" alt="" width="320"><figcaption></figcaption></figure>

<table><thead><tr><th width="197" align="center">Условие</th><th align="center">Описание</th></tr></thead><tbody><tr><td align="center"><strong>LOWER</strong></td><td align="center"><strong>S1</strong> меньше <strong>S2</strong></td></tr><tr><td align="center"><strong>GREATER</strong></td><td align="center"><strong>S1</strong> больше <strong>S2</strong></td></tr><tr><td align="center"><strong>EQUAL</strong></td><td align="center"><strong>S1</strong> равно <strong>S2</strong></td></tr><tr><td align="center"><strong>NOT</strong> <strong>EQUAL</strong></td><td align="center"><strong>S1</strong> не равно <strong>S2</strong></td></tr><tr><td align="center"><strong>CROSSING</strong></td><td align="center"><strong>S1</strong> пересеклась с <strong>S2</strong></td></tr><tr><td align="center"><strong>CROSSING</strong> <strong>OVER</strong></td><td align="center"><strong>S1</strong> пересекает <strong>S2</strong> сверху, когда его текущее значение становится выше <strong>S2</strong> после того, как ранее было ниже или равно <strong>S2</strong>.</td></tr><tr><td align="center"><strong>CROSSING UNDER</strong></td><td align="center"><strong>S1</strong> пересекает <strong>S2</strong> снизу, когда его текущее значение становится меньше <strong>S2</strong> после того, как до этого было выше или равно <strong>S2</strong>.</td></tr></tbody></table>

### 2. GROUP - группа правил

Группа правил (**GROUP**) - это как список инструкций для программы, говорящих ей, что делать в определенных ситуациях. Эти инструкции могут быть легкими, как "покупай, когда цена выше прошлого максимума", или сложными со многими деталями. У пользователя есть возможность выбрать четыре такие группы правил: **G1**, **G2**, **G3**, **G4**.

Представьте, что вы готовите обед и у вас есть рецепты (правила) для салата и супа. Если вы используете "И" (**AND**), то нужно приготовить и салат, и суп, чтобы обед был готов. Но если вы используете "ИЛИ" (**OR**), то достаточно приготовить хотя бы одно из них.

Так же и в торговле: если вы хотите, чтобы условия работали вместе ("И"), все они должны произойти, чтобы выполнить действие. Если же вы устанавливаете "ИЛИ", то достаточно, чтобы произошло хотя бы одно условие, и система уже может действовать.

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

В программе есть специальное место, где можно настроить, как правила в группе будут взаимодействовать между собой:

<figure><img src="/files/6sDbeqMLHt47RO4COuAX" alt="" width="281"><figcaption></figcaption></figure>

### 3. Объединение групп

**Группы правил** (*G1*, *G2*, *G3*, *G4*) могут быть объединены между собой по той же логике, что и правила в группе (**AND** или **OR**).

<figure><img src="/files/MA8AjKdJayWlnIoDpquL" alt="" width="416"><figcaption></figcaption></figure>

Представьте себе группы правил как отдельные команды большой футбольной лиги. Каждая команда имеет свою стратегию и тактику, но когда приходит время для чемпионата, они объединяются с помощью "И" (**AND**) или "ИЛИ" (**OR**), чтобы достичь общей цели - победы на рынке.

Если вы используете оператор "И" (**AND**) для объединения групп, это означает, что условия всех групп должны быть выполнены одновременно, чтобы активировать сигнал. Это словно все команды должны выиграть свои матчи, чтобы трейд был совершен. Высокая стратегическая игра, где все должно сойтись идеально!

Но если вы объединяете группы через "ИЛИ" (**OR**), то выполнения хотя бы одной группы правил достаточно для активации сигнала. То есть, если хоть одна команда побеждает, вы получаете зеленый свет для трейда. Это добавляет гибкости, ведь позволяет реагировать быстрее на изменения условий рынка.

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

### 4. Константы

{% hint style="danger" %}
**ВАЖНО**

В блоке констант все вычисления выполняются последовательно, одно за другим, начиная сверху и спускаясь вниз. Не важно, будь то умножение или деление - нет никаких "первоочередных" операций, все идет по очереди, как в списке покупок: сначала покупаем хлеб, потом молоко, и только после этого - шоколад.
{% endhint %}

{% hint style="info" %}
**Разъяснение**:

*`TakeProfit`:* \
`close + 1.5 * ATR`

нужно считать таким образом:&#x20;

`ATR * 1.5 + close`

сначала производится умножение и к результату прибавляется цена закрытия
{% endhint %}

{% hint style="info" %}
**Разъяснение**:

*`StopLoss`:*&#x20;

`low - 1.5 * ATR`

нужно считать таким образом:&#x20;

`ATR * (-1.5) + low`

сначала производится умножение для получения отрицательного значения и к результату прибавляется минимальная цена
{% endhint %}

**Константа** - это как калькулятор, позволяющий соединять различные данные, например цены и показатели индикаторов, и делать с ними простые математические операции, такие как сложение или умножение. Вы можете использовать константу, чтобы автоматически рассчитывать важные торговые параметры, такие как цена для взятия прибыли (*TakeProfit*) или лимит убытков (*StopLoss*).

Константа (рисунок ниже) имеет 3 блока источников данных (или ввода значений пользователя) которые имеют такую же логику как и в блоке правил (**RULE**) и так же включается и выключается (блок <mark style="color:red;">**1**</mark>). Между этими блоками можно провести математические операции: суммирование (✚), вычитание (➖), модуль разницы (**\[**➖**]**), умножение (✖️) и деление (➗) (блоки <mark style="color:red;">**2**</mark>, <mark style="color:red;">**3**</mark>). Дополнительный режим '**NONE**' указывает на то, что не нужно включать следующий источник данных в цепь вычислений. Если мы продолжим нашу аналогию с кулинарией, то это как решить не добавлять соль в блюдо - просто игнорируем этот ингредиент.

<figure><img src="/files/b1y9nLXqxa5JiwQxUcbh" alt="" width="114"><figcaption></figcaption></figure>

Представьте, что вы хотите установить цену *TakeProfit* на основе текущей цены закрытия плюс полтора раза больше значения *ATR* (Average True Range - среднего истинного диапазона). Для этого вам просто надо взять последнюю цену закрытия (<mark style="color:blue;">**S3**</mark>), прибавить к ней результат умножения *ATR* (<mark style="color:blue;">**S1**</mark>) на *1.5* (<mark style="color:blue;">**S2**</mark>), и получите вашу цену *TakeProfit:* **close** (<mark style="color:blue;">**S3**</mark>) ✚ **ATR** (<mark style="color:blue;">**S1**</mark>) ✖️**1.5** (<mark style="color:blue;">**S2**</mark>).

<figure><img src="/files/2cX2sq85Jsn2ugAuzolC" alt=""><figcaption></figcaption></figure>

### 5. Оповещения

**Оповещения** - это встроенная возможность *TradingView* которую мы расширяем дополнительным функционалом.

{% hint style="info" %}
[*Оповещения TradingView*](https://www.tradingview.com/support/solutions/43000520149-about-tradingview-alerts/) - это моментальные уведомления, которые вы получаете, когда ситуация на рынке соответствует заданным вами условиям. Например, "*Цена акций Apple поднялась выше 150$*". Все пользователи могут получать всплывающие уведомления, звуковые сигналы, email-по-SMS, а также push-уведомления, которые отправляются на телефон. Пользователи с подписками *TradingView Essential, Plus* и *Premium* также могут получать ***Webbhook*** уведомления при срабатывании уведомлений.
{% endhint %}

В блоке '**ALERT**' нужно задать текст шаблона оповещения которое будет отправляться и частоту его отправки.

<figure><img src="/files/GKIsOubBxx5dDa8MENPJ" alt="" width="563"><figcaption></figcaption></figure>

<table><thead><tr><th width="242">Частота отправления</th><th align="center">Описание</th></tr></thead><tbody><tr><td><strong>ALL</strong></td><td align="center"><p>Отправляйте уведомления <strong>каждый раз, когда они активируются</strong>, но будьте осторожны.</p><p> Если это случается слишком часто, TradingView может отключить ваши уведомления.</p></td></tr><tr><td><strong>ONCE_PER_BAR</strong></td><td align="center"><p>Отправлять уведомление только <strong>один раз для каждого бара</strong>, когда условие впервые выполняется.</p><p>Если уведомление уже отправлено, новое появится только на следующем баре.</p></td></tr><tr><td><strong>ONCE_PER_CLOSE_BAR</strong></td><td align="center">Отправлять оповещения только <strong>на закрытии бара</strong>, независимо от количества выполнений условий в течение этого бара.</td></tr></tbody></table>

Вы можете дополнить стандартные переменные для сообщений на *TradingView* своими, которые создаете в блоках "Правила" (**RULE**) и "Константы" (**CONSTANT**).

<figure><img src="/files/RHOsIjY839N3efB4UiHn" alt="" width="563"><figcaption></figcaption></figure>

<table><thead><tr><th width="289" align="center">Переменная</th><th align="center">Описание</th></tr></thead><tbody><tr><td align="center"><strong>{{RULE_1_VALUE_SOURCE_1}}</strong><br>...<br><strong>{{RULE_8_VALUE_SOURCE_1}}</strong></td><td align="center">Значение от источника данных в условии (RULE) сверху</td></tr><tr><td align="center"><strong>{{RULE_1_VALUE_SOURCE_2}}</strong><br>...<br><strong>{{RULE_8_VALUE_SOURCE_2}}</strong></td><td align="center">Значение от источника данных в условии (RULE) снизу</td></tr><tr><td align="center"><strong>{{CONSTANT_1}}</strong><br>...<br><strong>{{CONSTANT_4}}</strong></td><td align="center">Значение константы</td></tr></tbody></table>

<figure><img src="/files/C6hm7jcxnnsnDCeD8Nae" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="/files/gG3lEWkyA58CFTmZgoba" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="warning" %}
**Настройка оповещения**

Как настроить отправку оповещения можно прочитать на сайте TradingView:

* <https://www.tradingview.com/support/solutions/43000595315-how-to-set-up-alerts/>
* <https://www.tradingview.com/support/solutions/43000595311-manage-alerts/>
* <https://www.tradingview.com/support/solutions/43000474415-differences-between-alert-frequencies/>
* <https://www.tradingview.com/support/solutions/43000531021-how-to-use-a-variable-value-in-alert/>
* <https://www.tradingview.com/support/solutions/43000529348-about-webhooks/>

*Как подключить отправку в различные торговые системы:*

* &#x20;3Commas: <https://3commas.io/trading-view>
* Finandy: <https://docs.finandy.com/algo-trading/signals/connection-and-configuration/indicator-strategy-connection>
* Alertatron: <https://alertatron.com/docs/getting-alerts-from-tradingview>
* Binance: <https://www.binance.com/en/support/faq/how-to-set-up-signal-trading-with-tradingview-3f57291b56474f5e900cc4b754f61ff3>
* aleeert: <https://aleeert.com/docs/>
  {% endhint %}

{% hint style="info" %}
**Совет**

Обратите внимание, что оповещения также можно отправлять из модуля "[**CONDITION MANAGER STRATEGY**](/code-zero-visual-trading_ru/cdzv-toolkit/strategii/condition-manager-strategy.md)"
{% endhint %}

### 6. Backtesting Line

Визуальная система бэк-тестирования **CDZV** позволяет вам тестировать стратегии на исторических данных. Это дополнительная система тестирования, которая не имеет отношения к системе бэк-тестирования стратегий на исторических данных платформы *TradingView*, а дополняет ее.

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

Эти синие квадратики - ваши ориентиры на пути к прибыльной стратегии. Они помогают вам определить, в каких точках времени ваш подход был эффективным, и наоборот, когда нужно остановиться и переосмыслить тактику.

<figure><img src="/files/QKcMr0oto2KI0DmMZiof" alt=""><figcaption></figcaption></figure>

Для удобства эту линию бэк-тестирования можно отображать сверху, снизу и отключить.

<figure><img src="/files/7sS3WxFiyc0ggypE23DE" alt="" width="335"><figcaption></figcaption></figure>

### 7. Выходные данные

Индикатор на выходе имеет много значений. Первый выход - это информация о том, выполняются ли условия, а остальные - это значения констант и источников условий (выходы активируются в зависимости от того, включена ли константа: **CONSTANT\_1, CONSTANT\_2, CONSTANT\_3, CONSTANT\_4, CONSTANT\_5, CONSTANT\_6**.

<figure><img src="/files/C4EKk8dkS5EErXsYHcNh" alt="" width="563"><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.cdzv.com/code-zero-visual-trading_ru/cdzv-toolkit/indikatory/condition-manager.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
