Для модификации индикатор должен быть написан на 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