pub struct MovingAverageConvergenceDivergence { /* private fields */ }
Expand description
Moving average converge divergence (MACD).
The MACD 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 MACD series proper
- The “signal” or “average” series
- The “divergence” series which is the difference between the two
The MACD 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 MACD series itself.
§Formula
§Parameters
- fast_length - length for the fast EMA. Default is 12.
- slow_length - length for the slow EMA. Default is 26.
- signal_length - length for the signal EMA. Default is 9.
§Example
use quantaxis_rs::indicators::MovingAverageConvergenceDivergence as Macd;
use quantaxis_rs::Next;
let mut macd = Macd::new(3, 6, 4).unwrap();
assert_eq!(round(macd.next(2.0)), (0.0, 0.0, 0.0));
assert_eq!(round(macd.next(3.0)), (0.21, 0.09, 0.13));
assert_eq!(round(macd.next(4.2)), (0.52, 0.26, 0.26));
assert_eq!(round(macd.next(7.0)), (1.15, 0.62, 0.54));
assert_eq!(round(macd.next(6.7)), (1.15, 0.83, 0.32));
assert_eq!(round(macd.next(6.5)), (0.94, 0.87, 0.07));
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§
Source§impl Clone for MovingAverageConvergenceDivergence
impl Clone for MovingAverageConvergenceDivergence
Source§fn clone(&self) -> MovingAverageConvergenceDivergence
fn clone(&self) -> MovingAverageConvergenceDivergence
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Next<f64> for MovingAverageConvergenceDivergence
impl Next<f64> for MovingAverageConvergenceDivergence
Auto Trait Implementations§
impl Freeze for MovingAverageConvergenceDivergence
impl RefUnwindSafe for MovingAverageConvergenceDivergence
impl Send for MovingAverageConvergenceDivergence
impl Sync for MovingAverageConvergenceDivergence
impl Unpin for MovingAverageConvergenceDivergence
impl UnwindSafe for MovingAverageConvergenceDivergence
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more