Сосна: Как установить цвет фона на основе условия - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь закрасить весь фон в условии (например, зеленом), если последнее закрытие выше закрывающих 50 баров, и красным, если оно ниже.
Я пробовал разные подходы и могу изменить цвет, но он не окрашивает весь фон, а только определенные области.

Мой сценарий:

bgcolor(close[50] >= open[1] ? color.red : color.green, transp=70)

разделение цветов на фоне

В этом случае весь фон должен быть красным, так как последнее закрытие находится ниже уровня закрытия 50 баров назад (обозначено желтой меткой).
Есть идеи, что мне нужно изменить?

1 Ответ

0 голосов
/ 11 апреля 2020

Это закрасит фон в зависимости от вашего состояния. Для этого используется очень широкая линия, и из-за этого индикатор занимает весь фон, поэтому некоторые функции графика, например инструмент измерения, нельзя использовать с Shift-Click, но он будет работать, если вы явно выберете его инструмент.

Вы можете поиграть с положением и шириной фона, если не хотите, чтобы он покрывал весь график.

Фон очень светлый. Если вы хотите изменить его яркость, вам нужно поиграть с прозрачностью в двух color.new() вызовах, так как им нельзя управлять с входа:

//@version=4
study("", "", true)

offsetCalc  = input(50,     "Close lookback", minval = 2)
offstBg     = input(100,    "Background: Horizontal Offset to its Center", minval = 0, step = 5)
lineWidth   = input(10000,  "Background: Width", minval = 0, step = 100)

condUp      = barstate.islast and close[1] > close[offsetCalc]
condDn      = barstate.islast and close[1] < close[offsetCalc]
c_lineColor = condUp ? color.new(color.green, 97) : condDn ? color.new(color.maroon, 97) : na

if barstate.islast
    var line bg = na
    line.delete(bg)
    bg := line.new(bar_index[offstBg], low - tr, bar_index[offstBg], high + tr, color = c_lineColor, extend = extend.both, width = lineWidth)
...