Что не так с моим опорным индексатором (v4) - PullRequest
0 голосов
/ 17 апреля 2020

Я разработал новый индикатор разворота. Мне нужно, чтобы метка каждого пивота была справа и указывала временные рамки пивота (ежедневно, еженедельно, ежемесячно). Мне не нужно сохранять стержни предыдущих периодов.

Что не так с моим кодом? В течение 1 минуты метки располагаются хорошо, но линии не появляются. Если я загружаю больше данных в график и появляется начало дня, линия окончательно рисуется.

//@version=4

study(title="MBBL Pivot Points Standard", shorttitle="Pivot", overlay=true)

f_resInMinutes() => 
    _resInMinutes = timeframe.multiplier * (
      timeframe.isseconds ? 1. / 60. :
      timeframe.isminutes ? 1.       :
      timeframe.isdaily   ? 1440.    :
      timeframe.isweekly  ? 10080.   :
      timeframe.ismonthly ? 43800.   : na)

f_tfResInMinutes(_res) =>
    security(syminfo.tickerid, _res, f_resInMinutes())

tf = input(title="Resolution", type=input.string, defval="D", options=["D", "W", "M"])

var tfLabel = tf == "D" ? "J" : tf == "W" ? "H" : "M"
var bool chartResolutionLessThanPivotResolution = (f_resInMinutes() < f_tfResInMinutes(tf))

prevClose = security(syminfo.tickerid, tf, close[1], lookahead=barmerge.lookahead_on)
prevOpen = security(syminfo.tickerid, tf, open[1], lookahead=barmerge.lookahead_on)
prevHigh = security(syminfo.tickerid, tf, high[1], lookahead=barmerge.lookahead_on)
prevLow = security(syminfo.tickerid, tf, low[1], lookahead=barmerge.lookahead_on)

pivotLevel = (prevHigh + prevLow + prevClose) / 3
s1Level = (2 * pivotLevel) - prevHigh
s2Level = pivotLevel - (prevHigh - prevLow)
s3Level = prevLow - (2 * (prevHigh - pivotLevel))
r1Level = (2 * pivotLevel) - prevLow
r2Level = pivotLevel + (prevHigh - prevLow)
r3Level = prevHigh + (2 * (pivotLevel - prevLow))

var line pivotLine = na
var line s1Line = na
var line s2Line = na
var line s3Line = na
var line r1Line = na
var line r2Line = na
var line r3Line = na

var label pivotLabel = na
var label s1Label = na
var label s2Label = na
var label s3Label = na
var label r1Label = na
var label r2Label = na
var label r3Label = na

if(chartResolutionLessThanPivotResolution)

    if(pivotLevel != pivotLevel[1])

        line.delete(pivotLine)
        line.delete(s1Line)
        line.delete(s2Line)
        line.delete(s3Line)
        line.delete(r1Line)
        line.delete(r2Line)
        line.delete(r3Line)

        pivotLine := line.new(bar_index, pivotLevel, bar_index, pivotLevel, color=color.gray, style=line.style_dashed)
        s1Line := line.new(bar_index, s1Level, bar_index, s1Level, color=color.green, style=line.style_dashed)
        s2Line := line.new(bar_index, s2Level, bar_index, s2Level, color=color.green, style=line.style_dashed)
        s3Line := line.new(bar_index, s3Level, bar_index, s3Level, color=color.green, style=line.style_dashed)
        r1Line := line.new(bar_index, r1Level, bar_index, r1Level, color=color.red, style=line.style_dashed)
        r2Line := line.new(bar_index, r2Level, bar_index, r2Level, color=color.red, style=line.style_dashed)
        r3Line := line.new(bar_index, r3Level, bar_index, r3Level, color=color.red, style=line.style_dashed)

        label.delete(pivotLabel)
        label.delete(s1Label)
        label.delete(s2Label)
        label.delete(s3Label)
        label.delete(r1Label)
        label.delete(r2Label)
        label.delete(r3Label)

        pivotLabel := label.new(bar_index, pivotLevel, "P" + tfLabel, style=label.style_none, textcolor=color.gray)
        s1Label := label.new(bar_index, s1Level, "S1" + tfLabel, style=label.style_none, textcolor=color.green)
        s2Label := label.new(bar_index, s2Level, "S2" + tfLabel, style=label.style_none, textcolor=color.green)
        s3Label := label.new(bar_index, s3Level, "S3" + tfLabel, style=label.style_none, textcolor=color.green)
        r1Label := label.new(bar_index, r1Level, "R1" + tfLabel, style=label.style_none, textcolor=color.red)
        r2Label := label.new(bar_index, r2Level, "R2" + tfLabel, style=label.style_none, textcolor=color.red)
        r3Label := label.new(bar_index, r3Level, "R3" + tfLabel, style=label.style_none, textcolor=color.red)

    if((pivotLevel == pivotLevel[1]) and (line.get_x2(pivotLine) != bar_index))

        line.set_x2(pivotLine, bar_index)
        line.set_x2(s1Line, bar_index)
        line.set_x2(s2Line, bar_index)
        line.set_x2(s3Line, bar_index)
        line.set_x2(r1Line, bar_index)
        line.set_x2(r2Line, bar_index)
        line.set_x2(r3Line, bar_index)

        label.set_x(pivotLabel, bar_index)
        label.set_x(s1Label, bar_index)
        label.set_x(s2Label, bar_index)
        label.set_x(s3Label, bar_index)
        label.set_x(r1Label, bar_index)
        label.set_x(r2Label, bar_index)
        label.set_x(r3Label, bar_index)

...