Отметка формирования объема на индикаторе (разворот тренда на основе объема) - Pine Script v4 - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть такой код индикатора громкости в 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 в конце индикатора). Эта формация появляется, когда мы сначала увеличили объем, а затем через некоторое время еще один всплеск объема (но этот второй всплеск ниже, чем первый). Кроме того, все объемы между первым и вторым пиками должны быть ниже, чем у любого из этих пиков. Подскажите, пожалуйста, как мне выделить его на индикаторе громкости, пожалуйста, или где я делаю ошибку?

Кстати. это очень сильный сигнал для разворота тренда :)

...