#![allow(unused, dead_code)]
use super::super::*;
impl Kline {
pub fn rolling(&self, window: usize) -> Kline {
let data = self.values.clone();
let start = &data.len() - window;
let mut new_vec = vec![];
for i in start..data.len() {
if start <= data.len() {
new_vec.push(data[i]);
}
}
Kline { values: new_vec, start: Some(start) }
}
pub fn mean(&self) -> f64 {
let acc: f64 = self.values.iter().sum();
let res = acc/(self.values.len() as f64);
println!("Acc {}", acc);
res
}
}
impl Iterator for Kline {
type Item = f64;
fn next(&mut self) -> Option<Self::Item> {
let mut start = 0;
if start <= self.values.len() {
println!("{}", self.values[start]);
return Some(self.values[start]);
} else {
return None;
}
start += 1;
}
}
#[test]
fn test_values() {
let v = vec![1_f64,2_f64,3_f64,4_f64,5_f64];
let mut sma_field = Kline::new(v);
assert_eq!(sma_field.next(), Some(1_f64));
assert_eq!(sma_field.next(), Some(2_f64));
}