-
Notifications
You must be signed in to change notification settings - Fork 1
/
macd.rs
35 lines (30 loc) · 1009 Bytes
/
macd.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//! Demonstrates how to initialize and use a Moving Average Convergence and Divergence.
use tatk::macd;
use tatk::test_data::TestData;
use tatk::traits::Next;
fn main() {
let short: usize = 8;
let long: usize = 10;
let signal: usize = 6;
let data: &[f64] = TestData::talib_small();
println!("Data (total): {:?}", data.len());
println!("Periods:");
println!("short: {}, long: {}, signal: {}", short, long, signal);
// Create the Moving Average Convergence and Divergence.
let mut indicator = match macd!(short, long, signal, &data[..data.len() - 1]) {
Ok(value) => value,
Err(error) => panic!("{}", error),
};
// Extract last data point.
let last_data = data[data.len() - 1];
println!(
"\nMoving Average Convergence and Divergence: {}, signal: {}",
indicator.value(),
indicator.signal_value()
);
println!(
"Adding {}. New MACD: {}",
last_data,
indicator.next(last_data).0
);
}