From b587809813ef474914af08b3e8e899deb24534dd Mon Sep 17 00:00:00 2001 From: Sik Yoon Date: Sun, 24 Mar 2024 06:18:54 +0900 Subject: [PATCH] Add new filtering --- src/strategy_team/strategy_006.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/strategy_team/strategy_006.rs b/src/strategy_team/strategy_006.rs index f649057..6644b4a 100644 --- a/src/strategy_team/strategy_006.rs +++ b/src/strategy_team/strategy_006.rs @@ -23,7 +23,7 @@ pub async fn list_up_for_buy( for symbol in &alldata.valid_symbol_vec { filtered_data.insert(symbol.clone(), FilteredDataValue::new()); } - + // 2nd filtering: 1d MACD (3, 7, 30) cross let mut keys_to_remove: HashSet = HashSet::new(); let macd_1d_map = ema_macd(3, 7, 30, &alldata.rt_price_1d_vec, &filtered_data).await?; @@ -51,6 +51,29 @@ pub async fn list_up_for_buy( } remove_keys(&mut filtered_data, keys_to_remove).await; + // Dema(5) > Tema(30) + let mut keys_to_remove: HashSet = HashSet::new(); + let dema_5 = dema(5, &alldata.rt_price_1d_vec, &filtered_data).await?; + let tema_30 = tema(30, &alldata.rt_price_1d_vec, &filtered_data).await?; + let server_epoch = get_server_epoch().await; + for (symbol, values) in &mut filtered_data { + if let (Some(dema_vec), Some(tema_vec)) = (dema_5.get(symbol), tema_30.get(symbol)) { + if dema_vec.last().unwrap().close_time == tema_vec.last().unwrap().close_time && + dema_vec.last().unwrap().close_time > server_epoch && + tema_vec.last().unwrap().close_time > server_epoch { + if dema_vec.last().unwrap().dema_value > tema_vec.last().unwrap().tema_value { + } else { + keys_to_remove.insert(symbol.clone()); + } + } else { + keys_to_remove.insert(symbol.clone()); + } + } else { + keys_to_remove.insert(symbol.clone()); + } + } + remove_keys(&mut filtered_data, keys_to_remove).await; + // 1d StochRSI (RSI_len: 30, StochRSI_len: 30, K: 3, D: 3) K_prev < 10, K_prev < K_current let mut keys_to_remove: HashSet = HashSet::new(); let stoch_rsis = stoch_rsi(30, 30, 3, 3, &alldata.rt_price_1d_vec, &filtered_data).await?;