switch_to_long endpoint

This commit is contained in:
Nicolás Sánchez 2024-11-06 19:44:00 -03:00
parent 9114322191
commit 233bf07a13
3 changed files with 69 additions and 3 deletions

View File

@ -1,3 +1,6 @@
2024.11.06b:
. Added /switch_to_long_price endpoint: It displays the price at which the automatic switch_to_long routine is triggered.
2024.11.06: 2024.11.06:
. Optimized the conditionals that lead to switch_to_long. . Optimized the conditionals that lead to switch_to_long.

55
main.py
View File

@ -22,7 +22,7 @@ In case the permissions of the certificate changes, reset them this way:
# ll /etc/letsencrypt/ # ll /etc/letsencrypt/
''' '''
version = "2024.11.06" version = "2024.11.06b"
''' '''
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
@ -564,6 +564,26 @@ def return_old_long():
return jsonify({'Error': 'Halp'}) return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401 return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/switch_to_long_price", methods=["GET"])
def return_switch_price():
'''
GET request
Parameters:
base: str
quote: str
'''
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
try:
base = request.args.get("base")
quote = request.args.get("quote")
return unwrapped_switch_to_long_price(base,quote)
except Exception as e:
print(e)
return jsonify({'Error': 'Halp'})
return jsonify({'Error': 'API key invalid'}), 401
@base_api.route("/get_all_worker_status", methods=['GET']) @base_api.route("/get_all_worker_status", methods=['GET'])
def return_all_worker_status(): def return_all_worker_status():
''' '''
@ -1475,7 +1495,38 @@ def unwrapped_view_old_long(base,quote,from_file):
return jsonify(old_long) return jsonify(old_long)
for x in running_instances: for x in running_instances:
if f"{base}/{quote}"==x.pair: if f"{base}/{quote}"==x.pair:
return jsonify(x.status_dict["old_long"]) if "old_long" in x.status_dict:
return jsonify(x.status_dict["old_long"])
return jsonify({"Error": "No old_long info found"})
return jsonify({"Error": "Pair not found"})
except Exception as e:
broker.logger.log_this(f"Exception while viewing old_long info: {e}",1,f"{base}/{quote}")
return jsonify({"Error": f"{e}"})
def unwrapped_switch_to_long_price(base,quote):
'''
Returns the content of an old_long file
Parameters:
base (str): The base currency of the pair
quote (str): The quote currency of the pair
from_file (int): 1 if the file is to be loaded from the file system, 0 if it is to be loaded from the trader's status dictionary.
Returns:
jsonify: A jsonified dictionary containing the old_long info.
'''
try:
for x in running_instances:
if f"{base}/{quote}"==x.pair:
if "old_long" in x.status_dict:
#minimum_switch_price = (old_target - quote_already_in)/base_left
old_target = x.status_dict["old_long"]["tp_price"]*x.status_dict["old_long"]["tp_amount"]
base_left = x.status_dict["old_long"]["tp_amount"]-x.status_dict["base_bought"]
minimum_switch_price = (old_target - x.status_dict["quote_spent"])/base_left
return jsonify({"switch_price": minimum_switch_price})
return jsonify({"Error": "No old_long info found"})
return jsonify({"Error": "Pair not found"}) return jsonify({"Error": "Pair not found"})
except Exception as e: except Exception as e:
broker.logger.log_this(f"Exception while viewing old_long info: {e}",1,f"{base}/{quote}") broker.logger.log_this(f"Exception while viewing old_long info: {e}",1,f"{base}/{quote}")

View File

@ -42,7 +42,7 @@ TRADERS
62) mod_tp_level 63) last_call 64) deferred_last_call 62) mod_tp_level 63) last_call 64) deferred_last_call
65) toggle_pause 66) toggle_cleanup 67) toggle_autoswitch 65) toggle_pause 66) toggle_cleanup 67) toggle_autoswitch
68) toggle_check_old_long_price 69) switch_quote_currency 68) toggle_check_old_long_price 69) switch_quote_currency
70) reload_safety_order 71) view_old_long 70) reload_safety_order 71) view_old_long 72) switch_price
98) Change broker 99) Exit 98) Change broker 99) Exit
''' '''
@ -602,3 +602,15 @@ if __name__=="__main__":
url = f"{base_url}{port}/view_old_long?base={base}&quote={quote}&from_file={from_file}" url = f"{base_url}{port}/view_old_long?base={base}&quote={quote}&from_file={from_file}"
print(json.loads(requests.get(url,headers=headers).content)) print(json.loads(requests.get(url,headers=headers).content))
input("Press ENTER to continue ") input("Press ENTER to continue ")
elif command==72:
print("Returns the price target to reach to switch to long mode")
trading_pair = input("Input trader in the format BASE/QUOTE: ").upper()
if not validate_pair(trading_pair):
print("The input is invalid")
break
if input("Proceed? (Y/n) ") in ["Y","y",""]:
base,quote = trading_pair.split("/")
url = f"{base_url}{port}/switch_to_long_price?base={base}&quote={quote}"
print(json.loads(requests.get(url,headers=headers).content))
input("Press ENTER to continue ")