← К каталогу
Исходный код · ID 4711

Mini Chart

mini-chart.pine
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Мини-график — это индикатор для TradingView, который накладывает миниатюрный график последних свечей выбранного актива справа от основного графика. Он отрисовывает тела и фитили свечей с помощью линий, отображает текущую цену, название актива и значения минимумов/максимумов в виде меток. Индикатор поддерживает режим мультитаймфрейма, позволяя отображать данные другого таймфрейма (ограниченно 10 барами).

Пользователь может настраивать количество отображаемых баров, горизонтальное смещение, вертикальное положение (верх/середина/низ), а также ручное управление пространством сверху и снизу для визуального разделения нескольких экземпляров индикатора. Доступна настройка цветов для бычьих и медвежьих свечей, фитилей и текстовых меток.

Индикатор может скрывать мини-график при закрытом рынке базового актива, что удобно для различения бэктестинга и работы в реальном времени. Все отображаемые элементы управляются отдельными параметрами включения/отключения.

Настройки программы

НастройкаОписание
offset Горизонтальное смещение мини-графика в барах от текущего бара. Определяет, насколько вправо от основного графика будет сдвинут мини-график.
barsToShow Количество свечей, отображаемых в мини-графике. Определяет, сколько последних баров будет нарисовано.
location Вертикальное положение мини-графика относительно основного. Доступны варианты: top (верх), middle (середина), bottom (низ).
plotCurrentTicker Определяет, отображать ли мини-график для текущего тикера графика или для другого выбранного актива.
userInputTimeframe Включает режим мультитаймфрейма, в котором мини-график отображает данные выбранного таймфрейма (отображается до 10 баров).
userTimeframe Выбранный таймфрейм для отображения данных в мини-графике при включённом режиме мультитаймфрейма.
showLivePrice Включает или отключает отображение метки с текущей ценой закрытия последней свечи.
showLowest_Highest Включает или отключает отображение меток с минимальными и максимальными значениями за отображаемый период.
showAssetLabel Включает или отключает отображение метки с названием актива и таймфреймом на мини-графике.
candleBodyWidth Толщина линий тела свечей в пикселях. Доступны значения от 1 до 10.
wickColor Цвет линий фитилей свечей (тени свечей).
bullColor Цвет линий тела бычьих свечей (когда цена закрытия выше цены открытия).
bearColor Цвет линий тела медвежьих свечей (когда цена закрытия ниже цены открытия).
tickerColor Цвет текста метки с названием актива и таймфреймом.
priceLabelColor Цвет текстовых меток с ценами, минимумами и максимумами на мини-графике.
mktClosed_NoPlot При включении мини-график не отображается, если рынок базового актива закрыт. Полезно для различения режимов бэктеста и торговли в реальном времени.
manualSpacerSettings Включает ручной режим настройки пространства сверху и снизу для точного управления расположением и масштабом мини-графика.
spaceBelow_Multiplier Множитель для расширения пространства снизу мини-графика при включённых ручных настройках расположения. Чем больше значение, тем больше зазор под свечами.
spaceAbove_Multiplier Множитель для расширения пространства сверху мини-графика при включённых ручных настройках расположения. Чем больше значение, тем больше зазор над свечами.
Получить полный код

Поиск по коду файла

indicator('<{Мини-график}>', shorttitle = '<{Мини-график}>', overlay = true, scale = scale.none, max_labels_count = 400, max_lines_count = 500, format = format.inherit)

offset = input(17, 'Смещение (баров)')
barsToShow = input(14, 'Количество отображаемых баров')
location = input.string('middle', 'Вертикальное положение', options = ['top', 'middle', 'bottom'])
plotCurrentTicker = input(true, 'Отображать текущий тикер', group = 'Сравнение')
userSymbol = plotCurrentTicker ? syminfo.ticker : input.symbol('DXY', '..или другой актив', group = 'Сравнение')
userInputTimeframe = input(true, 'Выбрать таймфрейм (только 10 баров)', group = 'Мультитаймфрейм')
userTimeframe = input.timeframe('', 'Таймфрейм', group = 'Мультитаймфрейм')

showLivePrice = input(true, 'Показывать текущую цену', group = 'Метки/Цвет/Стиль')
showLowest_Highest = input(true, 'Показывать минимумы/максимумы', group = 'Метки/Цвет/Стиль')
showAssetLabel = input(true, 'Показывать название актива', group = 'Метки/Цвет/Стиль')
candleBodyWidth = input.int(7, 'Ширина тела свечи', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], group = 'Метки/Цвет/Стиль')
[srcOpen, srcHigh, srcLow, srcClose] = request.security(userSymbol, '', [open, high, low, close])

