From d06bfd9d10e51489cf84c75ab89407d739a6279e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20S=C3=A1nchez?= Date: Thu, 9 Oct 2025 17:51:55 -0300 Subject: [PATCH] 2025.10.09 --- changelog.txt | 3 +++ exchange_wrapper.py | 2 +- main.py | 2 +- trader.py | 13 ++++++------- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/changelog.txt b/changelog.txt index a8f2aea..ce6f702 100755 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,6 @@ +2025.10.09: +. Cleanup is done as soon as the trader starts, rather than after sending the take profit and safety orders. + 2025.10.07: . In short traders, if there are too few safety orders (less than 67% of the max amount), safety_order_deviance is increased from 2% to 3%. diff --git a/exchange_wrapper.py b/exchange_wrapper.py index c5db781..b9cadb8 100755 --- a/exchange_wrapper.py +++ b/exchange_wrapper.py @@ -19,7 +19,7 @@ class Broker: #Default values self.wait_time = self.broker_config.get("wait_time",.5) self.cooldown_multiplier = self.broker_config.get("cooldown_multiplier",2) - self.wait_after_initial_market_order = self.broker_config.get("wait_after_initial_market_order",2) + self.wait_after_initial_market_order = self.broker_config.get("wait_after_initial_market_order",1) self.wait_before_new_safety_order = self.broker_config.get("wait_before_new_safety_order",1) self.retries = self.broker_config.get("retries",5) self.slippage_default_threshold = self.broker_config.get("slippage_default_threshold",.03) diff --git a/main.py b/main.py index 7ea76c5..9218017 100644 --- a/main.py +++ b/main.py @@ -18,7 +18,7 @@ import exchange_wrapper import trader -version = "2025.10.07" +version = "2025.10.09" ''' Color definitions. If you want to change them, check the reference at https://en.wikipedia.org/wiki/ANSI_escape_code#Colors diff --git a/trader.py b/trader.py index f54de76..d6c336d 100755 --- a/trader.py +++ b/trader.py @@ -204,7 +204,6 @@ class trader: self.status.set_pause_reason("start_trader - after slippage") - #Sending initial order # # Here, if the amount of the initial order is already available in the account, don't send a market order; just pull the current price and simulate that the order was sent and filled. @@ -278,6 +277,11 @@ class trader: self.broker.logger.log_this("Error sending take profit order. Aborting.",1,self.status.get_pair()) return 1 + # Send cleanup order (if cleanup) + self.status.set_pause_reason("start_trader - doing cleanup (if needed)") + if self.config.get_cleanup() and not self.config.get_is_short(): #Short traders do not need cleanup. + self.do_cleanup() + # Generate the safety prices table self.status.set_start_price(self.broker.price_to_precision(self.status.get_pair(),self.status.get_quote_spent()/self.status.get_base_bought())) self.status.set_safety_price_table(self.calculate_safety_prices(self.status.get_start_price(),self.status.get_no_of_safety_orders(),self.config.get_safety_order_deviance())) @@ -295,11 +299,6 @@ class trader: self.broker.cancel_order(self.status.get_take_profit_order()["id"],self.status.get_pair()) return 1 - # Send cleanup order (if cleanup) - self.status.set_pause_reason("start_trader - doing cleanup (if needed)") - if self.config.get_cleanup() and not self.config.get_is_short(): #Short traders do not need cleanup. - self.do_cleanup() - self.status.set_deal_start_time(int(time.time())) self.update_status(True) self.set_pause(False) @@ -453,7 +452,7 @@ class trader: #If the balance is greater than the size of the first safety order, sell the difference. # Sometimes when an order is filled the balance is not updated immediately, so having a bit of a buffer irons out a couple of issues. - min_size = self.status.get_safety_orders()[0]["amount"] + min_size = self.config.get_order_size()/self.status.get_take_profit_price() if (balance_in_account-min_size)*self.status.get_start_price()>self.broker.get_min_quote_size(self.status.get_pair()): self.broker.logger.log_this(f"Balance to clean: {balance_in_account-min_size} {self.base}",2,self.status.get_pair())