#![allow(dead_code)]
pub mod ta;
pub use ta::moving_average::ma;
enum OHLC {
Open(f64),
High(f64),
Low(f64),
Close(f64),
Volume(f64),
}
#[derive(Debug)]
pub struct Kline {
values: Vec<f64>,
start: Option<usize>,
}
impl Kline {
pub fn new(values: Vec<f64>) -> Kline {
Kline { values, start: None }
}
}
pub fn sma(v: Vec<f64>) -> f64{
let kline_data = Kline::new(v);
let sma = kline_data.rolling(5).mean();
sma
}
pub fn ema() {
todo!()
}
pub fn stoch() {
todo!()
}
#[test]
fn get_sma() {
let v = vec![1.0, 2.0, 3.0, 4.0, 5.0];
assert_eq!(sma(v), 3.0)
}
enum Decision {
ShortSell,
LongBuy,
Reduce,
}
enum Trend {
UpTrend,
DownTrend
}
trait TrendState {
fn get_240_ema_value() -> Trend {
todo!()
}
}
enum StochSignals {
StochUpperSignal{signal: u8},
StochMiddleSignal{signal: u8},
StochBottomSignal{signal: u8},
}
trait StochState {
fn stoch();
}
struct Stoch{
k_length: u8,
k_smoothing: u8,
d_smoothing: u8,
}
impl Stoch {
pub fn new(
k_length: u8,
k_smoothing: u8,
d_smoothing: u8,
) -> Stoch {
Stoch { k_length, k_smoothing, d_smoothing }
}
}