2025.10.04
This commit is contained in:
parent
2823dff56a
commit
8f3b0eb186
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
2
main.py
2
main.py
|
|
@ -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
|
||||||
|
|
|
||||||
21
trader.py
21
trader.py
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue