2025.10.04

This commit is contained in:
Nicolás Sánchez 2025-10-04 21:40:03 -03:00
parent 2823dff56a
commit 8f3b0eb186
4 changed files with 20 additions and 15 deletions

View File

@ -1,3 +1,7 @@
2025.10.04:
. Fixed error while logging orders in new_simulated_market_order.
. renew_tp_and_so_routine now send the take profit order first, and then the safety orders.
2025.10.03: 2025.10.03:
. New broker config option: log_orders. If set to True, the orders will be logged in orders.log under logs directory. . New broker config option: log_orders. If set to True, the orders will be logged in orders.log under logs directory.
. New API endpoint: /toggle_log_orders. . New API endpoint: /toggle_log_orders.

View File

@ -694,6 +694,8 @@ class Broker:
try: try:
if self.get_exchange_name()=="gateio" and side=="buy" and not amount_in_base: if self.get_exchange_name()=="gateio" and side=="buy" and not amount_in_base:
new_order = self.exchange.create_market_buy_order_with_cost(symbol, size) new_order = self.exchange.create_market_buy_order_with_cost(symbol, size)
if self.log_orders:
self.logger.log_order(f"New simulated market order: Symbol: {symbol} - Side: {side} - Size: {size} - ID: {new_order['id']} - Origin: {log}")
else: else:
order_book = self.get_order_book(symbol) order_book = self.get_order_book(symbol)
if order_book=={}: if order_book=={}:
@ -707,8 +709,8 @@ class Broker:
price = self.find_minimum_viable_price(order_book,base_amount,side) price = self.find_minimum_viable_price(order_book,base_amount,side)
#Maybe check for slippage here instead of within the trader itself? idk #Maybe check for slippage here instead of within the trader itself? idk
new_order = self.exchange.create_order(symbol,"limit",side,base_amount,price) new_order = self.exchange.create_order(symbol,"limit",side,base_amount,price)
if self.log_orders: if self.log_orders:
self.logger.log_order(f"New simulated market order: Symbol: {symbol} - Side: {side} - Size: {size} - Price: {price} - ID: {new_order['id']} - Origin: {log}") self.logger.log_order(f"New simulated market order: Symbol: {symbol} - Side: {side} - Size: {size} - Price: {price} - ID: {new_order['id']} - Origin: {log}")
time.sleep(self.wait_time) time.sleep(self.wait_time)
return self.get_order(new_order["id"],symbol) return self.get_order(new_order["id"],symbol)
except Exception as e: except Exception as e:

View File

@ -18,7 +18,7 @@ import exchange_wrapper
import trader import trader
version = "2025.10.03" version = "2025.10.04"
''' '''
Color definitions. If you want to change them, check the reference at https://en.wikipedia.org/wiki/ANSI_escape_code#Colors Color definitions. If you want to change them, check the reference at https://en.wikipedia.org/wiki/ANSI_escape_code#Colors

View File

@ -1019,16 +1019,6 @@ class trader:
#Cooldown #Cooldown
time.sleep(self.broker.get_wait_before_new_safety_order()) time.sleep(self.broker.get_wait_before_new_safety_order())
#Send new SO(s)
#Do not send new orders if the max amount is reached or surpassed.
#It can happen if the max amount of concurrent orders is modified through an API call.
max_orders = self.config.get_concurrent_safety_orders() if not self.status.get_is_boosted() else self.config.get_boosted_concurrent_safety_orders()
if len(self.status.get_safety_orders())<max_orders:
self.send_new_safety_order_batch(max_orders-len(self.status.get_safety_orders()))
#Cooldown
time.sleep(self.broker.get_wait_before_new_safety_order())
#Send new TP order #Send new TP order
if self.send_new_tp_order()==1: if self.send_new_tp_order()==1:
error_string = "Problems sending the new take profit order" error_string = "Problems sending the new take profit order"
@ -1036,6 +1026,15 @@ class trader:
self.status.set_pause_reason(error_string) self.status.set_pause_reason(error_string)
return 4 return 4
#Cooldown
time.sleep(self.broker.get_wait_before_new_safety_order())
#Send new safety order(s)
#Do not send new orders if the max amount is reached or surpassed.
max_orders = self.config.get_concurrent_safety_orders() if not self.status.get_is_boosted() else self.config.get_boosted_concurrent_safety_orders()
if len(self.status.get_safety_orders())<max_orders:
self.send_new_safety_order_batch(max_orders-len(self.status.get_safety_orders()))
#Update status dict #Update status dict
self.update_status(True) self.update_status(True)
@ -1196,9 +1195,9 @@ class trader:
filled_orders = [] filled_orders = []
for id in filled_ids: for id in filled_ids:
order = self.broker.get_order(id, self.status.get_pair()) order = self.broker.get_order(id, self.status.get_pair())
time.sleep(self.broker.get_wait_time())
if order["status"]=="closed": if order["status"]=="closed":
filled_orders.append(order) filled_orders.append(order)
time.sleep(self.broker.get_wait_time())
if len(filled_orders)>0: #To make sure that the safety orders are actually filled (Kucoin sometimes sends incomplete order lists) if len(filled_orders)>0: #To make sure that the safety orders are actually filled (Kucoin sometimes sends incomplete order lists)
self.status.set_safety_orders_filled(self.status.get_safety_orders_filled()+len(filled_orders)) self.status.set_safety_orders_filled(self.status.get_safety_orders_filled()+len(filled_orders))
renew_outcome = self.renew_tp_and_so_routine(filled_orders) renew_outcome = self.renew_tp_and_so_routine(filled_orders)