diff --git a/changelog.txt b/changelog.txt index 13032df..c2ecf7b 100755 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,6 @@ +2024.10.31: +. Added an option to set the wait time before sending a new safety order. + 2024.10.30: . Changes trying to catch the wrong base amount bug. . Simplified new_market_order code. diff --git a/configs/exchange_config.json.example b/configs/exchange_config.json.example index 29199be..0d146ee 100755 --- a/configs/exchange_config.json.example +++ b/configs/exchange_config.json.example @@ -16,6 +16,7 @@ "reconnect": 30, #Deprecated "lap_time": 1, #Time in seconds between each iteration of the instance. "cooldown_multiplier": 2, #Time in seconds to wait between closing a new trade and starting a new one. Useful to combat big orderbook movements. + "wait_before_new_safety_order": 1, #Prior to sending a new safety order, wait n amount of seconds (might help some exchanges to reflect the full amount of a filled order) "host": "0.0.0.0", #API host "port": "5006", #API port "telegram": false, #Send Telegram notifications diff --git a/exchange_wrapper.py b/exchange_wrapper.py index bda6db4..281e6e1 100755 --- a/exchange_wrapper.py +++ b/exchange_wrapper.py @@ -16,6 +16,9 @@ class broker: self.cooldown_multiplier = 2 #Default cooldown multiplier value if "cooldown_multiplier" in self.read_config: self.cooldown_multiplier = self.read_config["cooldown_multiplier"] + self.wait_before_new_safety_order = 1 + if "wait_before_new_safety_order" in self.read_config: + self.wait_before_new_safety_order = self.read_config["wait_before_new_safety_order"] self.empty_order = {"id": "", "status": "", "filled": 0, "remaining": 0, "price": 0, "cost": 0, "fees": [], "symbol": ""} self.retries = read_config["retries"] if "retries" in self.read_config else 10 self.slippage_default_threshold = self.read_config["slippage_default_threshold"] if "slippage_default_threshold" in read_config else .03 @@ -119,10 +122,16 @@ class broker: self.cooldown_multiplier = value return 0 + def get_wait_before_new_safety_order(self): + return self.wait_before_new_safety_order + + def set_wait_before_new_safety_order(self,value:float): + self.wait_before_new_safety_order = value + return 0 + def get_default_order_size(self): return self.read_config["default_order_size"] - def set_default_order_size(self,size): try: self.read_config["default_order_size"] = float(size) diff --git a/main.py b/main.py index 624fcf2..d0d3e9b 100644 --- a/main.py +++ b/main.py @@ -22,7 +22,7 @@ In case the permissions of the certificate changes, reset them this way: # ll /etc/letsencrypt/ ''' -version = "2024.10.30" +version = "2024.10.31" ''' 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 6c500e8..eb9232e 100755 --- a/trader.py +++ b/trader.py @@ -1015,10 +1015,7 @@ class trader: self.sum_filled_amounts(filled_order) #Cooldown - time.sleep(self.broker.get_wait_time()) - if self.broker.get_exchange_name()=="gateio": - #Extend the wait time because Gate.io sucks - time.sleep(self.broker.get_wait_time()) + time.sleep(self.broker.get_wait_before_new_safety_order()) # Send the new safety order. If all expected safety orders are filled, it assigns an empty order to self.so if send_new_so: