From d50ac9b12eeb8e3147e9868582841bc83961edb4 Mon Sep 17 00:00:00 2001 From: Sik Yoon Date: Sat, 25 May 2024 21:16:26 +0900 Subject: [PATCH] Update filtering --- src/strategy_team/future_strategy_long.rs | 55 ++++++++++----------- src/strategy_team/future_strategy_short.rs | 57 +++++++++++----------- 2 files changed, 55 insertions(+), 57 deletions(-) diff --git a/src/strategy_team/future_strategy_long.rs b/src/strategy_team/future_strategy_long.rs index c29a2fa..f9e4c22 100644 --- a/src/strategy_team/future_strategy_long.rs +++ b/src/strategy_team/future_strategy_long.rs @@ -31,34 +31,33 @@ pub async fn list_up_for_buy( } // current Tema(15) > current Tema(30) - // let mut keys_to_remove: HashSet = HashSet::new(); - // let tema_15 = tema(15, &alldata.rt_price_1m_vec, &filtered_data).await?; - // let tema_30 = tema(30, &alldata.rt_price_1m_vec, &filtered_data).await?; - // let server_epoch = get_server_epoch().await; - // for (symbol, values) in &mut filtered_data { - // let mut do_buy = false; - // let price_and_closetime = get_current_price_decimal(&symbol, &alldata.rt_price_1m_vec).await; - // if let (Some(tema15_vec), Some(tema30_vec), Some(current_info)) = (tema_15.get(symbol), tema_30.get(symbol), price_and_closetime) { - // if tema15_vec.len() > 10 - // && tema30_vec.len() > 10 - // && tema15_vec.last().unwrap().close_time == tema30_vec.last().unwrap().close_time - // && tema15_vec.last().unwrap().close_time > server_epoch - // && tema30_vec.last().unwrap().close_time > server_epoch - // { - // if tema15_vec[tema15_vec.len()-1].tema_value < tema15_vec[tema15_vec.len()-2].tema_value - // && tema15_vec[tema15_vec.len()-1].tema_value < tema15_vec[tema15_vec.len()-3].tema_value - // && tema15_vec[tema15_vec.len()-2].tema_value > tema15_vec[tema15_vec.len()-3].tema_value { - // values.closetime = current_info.1; - // values.current_price = current_info.0; - // do_buy = true; - // } - // } - // } - // if do_buy == false { - // keys_to_remove.insert(symbol.clone()); - // } - // } - // remove_keys(&mut filtered_data, keys_to_remove).await; + let mut keys_to_remove: HashSet = HashSet::new(); + let tema_15 = tema(15, &alldata.rt_price_30m_vec, &filtered_data).await?; + let tema_30 = tema(30, &alldata.rt_price_30m_vec, &filtered_data).await?; + let server_epoch = get_server_epoch().await; + for (symbol, values) in &mut filtered_data { + let mut do_buy = false; + let price_and_closetime = get_current_price_decimal(&symbol, &alldata.rt_price_1m_vec).await; + if let (Some(tema15_vec), Some(tema30_vec), Some(current_info)) = (tema_15.get(symbol), tema_30.get(symbol), price_and_closetime) { + if tema15_vec.len() > 10 + && tema30_vec.len() > 10 + && tema15_vec.last().unwrap().close_time == tema30_vec.last().unwrap().close_time + && tema15_vec.last().unwrap().close_time > server_epoch + && tema30_vec.last().unwrap().close_time > server_epoch + { + if tema15_vec[tema15_vec.len()-1].tema_value > tema30_vec[tema30_vec.len()-1].tema_value + && tema15_vec[tema15_vec.len()-2].tema_value > tema30_vec[tema30_vec.len()-2].tema_value + && tema15_vec[tema15_vec.len()-1].tema_value > tema15_vec[tema15_vec.len()-2].tema_value + { + do_buy = true; + } + } + } + if do_buy == false { + keys_to_remove.insert(symbol.clone()); + } + } + remove_keys(&mut filtered_data, keys_to_remove).await; // supertrend(ATR period 10, multiplier: 3.0, 30m close price) let mut keys_to_remove: HashSet = HashSet::new(); diff --git a/src/strategy_team/future_strategy_short.rs b/src/strategy_team/future_strategy_short.rs index b5995c8..dbc4d48 100644 --- a/src/strategy_team/future_strategy_short.rs +++ b/src/strategy_team/future_strategy_short.rs @@ -30,35 +30,34 @@ pub async fn list_up_for_buy( filtered_data.insert(symbol.clone(), FilteredDataValue::new()); } - // current Tema(15) > current Tema(30) - // let mut keys_to_remove: HashSet = HashSet::new(); - // let tema_15 = tema(15, &alldata.rt_price_1m_vec, &filtered_data).await?; - // let tema_30 = tema(30, &alldata.rt_price_1m_vec, &filtered_data).await?; - // let server_epoch = get_server_epoch().await; - // for (symbol, values) in &mut filtered_data { - // let mut do_buy = false; - // let price_and_closetime = get_current_price_decimal(&symbol, &alldata.rt_price_1m_vec).await; - // if let (Some(tema15_vec), Some(tema30_vec), Some(current_info)) = (tema_15.get(symbol), tema_30.get(symbol), price_and_closetime) { - // if tema15_vec.len() > 10 - // && tema30_vec.len() > 10 - // && tema15_vec.last().unwrap().close_time == tema30_vec.last().unwrap().close_time - // && tema15_vec.last().unwrap().close_time > server_epoch - // && tema30_vec.last().unwrap().close_time > server_epoch - // { - // if tema15_vec[tema15_vec.len()-1].tema_value > tema15_vec[tema15_vec.len()-2].tema_value - // && tema15_vec[tema15_vec.len()-1].tema_value > tema15_vec[tema15_vec.len()-3].tema_value - // && tema15_vec[tema15_vec.len()-2].tema_value < tema15_vec[tema15_vec.len()-3].tema_value { - // values.closetime = current_info.1; - // values.current_price = current_info.0; - // do_buy = true; - // } - // } - // } - // if do_buy == false { - // keys_to_remove.insert(symbol.clone()); - // } - // } - // remove_keys(&mut filtered_data, keys_to_remove).await; + // current Tema(15) < current Tema(30) + let mut keys_to_remove: HashSet = HashSet::new(); + let tema_15 = tema(15, &alldata.rt_price_30m_vec, &filtered_data).await?; + let tema_30 = tema(30, &alldata.rt_price_30m_vec, &filtered_data).await?; + let server_epoch = get_server_epoch().await; + for (symbol, values) in &mut filtered_data { + let mut do_buy = false; + let price_and_closetime = get_current_price_decimal(&symbol, &alldata.rt_price_1m_vec).await; + if let (Some(tema15_vec), Some(tema30_vec), Some(current_info)) = (tema_15.get(symbol), tema_30.get(symbol), price_and_closetime) { + if tema15_vec.len() > 10 + && tema30_vec.len() > 10 + && tema15_vec.last().unwrap().close_time == tema30_vec.last().unwrap().close_time + && tema15_vec.last().unwrap().close_time > server_epoch + && tema30_vec.last().unwrap().close_time > server_epoch + { + if tema15_vec[tema15_vec.len()-1].tema_value < tema30_vec[tema30_vec.len()-1].tema_value + && tema15_vec[tema15_vec.len()-2].tema_value < tema30_vec[tema30_vec.len()-2].tema_value + && tema15_vec[tema15_vec.len()-1].tema_value < tema15_vec[tema15_vec.len()-2].tema_value + { + do_buy = true; + } + } + } + if do_buy == false { + keys_to_remove.insert(symbol.clone()); + } + } + remove_keys(&mut filtered_data, keys_to_remove).await; // supertrend(ATR period 10, multiplier: 3.0, 30m close price) let mut keys_to_remove: HashSet = HashSet::new();