Skip to contents

percentage_price_oscillator() is a generic S3 function that preserves the input class: data.frame in, data.frame out; matrix in, matrix out.

percentage_price_oscillator() also accepts a double vector, in which case the indicator is calculated directly without column selection. When the result has a single column it is simplified to a double vector; otherwise the full n by k matrix is returned.

Handling of -values

Leading NAs are always produced for the initial lookback period where insufficient data is available. If the input itself contains NAs they are passed through to the underlying C routine, which can cause the entire output to be filled with NAs. Set na.ignore = TRUE to strip NAs before calculation and re-insert them at their original positions in the output.

Usage

percentage_price_oscillator(
  x,
  cols,
  fast = 7,
  slow = 14,
  ma = SMA(n = 10),
  na.ignore = FALSE,
  ...
)

Arguments

x

An OHLC-V series coercible to data.frame. Alternatively, x may also be supplied as a double vector.

cols

(formula). An optional 1-variable formula selecting columns from x via model.frame. Defaults to ~close.

fast

(integer). Period for the fast Moving Average (MA).

slow

(integer). Period for the slow Moving Average (MA).

ma

(list). The type of Moving Average (MA) used for the fast and slow MA. SMA by default.

na.ignore

(logical). A logical of length 1. FALSE by default. If TRUE, NAs in the input are stripped before calculation and re-inserted at their original positions in the output.

...

Additional parameters passed into model.frame

Value

An object of same class and length of x:

PPO

double

Author

Serkan Korkmaz

Examples

## load Bitcoin (BTC)
## series
data(BTC, package = "talib")

## calculate the indicator
## for Bitcoin (BTC)
output <- talib::percentage_price_oscillator(BTC)

## display the results
utils::tail(output)
#>                           PPO
#> 2024-12-26 01:00:00 -2.764318
#> 2024-12-27 01:00:00 -2.773590
#> 2024-12-28 01:00:00 -2.637198
#> 2024-12-29 01:00:00 -2.088181
#> 2024-12-30 01:00:00 -1.433072
#> 2024-12-31 01:00:00 -1.271595

## visualize the indicator
## with talib::chart()
##
## see ?talib::chart or ?talib::indicator
## for more details
{
 ## chart OHLC-V
 ## series with talib::chart()
 talib::chart(BTC)

 ## chart indicator
 ## with default values
 talib::indicator(
     talib::percentage_price_oscillator
 )
}