У меня есть такой код индикатора громкости в Pine Script:
//@version=4
study(title="Volume", shorttitle="Vol", format=format.volume)
showMA = input(true)
lengthMA = input(title="MA length", type=input.integer, defval=100)
lowvolratio = input(title="Low Volume ratio", type=input.float, defval=0.9)
highvolratio = input(title="High Volume ratio", type=input.float, defval=1.8)
ultravolratio = input(title="Ultra high Volume ratio", type=input.float, defval=3.0)
showLines = input(false)
averagevolumestatic = input(title="Average Volume level static", type=input.integer, defval=200)
highvolumestatic = input(title="High Volume level static", type=input.integer, defval=400)
ultravolumestatic = input(title="Ultra high Volume level static", type=input.integer, defval=600)
regression = input(false)
regressionperiod = input(20)
regressionvolume = volume - nz(volume[regressionperiod])
anglevolume = atan(regressionvolume/regressionperiod) // Radians
string vsavol = anglevolume < 0 ? "bearish" : "bullish"
bgcolor(regression == false ? na : vsavol == "bearish" ? color.red : color.green)
mavol = sma(volume, lengthMA)
bool lowvol = volume < mavol * lowvolratio ? true : false
bool highvol = volume > mavol * highvolratio ? true : false
bool ultravol = volume > mavol * ultravolratio ? true : false
palette = ultravol ? color.red : highvol ? color.orange : lowvol ? color.blue : color.green
plot(volume, color = palette, style=plot.style_columns, title="Volume")
plot(showMA ? sma(volume,lengthMA) : na, style=plot.style_line, color=color.white, title="Volume MA")
plot(showLines ? averagevolumestatic : na, style=plot.style_line, color=color.lime, title="Average")
plot(showLines ? highvolumestatic : na, style=plot.style_line, color=color.orange, title="High")
plot(showLines ? ultravolumestatic : na, style=plot.style_line, color=color.red, title="Ultra")
// WFO
int distance = na
bool wfoconf = na
int wfostart = na
int wfoend = na
if(highvol)
distance := bar_index - valuewhen(ultravol, bar_index, 1)
for i = 1 to distance-1
if volume[i] > volume
wfoconf := false
break
volume[i] < volume
wfoconf := true
continue
if (wfoconf)
wfoend := bar_index
wfostart := valuewhen(ultravol, bar_index, 1)
bgcolor(wfostart ? color.green : wfoend ? color.red : na)
Сейчас я борюсь с частью показа формирования разворота объема (раздел WFO в конце индикатора). Эта формация появляется, когда мы сначала увеличили объем, а затем через некоторое время еще один всплеск объема (но этот второй всплеск ниже, чем первый). Кроме того, все объемы между первым и вторым пиками должны быть ниже, чем у любого из этих пиков. Подскажите, пожалуйста, как мне выделить его на индикаторе громкости, пожалуйста, или где я делаю ошибку?
Кстати. это очень сильный сигнал для разворота тренда :)