diff --git a/src/strategy_team/strategy_006.rs b/src/strategy_team/strategy_006.rs index 6644b4a..8294a42 100644 --- a/src/strategy_team/strategy_006.rs +++ b/src/strategy_team/strategy_006.rs @@ -51,29 +51,6 @@ 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?; @@ -97,6 +74,27 @@ pub async fn list_up_for_buy( } remove_keys(&mut filtered_data, keys_to_remove).await; + // 2nd filtering: supertrend(ATR period 30, multiplier: 2.0, 1d close price) UP area + let mut keys_to_remove: HashSet = HashSet::new(); + let server_epoch = get_server_epoch().await; + let supertrend_1d_map = supertrend(30, 2.0, true, &alldata.rt_price_1d_vec, &filtered_data).await?; + for (symbol, values) in &mut filtered_data { + if let (Some(supertrend_vec), Some(rt_price_vec)) = (supertrend_1d_map.get(symbol), alldata.rt_price_1d_vec.get(symbol)) { + if supertrend_vec.last().unwrap().close_time == rt_price_vec.last().unwrap().close_time && + rt_price_vec.last().unwrap().close_time > server_epoch { + if supertrend_vec.last().unwrap().area == SuperTrendArea::UP { + } 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; + // 2nd filtering: supertrend(ATR period 14, multiplier: 1.2, 1d close price) let mut keys_to_remove: HashSet = HashSet::new(); let server_epoch = get_server_epoch().await;