Теперь с помощью новых перегрузок для функции fill() можно создавать вертикальный градиент. Список представлен ниже:
fill(plot1, plot2, top_value, bottom_value, top_color, bottom_color) fill(hline1, hline2, top_value, bottom_value, top_color, bottom_color)
Все параметры в новой перегрузке принимают серийные аргументы. Перегрузка позволяет создать вертикальный градиент между `top_color` и `bottom_color` в промежутке между `top_value` и `bottom_value`. Графики или прямые линии, идентификаторы которых используются в первых двух аргументах, действуют как маска над градиентом, т.е. определяет, какая часть градиента видна.
Ниже мы преображаем старый MACD с помощью двух вертикальных градиентов, один из которых используем для заполнения пространства между двумя скользящими средними, а другой представляется в виде гистограммы:
//@version=5 indicator("MACD") [macd, signal, hist] = ta.macd(close, 12, 26, 9) // Histogram float maxHist = ta.highest(hist, 100) float minHist = ta.lowest(hist, 100) bool histBull = hist > 0 color topHistColor = histBull ? color.new(color.green, 90) : color.red color botHistColor = histBull ? color.green : color.new(color.red, 90) float topHistValue = histBull ? maxHist : 0 float botHistValue = histBull ? 0 : minHist histPlot = plot(hist, "Histogram", color(na)) centerPlot = plot(0, "Middle", color(na)) fill(histPlot, centerPlot, topHistValue, botHistValue, topHistColor, botHistColor) // Averages float maxLine = ta.highest(math.max(macd, signal), 100) float minLine = ta.lowest(math.min(macd, signal), 100) bool lineBull = macd > signal color topLineColor = lineBull ? color.new(color.lime, 90) : color.fuchsia color botLineColor = lineBull ? color.lime : color.new(color.fuchsia, 90) float topLineValue = lineBull ? maxLine : maxLine float botLineValue = lineBull ? minLine : minLine macdPlot = plot(macd, "MACD", color.gray, 1) signalPlot = plot(signal, "Signal", color.silver, 1) fill(macdPlot, signalPlot, topLineValue, botLineValue, topLineColor, botLineColor)
В следующем примере мы создаем рисунок леса, используя один градиент в качестве фона, а при помощи второго рисуем деревья на основе RSI-плота:
//@version=5 indicator("Gradient Fill: Night in the Pine forest") // Sky skyTopColor = input.color(color.rgb(144, 191, 249, 1)) skyBotColor = input.color(color.rgb(251, 192, 45, 1)) skyPlot = plot(100, color = skyTopColor) groundPlot = plot(0, color = color.black) fill(skyPlot, groundPlot, 100, 0, skyTopColor, skyBotColor) // Trees crownsVal = ta.rsi(close, 20) treesPlot = plot(crownsVal, color = color.rgb(6, 126, 116)) fill(treesPlot, groundPlot, crownsVal, 0, color.rgb(6, 126, 116), color.black)
Примеры практического применения новой функции можно увидеть в нашем публичном репозитории скриптов, которые опубликованы пользователями из сообщества PineCoders.
Delta Volume Channels индикатор от LucF
RSI — colour fill индикатор от Fikira
Webby’s RSI индикатор от JohnMuchow
Если вы хотите узнавать об обновлениях Pine, следите за разделом Release notes. Учётная запись PineCoders также транслирует новости об обновлениях в своем Telegram-канале Squawk Box и в публичном чате Pine Script® Q&A на TradingView.
Мы надеемся, вы найдёте новые функции полезными. Продолжайте делиться с нами своими отзывами — именно они помогают нам делать TradingView лучше.