# Как изменить индикатор для работы с CDZV Toolkit

{% hint style="info" %}
Для модификации индикатор должен быть написан на pine-script версии 5&#x20;

//@version=5
{% endhint %}

Для интеграции с CDZV Toolkit можно использовать индикаторы TradingView, отображающие информацию с помощью функции [plot](https://www.tradingview.com/pine-script-reference/v5/#fun_plot).

Все остальные индикаторы, которые имеют открытый исходный код, можно легко **модифицировать**.

CDZV Toolkit обрабатывает два вида входной информации с индикаторов:

1. *Числовые значения* (цена, объем и любое другое **числовое значение с плавающей запятой**).
2. *Сигнал* (это также числовое значение, но оно ограничено: **0 - сигнал отсутствует** или **1 - сигнал присутствует**).

Эти значения можно отправить из индикатора с помощью функции *PineScript* **plot()** с параметром **display = display.data\_window**. Этот параметр указывает, что мы не рисуем ничего на графике но будем доступны для **CDZV Toolkit**.

***Примеры:***

1️⃣ Индикатор рисует на графике надписи (**label**) BUY/SELL или присылает алерты (**alerts**). Нам необходимо передать их в **Condition Manager** как сигналы. <https://www.tradingview.com/script/lSHzm9zV-CM-I-RideTheWave7/>

```
// Здесь оригинальный индикатор рисует надписи
plotshape(buySignalk[1] and showsignalsk and O1[1] > K2 ? AlphaTrend[2] * 0.9999 : na, title='LONG', text='LONG', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))
plotshape(sellSignalk[1] and showsignalsk and O2[1] > K1 ? AlphaTrend[2] * 1.0001 : na, title='SHORT', text='SHORT', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))

// Здесь оригинальный индикатор отсылает алерты
alertcondition(buySignalk[1] and O1[1] > K2, title='Confirmed BUY Alarm', message='BUY SIGNAL APPROVED!')
alertcondition(sellSignalk[1] and O2[1] > K1, title='Confirmed SELL Alarm', message='SELL SIGNAL APPROVED!')
```

Вносим модификации в код индикатора:

```
// Мы добавляем код, для отправки сигналов в CDZV Toolkit
// Мы определили логику рисования и отправки сигналов
// и создаем объект plot(), который отправляет сигнал 0 или 1.
plot(buySignalk[1] and O1[1] > K2 ? 1 : 0, "SIGNAL: BUY", display = display.data_window)
plot(sellSignalk[1] and O2[1] > K1 ? 1 : 0, "SIGNAL: SELL", display = display.data_window)
```

Результат:

<figure><img src="/files/03YUlZGi4zNGyhZXmniE" alt=""><figcaption></figcaption></figure>

2️⃣ Индикатор рисует фракталы/пивоты на графике. Необходимо их цену передать в **CDZV Toolkit.**\
<https://www.tradingview.com/script/1yk1pUCb-CM-I-Williams-Fractals/>

```
// Индикатор рисует фракталы сверху и снизу с offset=-n
plotshape(downFractal, style=shape.triangledown, location=location.belowbar, offset=-n, color=#F44336, size = size.small)
plotshape(upFractal, style=shape.triangleup, location=location.abovebar, offset=-n, color=#009688, size = size.small)
```

добавляем код, передающий цену в CDZV Toolkit:

```
// получаем цену Low и High если ранее найден фрактал
if upFractal
    last_up_price := high[n]

if downFractal
    last_down_price := low[n]

// Мы добавляем код, для отправки цен фракталов в CDZV Toolkit
// создаем объект plot(), который отправляет цену (число с плавающей запятой)
plot(last_up_price, title = 'UP Price', display = display.data_window)
plot(last_down_price, title = 'DOWN Price', display =display.data_window)
```

Результат:

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

3️⃣ Индикатор рисует осциллятор, который меняет свой цвет и необходимо передавать сигналы когда осциллятор **ЗЕЛЕНЫЙ** или **КРАСНЫЙ**. <https://www.tradingview.com/script/JUK476pQ-CM-I-Schaff-Trend-Cycle-STC/>

```
// Находим код отвечающий за цвет осциллятора
mSTC = STC(defLen, fastLen, slowLen)
mColor = mSTC > mSTC[1] ? color.new(color.green, 20) : color.new(color.red, 20)

plot(mSTC, color=mColor, title='STC', linewidth=2)
```

и ниже добавляем логику, которая отправит сигнал **GREEN**/**RED**

```
plot(mSTC > mSTC[1] ? 1 : 0, 'SIGNAL: GREEN', display = display.data_window)
plot(mSTC <= mSTC[1] ? 1 : 0, 'SIGNAL: RED', display = display.data_window)
```

Результат:

<figure><img src="/files/HROKhSIGAYmIbk5ZGNv8" alt=""><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/rukovodstvo-polzovatelya/kak-izmenit-indikator-dlya-raboty-s-cdzv-toolkit.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.
