The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

version 0.9-5

version 0.9-4

bug-fixes

version 0.9-3

This version brings many changes to the R package. The entire code generating backend have been rewritten so it closely follows the upstream naming of parameters and it uses X-macros so it also installs way fastert than before - but it also means that there is alot of breaking changes. The update is a big leap towards a stable release.

improvements

talib::lookback(
  FUN        = talib::SMA,
  timePeriod = 10,
  x          = talib::BTC
)
#> [1] 9

The function returns the required lookback for calculating the indicator. A lookback of 0 means the indicator is computable from the first observation (talib::balance_of_power(), for example). Its use-case is customized control-flows for downstream wrappers and/or packages that declares dependency on {talib}.

tail(
  output <- talib::BBANDS(
    talib::SMA(
      talib::RSI(
        talib::GOOGL
      )
    )
  )
)
#>            UpperBand MiddleBand LowerBand
#> 2021-12-22  57.50571   54.51537  51.52503
#> 2021-12-23  57.26401   54.23193  51.19985
#> 2021-12-27  57.02005   53.97461  50.92918
#> 2021-12-28  56.75847   53.71577  50.67306
#> 2021-12-29  56.55065   53.47299  50.39534
#> 2021-12-30  56.40837   53.25097  50.09356

stopifnot(
  nrow(talib::GOOGL) == nrow(output)
)

attr(
  output,
  "lookback"
)
#> [1] 62

The chain carries RSI (14), SMA (29) and BBANDS (19)—attr(output, "lookback") is their sum, the leading-NA head of the final series. The per-indicator lookback remains available via talib::lookback().

library(xts)

tail(
  x <- talib::bollinger_bands(
    talib::GOOGL
  )
)
#>            UpperBand MiddleBand LowerBand
#> 2021-12-22  149.1432   144.4920  139.8408
#> 2021-12-23  149.2513   144.5318  139.8124
#> 2021-12-27  149.6263   144.8180  140.0097
#> 2021-12-28  149.7444   144.8758  140.0072
#> 2021-12-29  149.8398   145.1137  140.3876
#> 2021-12-30  149.7308   145.3711  141.0115

class(x)
#> [1] "xts" "zoo"
talib::variable_moving_average_period(
  x = 1:10,
  periods = c(1, 1, 1, 2, 2, 2, 3, 4, 4, 4),
  minimumPeriod = 2,
  maximumPeriod = 4
)

#> [1]  NA  NA  NA 3.5 4.5 5.5 6.0 6.5 7.5 8.5
#> attr(,"lookback")
talib::average_deviation(
x = 1:10,
periods = c(1, 1, 1, 2, 2, 2, 3, 4, 4, 4),
timePeriod = 5
)
#>  [1]  NA  NA  NA  NA 1.2 1.2 1.2 1.2 1.2 1.2
#> attr(,"lookback")
#> [1] 4
tail(
  talib::CMF(
    x = talib::GOOGL,
    timePeriod = 20L,
    cols = ~ high + low + close + volume
  )
)
#>                   CMF
#> 2021-12-22 0.08511277
#> 2021-12-23 0.03979116
#> 2021-12-27 0.08378773
#> 2021-12-28 0.05341346
#> 2021-12-29 0.12197905
#> 2021-12-30 0.16362414
tail(
  talib::CMOU(
    x = talib::GOOGL,
    timePeriod = 20L,
    cols = ~close
  )
)
#>                 CMOU
#> 2021-12-22  1.650705
#> 2021-12-23  2.068290
#> 2021-12-27 16.093739
#> 2021-12-28  3.458882
#> 2021-12-29 15.946284
#> 2021-12-30 17.488048
tail(
  talib::HMA(
    talib::GOOGL,
    timePeriod = 20L,
    cols = ~open
  )
)
#>                 HMA
#> 2021-12-22 143.4272
#> 2021-12-23 143.1059
#> 2021-12-27 143.3396
#> 2021-12-28 144.0303
#> 2021-12-29 144.8070
#> 2021-12-30 145.5167
tail(
  talib::NVI(
    talib::GOOGL,
    cols = ~ close + volume
  )
)
#>                 NVI
#> 2021-12-22 3087.244
#> 2021-12-23 3087.244
#> 2021-12-27 3108.047
#> 2021-12-28 3108.047
#> 2021-12-29 3107.369
#> 2021-12-30 3097.739
tail(
  talib::PVI(
    talib::GOOGL,
    cols = ~ close + volume
  )
)
#>                 PVI
#> 2021-12-22 899.3401
#> 2021-12-23 902.4205
#> 2021-12-27 902.4205
#> 2021-12-28 894.9800
#> 2021-12-29 894.9800
#> 2021-12-30 894.9800
tail(
  talib::VWMA(
    x = talib::GOOGL,
    timePeriod = 20L,
    cols = ~ close + volume
  )
)
#>                VWMA
#> 2021-12-22 144.1797
#> 2021-12-23 144.2380
#> 2021-12-27 144.4321
#> 2021-12-28 144.4406
#> 2021-12-29 144.6905
#> 2021-12-30 144.9503
talib::bollinger_bands()
talib::BBANDS()
talib::bollingerBands()

