Super Trend Calculation 1st Row Issue

Since Super Trend Calculation depends on the (n-1)th row, how to do it for the 0th row

Please find my js code below.

  var calculateSTR = function(result, period) {
    var multiplier = 3;

    var csv_arr = [];
    csv_arr.push("Date, Open, High, Low, Close, ATR , base up , base low , cur up, cur low, st , action");
    var open = [];
    var close = [];
    var high = [];
    var low = [];

    _.map(result, function(item) {
        open.push(item.open);
        close.push(item.close);
        high.push(item.high);
        low.push(item.low);
    });

    var atr_result = ATR.calculate({ high: high, low: low, close: close, period: period });
    /**
     * 
     * Upper = ((high + low / 2) + Multiplier * ATR …Only if price < upper

Lower = ((high + low / 2) – Multiplier * ATR …Only if price > lower
     * 
     * 
     * 
     * 
     * BASIC UPPERBAND = (HIGH + LOW) / 2 + Multiplier * ATR
BASIC LOWERBAND = (HIGH + LOW) / 2 - Multiplier * ATR

FINAL UPPERBAND = IF( (Current BASICUPPERBAND < Previous FINAL UPPERBAND) and (Previous Close > Previous FINAL UPPERBAND)) THEN (Current BASIC UPPERBAND) ELSE Previous FINALUPPERBAND)

FINAL LOWERBAND = IF( (Current BASIC LOWERBAND > Previous FINAL LOWERBAND) and (Previous Close < Previous FINAL LOWERBAND)) THEN (Current BASIC LOWERBAND) ELSE Previous FINAL LOWERBAND)

SUPERTREND = IF(Current Close <= Current FINAL UPPERBAND ) THEN Current FINAL UPPERBAND ELSE Current FINAL LOWERBAND
     */
    //console.log(atr_result);
    // console.log(atr_result);

    var data_arr = _.last(result, atr_result.length);
    var updown_arr = [];
    var previous_fup = 0;
    var previous_flow = 0;
    var pre_close = result[period - 1].close;
    console.log("Pre close:" + pre_close);
    for (var i = 0; i < atr_result.length; i++) {
        var tdata = result[i + period];
        var atr = atr_result[i];
        var high = tdata.high;
        var low = tdata.low;
        var bup = (((high + low) / 2) + (multiplier * atr));
        var blow = (((high + low) / 2) - (multiplier * atr));
        //console.log(`bup: ${bup} blow:${blow}`);
        var fup = 0;
        var flow = 0;
        if (i !== 0) {
            var pdata = result[i - 1];
            previous_fup = pdata.fup;
            previous_flow = pdata.flow;
            pre_close = pdata.close;
        }
        //FINAL UPPERBAND = IF( (Current BASICUPPERBAND < Previous FINAL UPPERBAND) and (Previous Close > Previous FINAL UPPERBAND)) THEN (Current BASIC UPPERBAND) ELSE Previous FINALUPPERBAND)

        if (bup < previous_fup && pre_close > previous_fup) {
            fup = bup;
        } else {
            fup = previous_fup;
        }
        fup = fup === 0 ? bup : fup;
        //FINAL LOWERBAND = IF( (Current BASIC LOWERBAND > Previous FINAL LOWERBAND) and (Previous Close < Previous FINAL LOWERBAND)) THEN (Current BASIC LOWERBAND) ELSE Previous FINAL LOWERBAND)

        if (blow > previous_flow && pre_close < previous_flow) {
            flow = blow;
        } else {
            flow = previous_flow;
        }
        flow = flow === 0 ? blow : flow;
        //console.log(`fup:${fup} flow:${flow}`);
        tdata.fup = fup;
        tdata.flow = flow;

        var st = tdata.close <= fup ? fup : flow;
        var result_action;
        if (tdata.close < st) {
            result_action = "Sell";
        } else {
            result_action = "Buy";
        }
        //console.log(result_action+" :: " + tdata.date);

        csv_arr.push([tdata.date, tdata.open, tdata.high, tdata.low, tdata.close, atr, bup, blow, fup, flow, st, result_action].join(','))
    }
    console.log(csv_arr.join("\n"));
};

Hey,

Did you get your answer?
did you managed to fix this?
I’ve come across same situation and need help.
Please send me updated code on [email protected]

Thanks,
Ram