Struct ta::indicators::PercentagePriceOscillator [−][src]
pub struct PercentagePriceOscillator { /* fields omitted */ }
Expand description
Percentage Price Oscillator (PPO).
The PPO indicator (or “oscillator”) is a collection of three time series calculated from historical price data, most often the closing price. These three series are:
- The PPO series proper
- The “signal” or “average” series
- The “divergence” series which is the difference between the two
The PPO series is the difference between a “fast” (short period) exponential moving average (EMA), and a “slow” (longer period) EMA of the price series. The average series is an EMA of the PPO series itself.
Formula
Parameters
- fast_period - period for the fast EMA. Default is 12.
- slow_period - period for the slow EMA. Default is 26.
- signal_period - period for the signal EMA. Default is 9.
Example
use ta::indicators::PercentagePriceOscillator as Ppo; use ta::Next; let mut ppo = Ppo::new(3, 6, 4).unwrap(); assert_eq!(round(ppo.next(2.0).into()), (0.0, 0.0, 0.0)); assert_eq!(round(ppo.next(3.0).into()), (9.38, 3.75, 5.63)); assert_eq!(round(ppo.next(4.2).into()), (18.26, 9.56, 8.71)); assert_eq!(round(ppo.next(7.0).into()), (28.62, 17.18, 11.44)); assert_eq!(round(ppo.next(6.7).into()), (24.01, 19.91, 4.09)); assert_eq!(round(ppo.next(6.5).into()), (17.84, 19.08, -1.24)); fn round(nums: (f64, f64, f64)) -> (f64, f64, f64) { let n0 = (nums.0 * 100.0).round() / 100.0; let n1 = (nums.1 * 100.0).round() / 100.0; let n2 = (nums.2 * 100.0).round() / 100.0; (n0, n1, n2) }
Implementations
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for PercentagePriceOscillator
impl Send for PercentagePriceOscillator
impl Sync for PercentagePriceOscillator
impl Unpin for PercentagePriceOscillator
impl UnwindSafe for PercentagePriceOscillator
Blanket Implementations
Mutably borrows from an owned value. Read more