Each UPPERCASE and camelCase function is an alias of its underlying snake_case function, so the functions behaves the same.

breaking changes

indicator(
  x,          ## unchanged
  cols,       ## unchanged
  ## additional/optional TA-Lib parameters
  ## are now camelCase mined upstream
  timePeriod, ## was 'n' before
  fooBar,     ## was 'foo_bar' or 'foobar' before
  fooBaz,     ## was 'foo_baz' or 'foobaz' before
  na.bridge = FALSE ## unchanged
)

This has the benefit of being transparent when comparing or reading the source code.

talib::bollinger_bands(
        talib::BTC,
        timePeriod = 20,
        maType = talib::EMA()
)

Prior to this update, the correct call was:

talib::bollinger_bands(
        talib::BTC,
    ma = talib::EMA(n = 20)
)

While the above function call is aestethically pleasing, it did introduce some ambigiuites in other calls. See, for example, APO() (v0.9.2) below:

absolute_price_oscillator(
  x,
  cols,
  fast = 12,
  slow = 26,
  ma = SMA(n = 9),
  na.bridge = FALSE,
  ...
)

In this specific case the function has three different n - the underlying function were discarding n = 9 while keeping the MAType. The new call is given as:

absolute_price_oscillator(
    x,
    cols,
    fastPeriod = 12,
    slowPeriod = 26,
    maType = 0,
    na.bridge = FALSE,
    ...
) 

In this call the role of each argument is should be clearer than before.

VWMA.numeric(x, cols, timePeriod, na.bridge = FALSE, volume, ...)

To avoid breaking the S3 signature. However, given the importance of the volume-argument and the fact that cols is rarely used, the signature has been changed to accommodate future additions of MAs which take additional series. The new signature is as follows:

foo(x, [series], timePeriod, [optional], cols, na.bridge = FALSE, ...)

Additional series (the volume) lead directly after x, while additional optional parameters keep their place after timePeriod. In the case of VWMA this becomes:

VWMA(
    x,
    volume,
    timePeriod = 30,
    cols,
    na.bridge = FALSE,
    ...
)

And for the remaining MAs:

foo(
    x,
    timePeriod = 30,
    cols,
    na.bridge = FALSE,
    ...
)

MAs with additional optional parameters retain them after timePeriod, e.g. MAMA(x, timePeriod, fastLimit, slowLimit, cols, na.bridge, ...) and T3(x, timePeriod, volumeFactor, cols, na.bridge, ...).

The volume-argument is not required when x carries a volume column: VWMA(x) selects it via the default formula ~close + volume as before. An explicitly passed vector takes precedence, in which case only the close-column is required:

## volume from the 'volume'-column of x
VWMA(x)

## explicitly passed volume; only 'close' required
VWMA(x, volume = my_volume)

## fully positional on vectors
VWMA(price, volume, 20)

NOTE: passing cols positionally as the second argument no longer works for the MAs—it has to be passed by name, ie. SMA(x, cols = ~open).

bug-fixes

version 0.9-2

improvements

version 0.9-1

improvements

bug-fixes

version 0.9-0

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.