From 725bcec59c2c9dce6c292c325eb956f379f5ffa9 Mon Sep 17 00:00:00 2001 From: Sik Yoon Date: Tue, 12 Mar 2024 13:03:25 +0900 Subject: [PATCH] Fix bound condition --- src/value_estimation_team/indicators/adx.rs | 40 +++++++++++---------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/value_estimation_team/indicators/adx.rs b/src/value_estimation_team/indicators/adx.rs index ddb0944..0309ca6 100644 --- a/src/value_estimation_team/indicators/adx.rs +++ b/src/value_estimation_team/indicators/adx.rs @@ -99,28 +99,30 @@ filtered_symbols: &HashMap,) -> Result = Vec::new(); - let mut adx_calculated = 0.0; - for element in partial_vec1 { - adx_calculated += element.adx; - } - adx_calculated /= adx_len as f64; - - let adx_data = AdxData { adx: adx_calculated, close_time: partial_vec1.last().unwrap().close_time }; - smoothed_adx_vec.push(adx_data); - - let alpha: f64 = 1.0 /(adx_len as f64); - for element in partial_vec2 { - adx_calculated = alpha * element.adx + (1.0 - alpha) * adx_calculated; - let adx_data = AdxData { adx: 100.0 * adx_calculated, close_time: element.close_time }; + if let (Some(partial_vec1), Some(partial_vec2)) = (initial_adx_vec.get(..adx_len), initial_adx_vec.get(adx_len..)) { + // partial_vec1 is for calculation of initial value + // partial_vec2 is for calculation of the rest + let mut smoothed_adx_vec: Vec = Vec::new(); + let mut adx_calculated = 0.0; + for element in partial_vec1 { + adx_calculated += element.adx; + } + adx_calculated /= adx_len as f64; + + let adx_data = AdxData { adx: adx_calculated, close_time: partial_vec1.last().unwrap().close_time }; smoothed_adx_vec.push(adx_data); - } + + let alpha: f64 = 1.0 /(adx_len as f64); + for element in partial_vec2 { + adx_calculated = alpha * element.adx + (1.0 - alpha) * adx_calculated; + let adx_data = AdxData { adx: 100.0 * adx_calculated, close_time: element.close_time }; + smoothed_adx_vec.push(adx_data); + } - let mut adx_vec_arc_lock = adx_vec_arc_c.lock().await; - adx_vec_arc_lock.insert(symbol.clone(), smoothed_adx_vec.clone()); + let mut adx_vec_arc_lock = adx_vec_arc_c.lock().await; + adx_vec_arc_lock.insert(symbol.clone(), smoothed_adx_vec.clone()); + } } } }));