wickColor = input.color(#525252fa, 'Цвет фитиля', group = 'Метки/Цвет/Стиль')
bullColor = input.color(#00ffee, 'Цвет бычьей свечи', group = 'Метки/Цвет/Стиль')
bearColor = input.color(#ff0057, 'Цвет медвежьей свечи', group = 'Метки/Цвет/Стиль')
tickerColor = input.color(#ffeb3b, group = 'Метки/Цвет/Стиль')
priceLabelColor = input.color(#ffffff, group = 'Метки/Цвет/Стиль')
_color = srcClose <= srcOpen ? bearColor : bullColor
mktClosed_NoPlot = input(false, 'Не показывать мини-графики при закрытом рынке', group = 'Прочее') //Если false, может иногда не показывать последние бары на мини-графике (если базовый рынок закрыт, а мини-график еще открыт). Оставлено для бэктестинга.
liveMkt = mktClosed_NoPlot ? barstate.isrealtime : true
group_1 = 'Ручные настройки расположения/размера'
manualSpacerSettings = input(false, 'Использовать ручные настройки расположения', group = group_1)

lowest = userInputTimeframe ? request.security(userSymbol, userTimeframe, ta.lowest(low, barsToShow)) : request.security(userSymbol, '', ta.lowest(low, barsToShow))
highest = userInputTimeframe ? request.security(userSymbol, userTimeframe, ta.highest(high, barsToShow)) : request.security(userSymbol, '', ta.highest(high, barsToShow))

spaceBelow_Multiplier = input.float(4, step = 0.1, title = 'Сдвиг/Сжатие: Пространство снизу =', group = group_1)
spaceAbove_Multiplier = input.float(0.1, step = 0.1, title = 'Сдвиг/Сжатие: Пространство сверху =', group = group_1)
_range = highest - lowest
frameLow = manualSpacerSettings ? lowest - _range * spaceBelow_Multiplier : location == 'top' ? lowest - _range * 4 : location == 'middle' ? lowest - _range * 1.8 : location == 'bottom' ? lowest - _range * 0.1 : na
frameHigh = manualSpacerSettings ? highest + _range * spaceAbove_Multiplier : location == 'top' ? highest + _range * 0.1 : location == 'middle' ? highest + _range * 1.8 : location == 'bottom' ? highest + _range * 4 : na

var array<line> wickLine = array.new_line()
var array<line> bodyLine = array.new_line()
var array<line> frameLine = array.new_line()

if liveMkt

    array.unshift(wickLine, not userInputTimeframe ? line.new(bar_index + offset, srcLow, bar_index + offset, srcHigh, color = wickColor) : na)
    array.unshift(bodyLine, not userInputTimeframe ? line.new(bar_index + offset, srcOpen, bar_index + offset, srcClose, color = _color, width = candleBodyWidth) : na)
    array.unshift(frameLine, not userInputTimeframe ? line.new(bar_index + offset, frameLow, bar_index + offset, frameHigh, color = color.new(color.yellow, 100)) : na)

    if array.size(wickLine) > barsToShow
        line.delete(array.pop(wickLine))
    if array.size(bodyLine) > barsToShow
        line.delete(array.pop(bodyLine))
    if array.size(frameLine) > 2
        line.delete(array.pop(frameLine))

var array<label> assetLabelArray = array.new_label()
var array<label> livePriceLabelArray = array.new_label()
var array<label> lowestLabelArray = array.new_label()
var array<label> highestLabelArray = array.new_label()

pos = str.pos(userSymbol, ':') //Получаем часть тикера из строки (например, FX:EURUSD -> только EURUSD)
tkr = str.substring(userSymbol, pos + 1) //Получаем часть тикера из строки (например, FX:EURUSD -> только EURUSD)
_timeframeLabel = userInputTimeframe ? str.tostring(userTimeframe) : timeframe.period
_barsToShow = userInputTimeframe ? '10' : str.tostring(barsToShow)

if showAssetLabel
    array.unshift(assetLabelArray, label.new(bar_index + offset - 5, highest + _range / 6, tkr + ' : ' + _timeframeLabel, xloc = xloc.bar_index, style = label.style_none, textcolor = tickerColor, size = size.large, textalign = text.align_left))
if showLivePrice
    array.unshift(livePriceLabelArray, label.new(bar_index + offset + 2, srcClose, str.tostring(srcClose), xloc = xloc.bar_index, style = label.style_none, textcolor = priceLabelColor, size = size.small, textalign = text.align_left))
if showLowest_Highest
    array.unshift(lowestLabelArray, label.new(bar_index + offset - 5, lowest - _range / 12, str.tostring(_barsToShow) + ' бар минимум = ' + str.tostring(math.round_to_mintick(lowest)), xloc = xloc.bar_index, style = label.style_none, textcolor = priceLabelColor, size = size.small, textalign = text.align_left))
    array.unshift(highestLabelArray, label.new(bar_index + offset - 5, highest + _range / 12, str.tostring(_barsToShow) + ' бар максимум = ' + str.tostring(math.round_to_mintick(highest)), xloc = xloc.bar_index, style = label.style_none, textcolor = priceLabelColor, size = size.small, textalign = text.align_left))

if array.size(assetLabelArray) > 1
    label.delete(array.pop(assetLabelArray))
if array.size(livePriceLabelArray) > 1
    label.delete(array.pop(livePriceLabelArray))
if array.size(lowestLabelArray) > 1
    label.delete(array.pop(lowestLabelArray))
if array.size(highestLabelArray) > 1
    label.delete(array.pop(highestLabelArray))

[srcOpen_htf, srcHigh_htf, srcLow_htf, srcClose_htf] = request.security(userSymbol, userTimeframe, [open, high, low, close])
[srcOpen_htf1, srcHigh_htf1, srcLow_htf1, srcClose_htf1] = request.security(userSymbol, userTimeframe, [open[1], high[1], low[1], close[1]])
[srcOpen_htf2, srcHigh_htf2, srcLow_htf2, srcClose_htf2] = request.security(userSymbol, userTimeframe, [open[2], high[2], low[2], close[2]])
[srcOpen_htf3, srcHigh_htf3, srcLow_htf3, srcClose_htf3] = request.security(userSymbol, userTimeframe, [open[3], high[3], low[3], close[3]])
[srcOpen_htf4, srcHigh_htf4, srcLow_htf4, srcClose_htf4] = request.security(userSymbol, userTimeframe, [open[4], high[4], low[4], close[4]])
[srcOpen_htf5, srcHigh_htf5, srcLow_htf5, srcClose_htf5] = request.security(userSymbol, userTimeframe, [open[5], high[5], low[5], close[5]])
[srcOpen_htf6, s

Показано первые 50% кода (символов: 12014)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 201,40₽ ≈ $14.67