From e85690fd419af3a9cbd6533b83323f344a7af7da Mon Sep 17 00:00:00 2001 From: Sik Yoon Date: Fri, 12 Apr 2024 04:37:44 +0900 Subject: [PATCH] Update selling filtering --- src/strategy_team/strategy_008.rs | 65 +++++++++---------------------- 1 file changed, 18 insertions(+), 47 deletions(-) diff --git a/src/strategy_team/strategy_008.rs b/src/strategy_team/strategy_008.rs index 33ee1e7..b30b3c3 100644 --- a/src/strategy_team/strategy_008.rs +++ b/src/strategy_team/strategy_008.rs @@ -306,54 +306,25 @@ pub async fn list_up_for_sell( is_sell = true; } else if server_epoch - element.transact_time > (1_800_000) * 1 && is_overturned == true { is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 5 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (15.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 6 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (14.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 7 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (13.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 8 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (12.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 9 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (11.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 10 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (10.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 11 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (9.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 12 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (8.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 13 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (7.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 14 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (6.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 15 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (5.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 16 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (4.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 17 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (3.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 18 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (2.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 19 && - (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && target_profit_percent * (1.0/16.0) <= element.pure_profit_percent) { - is_sell = true; - } else if server_epoch - element.transact_time > (1_800_000) * 20 { // time up selling - is_sell = true; + } + + let minimum_candles = 5; + let maximum_candles = 30; + for count_candles in minimum_candles..=maximum_candles { + if count_candles < maximum_candles && + server_epoch - element.transact_time > (1_800_000) * count_candles && + (target_profit_percent != 0.0 && target_profit_percent.is_sign_positive() && + target_profit_percent * ((maximum_candles - count_candles) as f64 / (maximum_candles - minimum_candles + 1) as f64) <= element.pure_profit_percent) { + is_sell = true; + break; + } else if count_candles == maximum_candles { // time up selling + is_sell = true; + break; + } else { + break; + } } + // TODO: sell_count가 1일 때 적용하기 // else if (supertrend_vec // .last()