Untitled

 avatar
unknown
plain_text
18 hours ago
1.4 kB
6
Indexable
//@version=6
indicator("Candle High/Low Digital Root", overlay=false)

f_floatToStringArr(float inputFloat) =>
    string iString = str.tostring(inputFloat, "#.##########")
    iString := str.replace_all(iString, ".", "")
    strArr = str.split(iString, "")
    strArr

// Function to calculate digital root
f_digitalRoot(_num) =>
    strArr = f_floatToStringArr(_num)
    int _sum = 0
    for [i, data] in strArr
        _sum += int(str.tonumber(data))

    while _sum > 9
        _tempArr = f_floatToStringArr(_sum)
        _sum := 0
        for [j, data] in _tempArr
            _sum += int(str.tonumber(data))
    _sum

// Calculate digital roots for high and low
highRoot = f_digitalRoot(high)
lowRoot = f_digitalRoot(low)

// Plot results
plot(highRoot, "High Digital Root", color.blue, 2)
plot(lowRoot, "Low Digital Root", color.red, 2)

var label hiLbl = na
var label loLbl = na
if barstate.islast
    if na(hiLbl)
        hiLbl := label.new(bar_index, highRoot, "", style=label.style_label_down, color=color.blue, textcolor=color.white)
        loLbl := label.new(bar_index, lowRoot,  "", style=label.style_label_up,   color=color.red,  textcolor=color.white)
    label.set_xy(hiLbl, bar_index, highRoot)
    label.set_xy(loLbl, bar_index, lowRoot)
    label.set_text(hiLbl, "High: " + str.tostring(highRoot))
    label.set_text(loLbl, "Low: "  + str.tostring(lowRoot))
Editor is loading...
Leave a Comment