vocabulary consolidation
This commit is contained in:
parent
0b1cc99558
commit
1998b428f2
2
main.py
2
main.py
|
|
@ -1805,7 +1805,7 @@ def unwrapped_add_quote(base,quote,amount):
|
||||||
for x in running_instances:
|
for x in running_instances:
|
||||||
if f"{base}/{quote}"==x.config.get_pair():
|
if f"{base}/{quote}"==x.config.get_pair():
|
||||||
if x.config.get_is_short():
|
if x.config.get_is_short():
|
||||||
return jsonify({"Error": "Quote can't be added to short bots"})
|
return jsonify({"Error": "Quote can't be added to short traders"})
|
||||||
x.pause = True
|
x.pause = True
|
||||||
new_average_price = (x.status.get_quote_spent()+float(amount))/(x.status.get_base_bought()+(float(amount)/x.get_status_dict()["price"]))
|
new_average_price = (x.status.get_quote_spent()+float(amount))/(x.status.get_base_bought()+(float(amount)/x.get_status_dict()["price"]))
|
||||||
broker.logger.log_this(f"Your new average buy price will be {new_average_price} {x.quote}",2,f"{base}/{quote}")
|
broker.logger.log_this(f"Your new average buy price will be {new_average_price} {x.quote}",2,f"{base}/{quote}")
|
||||||
|
|
|
||||||
38
trader.py
38
trader.py
|
|
@ -237,7 +237,7 @@ class trader:
|
||||||
self.status.set_base_bought(self.status.get_base_bought()-self.status.get_fees_paid_in_base())
|
self.status.set_base_bought(self.status.get_base_bought()-self.status.get_fees_paid_in_base())
|
||||||
self.status.set_quote_spent(returned_order["cost"])
|
self.status.set_quote_spent(returned_order["cost"])
|
||||||
else:
|
else:
|
||||||
self.broker.logger.log_this("Error starting bot. Aborting.",1,self.config.get_pair())
|
self.broker.logger.log_this("Error starting trader. Aborting.",1,self.config.get_pair())
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
# Send the take profit order
|
# Send the take profit order
|
||||||
|
|
@ -324,7 +324,7 @@ class trader:
|
||||||
|
|
||||||
def return_optimal_order_size(self, amount: float, min_size: float, amount_of_safety_orders: int, scalar: float) -> float:
|
def return_optimal_order_size(self, amount: float, min_size: float, amount_of_safety_orders: int, scalar: float) -> float:
|
||||||
'''
|
'''
|
||||||
Calculates the optimal order size for a short bot, according to the amount passed as a parameter.
|
Calculates the optimal order size for a short trader, according to the amount passed as a parameter.
|
||||||
Due to performance issues, the step size that is used is 1/10th of the minimum order size.
|
Due to performance issues, the step size that is used is 1/10th of the minimum order size.
|
||||||
|
|
||||||
:param amount: float
|
:param amount: float
|
||||||
|
|
@ -405,10 +405,10 @@ class trader:
|
||||||
A more elegant solution would be to take note of the amount and the price at the moment of the deal closing that lead to
|
A more elegant solution would be to take note of the amount and the price at the moment of the deal closing that lead to
|
||||||
that small amount of change to appear, to make possible to calculate an optimal sell price of the remaining assets
|
that small amount of change to appear, to make possible to calculate an optimal sell price of the remaining assets
|
||||||
instead of brute forcing it this way.
|
instead of brute forcing it this way.
|
||||||
For smaller bots that might be overengineering it a bit anyway
|
For smaller traders that might be overengineering it a bit anyway
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if self.config.get_is_short(): #Short bots do not need cleanup
|
if self.config.get_is_short(): #Short traders do not need cleanup
|
||||||
return 0
|
return 0
|
||||||
balance_to_clean = self.fetch_free_base()
|
balance_to_clean = self.fetch_free_base()
|
||||||
if balance_to_clean is None:
|
if balance_to_clean is None:
|
||||||
|
|
@ -475,12 +475,12 @@ class trader:
|
||||||
|
|
||||||
def switch_to_short(self) -> int:
|
def switch_to_short(self) -> int:
|
||||||
'''
|
'''
|
||||||
This method modifies the config file of a pair to convert it to short.
|
This method modifies the config file of a trader to convert it to short.
|
||||||
It automagically sets the order size according to the funds available.
|
It automagically sets the order size according to the funds available.
|
||||||
If not enough funds, it returns 1
|
If not enough funds, it returns 1
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if self.config.get_is_short(): #Check if bot is already a short bot
|
if self.config.get_is_short(): #Check if the trader is already in short mode
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
#Let's do some type checking first
|
#Let's do some type checking first
|
||||||
|
|
@ -491,7 +491,7 @@ class trader:
|
||||||
self.broker.logger.log_this("Safety order is None, can't switch to short",1,self.config.get_pair())
|
self.broker.logger.log_this("Safety order is None, can't switch to short",1,self.config.get_pair())
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
#Pauses bot
|
#Pauses trader
|
||||||
self.pause = True
|
self.pause = True
|
||||||
self.status.set_pause_reason("switch_to_short")
|
self.status.set_pause_reason("switch_to_short")
|
||||||
|
|
||||||
|
|
@ -562,20 +562,20 @@ class trader:
|
||||||
return 1
|
return 1
|
||||||
self.status.set_stop_when_profit(False)
|
self.status.set_stop_when_profit(False)
|
||||||
#self.config.set_is_short(True)
|
#self.config.set_is_short(True)
|
||||||
self.broker.logger.log_this("Done configuring. Starting bot...",2,self.config.get_pair())
|
self.broker.logger.log_this("Done configuring. Starting trader...",2,self.config.get_pair())
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def switch_to_long(self, ignore_old_long: bool = False, already_received_quote: float = 0) -> int:
|
def switch_to_long(self, ignore_old_long: bool = False, already_received_quote: float = 0) -> int:
|
||||||
'''
|
'''
|
||||||
Takes a short bot and changes the mode to long.
|
Takes a short trader and changes the mode to long.
|
||||||
Only does it if the current bot was previously a long one.
|
Only does it if the current trader was previously a long one.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if not self.config.get_is_short():
|
if not self.config.get_is_short():
|
||||||
self.broker.logger.log_this("Trader already in long mode, nothing to do",1,self.config.get_pair())
|
self.broker.logger.log_this("Trader already in long mode, nothing to do",1,self.config.get_pair())
|
||||||
return 1
|
return 1
|
||||||
self.broker.logger.log_this("Attempting to switch to long bot",0,self.config.get_pair())
|
self.broker.logger.log_this("Attempting to switch to long trader",0,self.config.get_pair())
|
||||||
|
|
||||||
#Check old_long data
|
#Check old_long data
|
||||||
if not ignore_old_long and self.status.get_old_long()=={}:
|
if not ignore_old_long and self.status.get_old_long()=={}:
|
||||||
|
|
@ -682,7 +682,7 @@ class trader:
|
||||||
the reporting and the restart of the trader.
|
the reporting and the restart of the trader.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
self.pause = True #To stop the main thread to iterate through this bot's orders (just in case)
|
self.pause = True #To stop the main thread to iterate through this trader's orders (just in case)
|
||||||
self.status.set_pause_reason("take_profit_routine - order handling") #start_trader will set this flag to False again once it starts
|
self.status.set_pause_reason("take_profit_routine - order handling") #start_trader will set this flag to False again once it starts
|
||||||
|
|
||||||
#Add the timestamp to the deals cache
|
#Add the timestamp to the deals cache
|
||||||
|
|
@ -691,7 +691,7 @@ class trader:
|
||||||
#Let's do some type checking first
|
#Let's do some type checking first
|
||||||
if self.status.get_take_profit_order() is None:
|
if self.status.get_take_profit_order() is None:
|
||||||
self.status.set_pause_reason(time.strftime(f"[%Y/%m/%d %H:%M:%S] | {self.config.get_pair()} | TP order is None"))
|
self.status.set_pause_reason(time.strftime(f"[%Y/%m/%d %H:%M:%S] | {self.config.get_pair()} | TP order is None"))
|
||||||
self.broker.logger.log_this("Error. Take profit order is None, pair will be restarted",0,self.config.get_pair())
|
self.broker.logger.log_this("Error. Take profit order is None, trader will be restarted",0,self.config.get_pair())
|
||||||
self.status.save_to_file(is_backup=True)
|
self.status.save_to_file(is_backup=True)
|
||||||
self.restart = True
|
self.restart = True
|
||||||
return 1
|
return 1
|
||||||
|
|
@ -977,7 +977,7 @@ class trader:
|
||||||
self.status.set_safety_order(self.broker.get_empty_order())
|
self.status.set_safety_order(self.broker.get_empty_order())
|
||||||
#return 1
|
#return 1
|
||||||
if self.status.get_take_profit_order()["id"]=="":
|
if self.status.get_take_profit_order()["id"]=="":
|
||||||
self.broker.logger.log_this(f"Take profit order missing. Stopping bot. No order ID was provided.",1,self.config.get_pair())
|
self.broker.logger.log_this(f"Take profit order missing. Stopping trader. No order ID was provided.",1,self.config.get_pair())
|
||||||
self.broker.cancel_order(self.status.get_safety_order()["id"],self.config.get_pair())
|
self.broker.cancel_order(self.status.get_safety_order()["id"],self.config.get_pair())
|
||||||
if self.config.get_attempt_restart():
|
if self.config.get_attempt_restart():
|
||||||
self.status.save_to_file(is_backup=True)
|
self.status.save_to_file(is_backup=True)
|
||||||
|
|
@ -993,8 +993,8 @@ class trader:
|
||||||
if tp_status["status"]=="closed":
|
if tp_status["status"]=="closed":
|
||||||
if tp_status["filled"]>0:
|
if tp_status["filled"]>0:
|
||||||
return self.take_profit_routine(tp_status)
|
return self.take_profit_routine(tp_status)
|
||||||
self.broker.logger.log_this(f"Take profit order closed but not filled, 0 filled. Stopping bot. Order ID: {self.status.get_take_profit_order()['id']}",1,self.config.get_pair())
|
self.broker.logger.log_this(f"Take profit order closed but not filled, 0 filled. Stopping trader. Order ID: {self.status.get_take_profit_order()['id']}",1,self.config.get_pair())
|
||||||
#Cancelling safety order and stopping bot
|
#Cancelling safety order and stopping trader
|
||||||
self.broker.cancel_order(self.status.get_safety_order()["id"],self.config.get_pair())
|
self.broker.cancel_order(self.status.get_safety_order()["id"],self.config.get_pair())
|
||||||
if self.config.get_attempt_restart():
|
if self.config.get_attempt_restart():
|
||||||
self.status.save_to_file(is_backup=True)
|
self.status.save_to_file(is_backup=True)
|
||||||
|
|
@ -1006,7 +1006,7 @@ class trader:
|
||||||
elif tp_status["status"]=="canceled":
|
elif tp_status["status"]=="canceled":
|
||||||
#TODO: Here, if the safety order is still open, we could resend the tp order.
|
#TODO: Here, if the safety order is still open, we could resend the tp order.
|
||||||
if self.config.get_attempt_restart():
|
if self.config.get_attempt_restart():
|
||||||
self.broker.logger.log_this("Take profit order canceled. Restarting the bot.",1,self.config.get_pair())
|
self.broker.logger.log_this("Take profit order canceled. Restarting the trader.",1,self.config.get_pair())
|
||||||
self.status.save_to_file(is_backup=True)
|
self.status.save_to_file(is_backup=True)
|
||||||
self.restart = True
|
self.restart = True
|
||||||
else:
|
else:
|
||||||
|
|
@ -1061,7 +1061,7 @@ class trader:
|
||||||
self.check_old_long_price()
|
self.check_old_long_price()
|
||||||
|
|
||||||
self.status.set_pause_reason("check for autoswitch")
|
self.status.set_pause_reason("check for autoswitch")
|
||||||
#If it's a short bot that used to be long AND autoswitch is enabled
|
#If it's a short trader that used to be long AND autoswitch is enabled
|
||||||
if self.config.get_is_short() and self.config.get_autoswitch() and self.status.get_old_long()!={}:
|
if self.config.get_is_short() and self.config.get_autoswitch() and self.status.get_old_long()!={}:
|
||||||
#If selling the base currency left at the current market price plus the quote already received turns out to be more than the old long deal target,
|
#If selling the base currency left at the current market price plus the quote already received turns out to be more than the old long deal target,
|
||||||
# it means that we already are in profit territory, switch back to long.
|
# it means that we already are in profit territory, switch back to long.
|
||||||
|
|
@ -1377,7 +1377,7 @@ class trader:
|
||||||
|
|
||||||
def quote_currency_switch_configs(self, new_quote: str) -> int:
|
def quote_currency_switch_configs(self, new_quote: str) -> int:
|
||||||
'''
|
'''
|
||||||
Updates the broker config file, changes all the variables and writes the new pair config file
|
Updates the broker config file, changes all the variables and writes the new trader config file
|
||||||
'''
|
'''
|
||||||
#Change broker config file
|
#Change broker config file
|
||||||
self.broker.remove_pair_from_config(f"{self.base}{self.quote}")
|
self.broker.remove_pair_from_config(f"{self.base}{self.quote}")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue