diff --git a/src/strategy_team/future_strategy_long.rs b/src/strategy_team/future_strategy_long.rs index 3200a9b..6df913b 100644 --- a/src/strategy_team/future_strategy_long.rs +++ b/src/strategy_team/future_strategy_long.rs @@ -125,7 +125,7 @@ pub async fn list_up_for_buy( .min_by(|x, y| x.opclo_price.partial_cmp(&y.opclo_price).unwrap()) .unwrap().opclo_price; if values.current_price.to_f64().is_some_and(|a| a > min_price) { - let stoploss_percent = (min_price - values.current_price.to_f64().unwrap()) / values.current_price.to_f64().unwrap(); + let stoploss_percent = ((min_price - values.current_price.to_f64().unwrap()) * 100.0) / values.current_price.to_f64().unwrap(); values.stoploss = rust_decimal::prelude::FromPrimitive::from_f64(stoploss_percent).unwrap(); let target_percent = stoploss_percent.abs() * 2.0; values.target_price = rust_decimal::prelude::FromPrimitive::from_f64(target_percent).unwrap(); diff --git a/src/strategy_team/future_strategy_short.rs b/src/strategy_team/future_strategy_short.rs index c0659ca..a9dddb5 100644 --- a/src/strategy_team/future_strategy_short.rs +++ b/src/strategy_team/future_strategy_short.rs @@ -40,17 +40,17 @@ pub async fn list_up_for_buy( let mut do_buy = false; let price_and_closetime = get_current_price_decimal(&symbol, &alldata.rt_price_1m_vec).await; if let (Some(ema30_vec), Some(ema200_vec), Some(current_info)) = (ema30.get(symbol), ema200.get(symbol), price_and_closetime) { - if ema30_vec.len() > 10 - && ema200_vec.len() > 10 + if ema30_vec.len() > 20 + && ema200_vec.len() > 20 && ema30_vec.last().unwrap().close_time > server_epoch && ema30_vec.last().unwrap().close_time == ema200_vec.last().unwrap().close_time { if ema30_vec.last().unwrap().ema_value < ema200_vec.last().unwrap().ema_value - && ema30_vec[ema30_vec.len()-1].ema_value - ema200_vec[ema200_vec.len()-1].ema_value < ema30_vec[ema30_vec.len()-2].ema_value - ema200_vec[ema200_vec.len()-2].ema_value - && ema30_vec[ema30_vec.len()-2].ema_value - ema200_vec[ema200_vec.len()-2].ema_value < ema30_vec[ema30_vec.len()-3].ema_value - ema200_vec[ema200_vec.len()-3].ema_value - && ema30_vec[ema30_vec.len()-3].ema_value - ema200_vec[ema200_vec.len()-3].ema_value < ema30_vec[ema30_vec.len()-4].ema_value - ema200_vec[ema200_vec.len()-4].ema_value - && ema30_vec[ema30_vec.len()-4].ema_value - ema200_vec[ema200_vec.len()-4].ema_value < ema30_vec[ema30_vec.len()-5].ema_value - ema200_vec[ema200_vec.len()-5].ema_value - && ema30_vec[ema30_vec.len()-5].ema_value - ema200_vec[ema200_vec.len()-5].ema_value < ema30_vec[ema30_vec.len()-6].ema_value - ema200_vec[ema200_vec.len()-6].ema_value + && (ema30_vec[ema30_vec.len()-1].ema_value - ema200_vec[ema200_vec.len()-1].ema_value).abs() < (ema30_vec[ema30_vec.len()-2].ema_value - ema200_vec[ema200_vec.len()-2].ema_value).abs() + && (ema30_vec[ema30_vec.len()-2].ema_value - ema200_vec[ema200_vec.len()-2].ema_value).abs() < (ema30_vec[ema30_vec.len()-3].ema_value - ema200_vec[ema200_vec.len()-3].ema_value).abs() + && (ema30_vec[ema30_vec.len()-3].ema_value - ema200_vec[ema200_vec.len()-3].ema_value).abs() < (ema30_vec[ema30_vec.len()-4].ema_value - ema200_vec[ema200_vec.len()-4].ema_value).abs() + && (ema30_vec[ema30_vec.len()-4].ema_value - ema200_vec[ema200_vec.len()-4].ema_value).abs() < (ema30_vec[ema30_vec.len()-5].ema_value - ema200_vec[ema200_vec.len()-5].ema_value).abs() + && (ema30_vec[ema30_vec.len()-5].ema_value - ema200_vec[ema200_vec.len()-5].ema_value).abs() < (ema30_vec[ema30_vec.len()-6].ema_value - ema200_vec[ema200_vec.len()-6].ema_value).abs() { values.current_price = current_info.0; values.closetime = current_info.1; @@ -125,7 +125,7 @@ pub async fn list_up_for_buy( .max_by(|x, y| x.opclo_price.partial_cmp(&y.opclo_price).unwrap()) .unwrap().opclo_price; if values.current_price.to_f64().is_some_and(|a| a < max_price) { - let stoploss_percent = (values.current_price.to_f64().unwrap() - max_price) / values.current_price.to_f64().unwrap(); + let stoploss_percent = ((values.current_price.to_f64().unwrap() - max_price) * 100.0) / values.current_price.to_f64().unwrap(); values.stoploss = rust_decimal::prelude::FromPrimitive::from_f64(stoploss_percent).unwrap(); let target_percent = stoploss_percent.abs() * 2.0; values.target_price = rust_decimal::prelude::FromPrimitive::from_f64(target_percent).unwrap(); diff --git a/src/strategy_team/mod.rs b/src/strategy_team/mod.rs index 163b6ac..b93c341 100644 --- a/src/strategy_team/mod.rs +++ b/src/strategy_team/mod.rs @@ -178,7 +178,9 @@ pub async fn future_duplicate_filter( // exists_condition_build.push_str("\' AND close_time="); // exists_condition_build.push_str(filtered_data.closetime.to_string().as_str()); exists_condition_build.push_str("\' AND position="); + exists_condition_build.push_str("\'"); exists_condition_build.push_str(position.to_string().as_str()); + exists_condition_build.push_str("\'"); let exists_condition = Some(exists_condition_build); let exists_condition_c = exists_condition.clone();