# Як змінити індикатор для роботи з CDZV Toolkit

{% hint style="info" %}
Для модифікації індикатор має бути написаний на pine-script версії 5

//@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/>

```javascript
// Тут оригінальний індикатор малює написи
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/Cu6sPV83mZKUN0JJcMoN" 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/r91h5Dy5UMWddGEvF0qJ" 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/IyRcvQE5UPVxoH6FXSDO" 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_ua/posibnik-koristuvacha/yak-zminiti-indikator-dlya-roboti-z-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.
