trading_toolkit/indicator/
force_index.rs1use crate::types::data::{BaseData, Candle};
2
3#[derive(Debug, Clone, Copy)]
4pub struct ForceIndex {
5 inner: f64,
6 epoch_time: u128,
7}
8
9impl BaseData for ForceIndex {
11 fn value(&self) -> f64 {
12 self.inner
13 }
14
15 fn weight(&self) -> u64 {
16 1
17 }
18
19 fn epoch_time(&self) -> u128 {
20 self.epoch_time
21 }
22}
23
24impl ForceIndex {
25 pub fn new<T>(prev: &T, curr: &T) -> Self
26 where
27 T: Candle,
28 {
29 Self {
30 inner: (curr.close_price() - prev.close_price()) * (curr.tot_exec_volume() as f64),
31 epoch_time: curr.epoch_time(),
32 }
33 }
34
35 pub fn inner(&self) -> f64 {
36 self.inner
37 }
38}