Skip to content
Prev 398075 / 398502 Next

Fibonacci technical analysis using data from getSymbols and quantmod

Hi Andre,
I have used quantmod but not these functions. I dumped your code into
ChatGPT5 and it gave the following answer which will hopefully be of help:

You?re getting that error because AAPL is an *OHLCV xts with multiple
columns*. runMin() / runMax() only accept a *single column (univariate)
series*. Two solid ways to fix it:

library(quantmod)

Fibonacci <- function(x, n = 55) {
  x <- try.xts(x, error = as.matrix)
  x  <- Cl(x)                           # <- make it univariate

  lo <- runMin(x, n = n)
  hi <- runMax(x, n = n)

  high   <- 0.618 * (hi - lo) + lo
  middle <- 0.5   * (hi - lo) + lo
  low    <- 0.382 * (hi - lo) + lo

  res <- cbind(na.spline(lo), na.spline(hi),
               na.spline(high), na.spline(middle), na.spline(low))
  colnames(res) <- c("min","max","high","middle","low")
  reclass(res, x)
}

getSymbols("AAPL")
addFibonacci <- newTA(function(x) Fibonacci(x, n = 55), on = 1)
chartSeries(AAPL, TA = "addFibonacci()")

ALTERNATIVE FIX


library(quantmod)

Fibonacci <- function(x, n = 55) {
  x <- try.xts(x, error = as.matrix)

  lo <- runMin(Lo(x), n = n)            # rolling min of Lows
  hi <- runMax(Hi(x), n = n)            # rolling max of Highs

  high   <- 0.618 * (hi - lo) + lo
  middle <- 0.5   * (hi - lo) + lo
  low    <- 0.382 * (hi - lo) + lo

  res <- cbind(na.spline(lo), na.spline(hi),
               na.spline(high), na.spline(middle), na.spline(low))
  colnames(res) <- c("min","max","high","middle","low")
  reclass(res, x)
}

getSymbols("AAPL")
addFibonacci <- newTA(function(x) Fibonacci(x, n = 55), on = 1)
chartSeries(AAPL, TA = "addFibonacci()")


HTH,

Eric



On Sun, Aug 17, 2025 at 10:56?AM Andr? Luiz Tietb?hl Ramos <
andreltramos at gmail.com> wrote: