dmi(len, smooth, _id, _tf) {
        let id = this._tsid(_id, `dmi(${len},${smooth})`)
        let tfs = _tf || ''
        let high = this.env.shared[`high${tfs}`]
        let low = this.env.shared[`low${tfs}`]
        let up = this.change(high, 1, id+'1')[0]
        let down = this.neg(this.change(low, 1, id+'2'), id)[0]

        let plusDM = this.ts(100 * (
            this.na(up) ? NaN :
            (up > down && up > 0 ? up : 0)), id+'3', _tf
        )
        let minusDM = this.ts(100 * (
            this.na(down) ? NaN :
            (down > up && down > 0 ? down : 0)), id+'4', _tf
        )

        let trur = this.rma(this.tr(false, id, _tf), len, id+'5')
        let plus = this.div(
            this.rma(plusDM, len, id+'6'), trur, id+'8')
        let minus = this.div(
            this.rma(minusDM, len, id+'7'), trur, id+'9')
        let sum = this.add(plus, minus, id+'10')[0]
        let adx = this.rma(
            this.ts(100 * Math.abs(plus[0] - minus[0]) /
            (sum === 0 ? 1 : sum), id+'11', _tf),
            smooth, id+'12'
        )
        return [adx, plus, minus]
    }
Directional Movement Index ADX, +DI, -DI
@param {number} len - Length
@param {number} smooth - Smoothness
@return {TS} - New time-series