Для модифікації індикатор має бути написаний на pine-script версії 5
//@version=5
Для інтеграції з CDZV Toolkit можна використовувати індикатори TradingView, що відображають інформацію за допомогою функції .
Всі інші індикатори, які мають відкритий вихідний код, можна легко модифікувати.
CDZV Toolkit обробляє два види вхідної інформації з індикаторів:
Числові значення (ціна, об'єм та будь-яке інше числове значення з плаваючою комою).
Сигнал (це також числове значення, але воно обмежене: 0 - сигнал відсутній або 1 - сигнал присутній).
Ці значення можна відправити з індикатора за допомогою функції PineScriptplot() з параметром display = display.data_window. Цей параметр вказує, що ми не малюємо нічого на графіку але будемо доступні для CDZV Toolkit.
Приклади:
1️⃣ Індикатор малює на графіку написи (label) BUY/SELL або надсилає алерти (alerts). Нам необхідно передати їх в Condition Manager як сигнали.
// Тут оригінальний індикатор малює написи
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)
Результат:
// Індикатор малює фрактали зверху та знизу з 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)
Результат:
// Знаходимо код що відповідає за колір осцилятора
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