Accelerator Oscillator (SDK Trading)

The Accelerator Oscillator (AC) is an technical indicator developed by Bill Williams that helps traders find reversal points or gauge changes in momentum. It serves just like MACD.

Accelerator Oscillator (SDK Trading)

registerIndicator("ac", "Accelerator Oscillator(v1.0)", function (context) {
    var dataInput = getDataInput(context, 0)
    var dataUp = getDataOutput(context, "up")
    var dataDown = getDataOutput(context, "down")
    var dataFSMA = getDataOutput(context, "fastSMA")
    var dataSSMA = getDataOutput(context, "slowSMA")
    var dataOutputMain = getDataOutput(context, "main")
    var dataOutputSignal = getDataOutput(context, "signal")

    var fSMA = 5
    var sSMA = 34
    var sgnlSMA = 5

    var calculatedLength = getCalculatedLength(context)
    var i = calculatedLength

    if (i == 0) {
        dataFSMA[0] = dataInput[0]
        dataSSMA[0] = dataInput[0]
        dataOutputMain[0] = 0
        i++
    } else if (i == 1) {
    } else {
        i--
    }

    sma(dataInput, dataFSMA, calculatedLength, fSMA)
    sma(dataInput, dataSSMA, calculatedLength, sSMA)

    while (i < dataInput.length) {
        dataOutputMain[i] = dataFSMA[i] - dataSSMA[i]
        i++
    }

    sma(dataOutputMain, dataOutputSignal, calculatedLength, sgnlSMA)

    i = calculatedLength

    if (i == 0) {
        i++
    } else if (i == 1) {
    } else {
        i--
    }

    var prev, curr

    while (i < dataInput.length) {
        prev = dataOutputMain[i - 1] - dataOutputSignal[i - 1]
        curr = dataOutputMain[i] - dataOutputSignal[i]

        if (prev <= curr) {
            dataUp[i] = curr
            dataDown[i] = 0
        } else {
            dataUp[i] = 0
            dataDown[i] = curr
        }

        i++
    }
},[],
[{
    name: DATA_NAME.HL2,
    index: 0
}],
[{
    name: "up",
    visible: true,
    renderType: RENDER_TYPE.HISTOGRAM,
    color: "#6CBA81"
},{
    name: "down",
    visible: true,
    renderType: RENDER_TYPE.HISTOGRAM,
    color: "#ECAE93"
},{
    name: "fastSMA",
    visible: false
},{
    name: "slowSMA",
    visible: false
},{
    name: "main",
    visible: false
},{
    name: "signal",
    visible: false
}],
WHERE_TO_RENDER.SEPARATE_WINDOW)