-
Notifications
You must be signed in to change notification settings - Fork 1
/
bbands.rs
40 lines (33 loc) · 1.09 KB
/
bbands.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
36
37
38
39
40
//! Demonstrates how to initialize and use Bollinger Bands (BB).
use tatk::ema;
use tatk::indicators::BollingerBands;
use tatk::test_data::TestData;
use tatk::traits::Next;
fn main() {
let period: usize = 10;
let data: &[f64] = TestData::talib_small();
println!("Data (total): {:?}", data.len());
println!("Period: {}", period);
// Use EMA as the line instead of the default SMA.
let ema_indicator = match ema!(period, &data[..data.len() - 1]) {
Ok(value) => value,
Err(error) => panic!("{}", error),
};
let mut indicator = match BollingerBands::with_line(ema_indicator, 2.0) {
Ok(value) => value,
Err(error) => panic!("{}", error),
};
// Extract last data point.
let last_data = data[data.len() - 1];
println!(
"\nBollinger Band (BB): {}, lower: {}, upper: {}",
indicator.value(),
indicator.lower(),
indicator.upper()
);
let next = indicator.next(last_data);
println!(
"Adding {}. New BBands value: {}, lower: {}, upper: {}",
last_data, next.1, next.0, next.2
);
}