Added comments to the example config files and doctrings improvements.
This commit is contained in:
parent
fe84bb70ef
commit
dd13dd6988
|
|
@ -12,7 +12,7 @@
|
||||||
"tp_mode": 3, #Take profit mode. (check strategy documentation for more details)
|
"tp_mode": 3, #Take profit mode. (check strategy documentation for more details)
|
||||||
"tp_table": [], #Profit percentage table. (check strategy documentation for more details)
|
"tp_table": [], #Profit percentage table. (check strategy documentation for more details)
|
||||||
"is_short": true, #Signals the trader mode (true if short, false if long)
|
"is_short": true, #Signals the trader mode (true if short, false if long)
|
||||||
"autoswitch": true, #If short, switches to long mode if certain conditions are met. (check strategy documentation for more details)
|
"autoswitch": true, #If the trader is operating in short mode, switches to long mode if certain conditions are met. (check strategy documentation for more details)
|
||||||
"attempt_restart": true, #Attempts to restart the trader if there is an error.
|
"attempt_restart": true, #Attempts to restart the trader if there is an error.
|
||||||
"check_old_long_price": true, #Compares the current price with the old_long price. (check strategy documentation for more details)
|
"check_old_long_price": true, #Compares the current price with the old_long price. (check strategy documentation for more details)
|
||||||
"dynamic_so_deviance": true, #Uses a non-linear safety order deviance algorithm. (check strategy documentation for more details)
|
"dynamic_so_deviance": true, #Uses a non-linear safety order deviance algorithm. (check strategy documentation for more details)
|
||||||
|
|
|
||||||
107
main.py
107
main.py
|
|
@ -40,6 +40,12 @@ white = "\033[0;37;40m"
|
||||||
def seconds_to_time(total_seconds: float) -> str:
|
def seconds_to_time(total_seconds: float) -> str:
|
||||||
'''
|
'''
|
||||||
Takes an int or float as an input and it returns a D:HH:MM:SS formatted string.
|
Takes an int or float as an input and it returns a D:HH:MM:SS formatted string.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
total_seconds (float): The number of seconds to convert
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: The formatted string
|
||||||
'''
|
'''
|
||||||
|
|
||||||
time_delta = datetime.timedelta(seconds=total_seconds)
|
time_delta = datetime.timedelta(seconds=total_seconds)
|
||||||
|
|
@ -55,7 +61,16 @@ def seconds_to_time(total_seconds: float) -> str:
|
||||||
def time_to_unix(year: str, month: str, day: str) -> int:
|
def time_to_unix(year: str, month: str, day: str) -> int:
|
||||||
'''
|
'''
|
||||||
Takes three integer values as an input and returns the unix time corresponding to that input
|
Takes three integer values as an input and returns the unix time corresponding to that input
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
year (str): The year to convert
|
||||||
|
month (str): The month to convert
|
||||||
|
day (str): The day to convert
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
int: The unix time corresponding to the input
|
||||||
'''
|
'''
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return int(time.mktime(datetime.date(int(year), int(month), int(day)).timetuple()))
|
return int(time.mktime(datetime.date(int(year), int(month), int(day)).timetuple()))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
@ -64,6 +79,15 @@ def time_to_unix(year: str, month: str, day: str) -> int:
|
||||||
|
|
||||||
|
|
||||||
def import_instance(pair: str) -> int:
|
def import_instance(pair: str) -> int:
|
||||||
|
'''
|
||||||
|
Imports an previously running trader instance from the status file.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
pair (str): The trading pair to import with the format BASEQUOTE (no slash).
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
int: 0 if successful
|
||||||
|
'''
|
||||||
broker.logger.log_this(f"Importing {pair}")
|
broker.logger.log_this(f"Importing {pair}")
|
||||||
#with open(f"status/{pair}.status", "r") as f:
|
#with open(f"status/{pair}.status", "r") as f:
|
||||||
# status_file_contents = json.load(f)
|
# status_file_contents = json.load(f)
|
||||||
|
|
@ -76,6 +100,17 @@ def import_instance(pair: str) -> int:
|
||||||
|
|
||||||
|
|
||||||
def add_instance(base: str, quote: str) -> int:
|
def add_instance(base: str, quote: str) -> int:
|
||||||
|
'''
|
||||||
|
Adds a new instance of the trader class to the running_instances list.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
base (str): The base currency of the pair.
|
||||||
|
quote (str): The quote currency of the pair.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
int: 0 if the instance was successfully added, 1 if the pair is already running.
|
||||||
|
'''
|
||||||
|
|
||||||
#Check if the pair is already running
|
#Check if the pair is already running
|
||||||
pair = f"{base}{quote}"
|
pair = f"{base}{quote}"
|
||||||
for x in running_instances:
|
for x in running_instances:
|
||||||
|
|
@ -104,7 +139,13 @@ def add_instance(base: str, quote: str) -> int:
|
||||||
def initialize_instance(pair: str) -> int:
|
def initialize_instance(pair: str) -> int:
|
||||||
'''
|
'''
|
||||||
Loads the pair config file and initializes the trader object by adding it to the running instances list
|
Loads the pair config file and initializes the trader object by adding it to the running instances list
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
pair (str): The pair to initialize with the format BASEQUOTE (no slash)
|
||||||
|
Returns:
|
||||||
|
int: 0 if successful
|
||||||
'''
|
'''
|
||||||
|
|
||||||
with open(f"configs/{pair}.json", "r") as y:
|
with open(f"configs/{pair}.json", "r") as y:
|
||||||
config_details = json.load(y)
|
config_details = json.load(y)
|
||||||
broker.logger.log_this(f"Initializing {pair}")
|
broker.logger.log_this(f"Initializing {pair}")
|
||||||
|
|
@ -145,8 +186,15 @@ def generate_config_file(base: str, quote: str) -> dict:
|
||||||
|
|
||||||
def set_exchange(config: dict):
|
def set_exchange(config: dict):
|
||||||
'''
|
'''
|
||||||
Takes the config dictionary as an input and returns the exchange object properly configured
|
Takes the config dictionary as an input and returns the exchange object
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
config (dict): The config dictionary
|
||||||
|
|
||||||
|
Returns
|
||||||
|
exchange (ccxt.Exchange): The exchange object
|
||||||
'''
|
'''
|
||||||
|
|
||||||
timeout = 10000
|
timeout = 10000
|
||||||
if config["exchange"]=="binance":
|
if config["exchange"]=="binance":
|
||||||
exchange_class = getattr(ccxt, "binance")
|
exchange_class = getattr(ccxt, "binance")
|
||||||
|
|
@ -209,6 +257,17 @@ def set_exchange(config: dict):
|
||||||
|
|
||||||
|
|
||||||
def restart_pair_no_json(base: str, quote: str) -> int:
|
def restart_pair_no_json(base: str, quote: str) -> int:
|
||||||
|
'''
|
||||||
|
Trader restart routine
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
base (str): Base currency
|
||||||
|
quote (str): Quote currency
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
int: 0 if successful, 1 if not
|
||||||
|
'''
|
||||||
|
|
||||||
try:
|
try:
|
||||||
order_list = broker.fetch_full_orders(tickers)
|
order_list = broker.fetch_full_orders(tickers)
|
||||||
for x in running_instances:
|
for x in running_instances:
|
||||||
|
|
@ -388,8 +447,17 @@ def main_loop():
|
||||||
def load_keys_from_db(file_name: str) -> list:
|
def load_keys_from_db(file_name: str) -> list:
|
||||||
'''
|
'''
|
||||||
Load valid API keys
|
Load valid API keys
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
file_name : str
|
||||||
|
Name of the database file
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
valid_keys : list
|
||||||
|
List of valid API keys
|
||||||
'''
|
'''
|
||||||
#valid_keys = []
|
|
||||||
|
|
||||||
database_connection = sqlite3.connect(file_name)
|
database_connection = sqlite3.connect(file_name)
|
||||||
database_cursor = database_connection.cursor()
|
database_cursor = database_connection.cursor()
|
||||||
|
|
@ -398,8 +466,6 @@ def load_keys_from_db(file_name: str) -> list:
|
||||||
database_connection.close()
|
database_connection.close()
|
||||||
|
|
||||||
valid_keys = [line[1] for line in data]
|
valid_keys = [line[1] for line in data]
|
||||||
#for line in data:
|
|
||||||
# valid_keys.append(line[1])
|
|
||||||
|
|
||||||
return valid_keys
|
return valid_keys
|
||||||
|
|
||||||
|
|
@ -439,6 +505,7 @@ def return_global_status():
|
||||||
Parameters:
|
Parameters:
|
||||||
None
|
None
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
return unwrapped_global_status()
|
return unwrapped_global_status()
|
||||||
return jsonify({'Error': 'API key invalid'}), 401
|
return jsonify({'Error': 'API key invalid'}), 401
|
||||||
|
|
@ -464,6 +531,7 @@ def return_worker_status():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
base = request.args.get("base")
|
base = request.args.get("base")
|
||||||
|
|
@ -484,6 +552,7 @@ def return_old_long():
|
||||||
quote: str
|
quote: str
|
||||||
from_file: bool
|
from_file: bool
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
base = request.args.get("base")
|
base = request.args.get("base")
|
||||||
|
|
@ -503,6 +572,7 @@ def return_all_worker_status():
|
||||||
Parameters:
|
Parameters:
|
||||||
None
|
None
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
return unwrapped_return_all_worker_status()
|
return unwrapped_return_all_worker_status()
|
||||||
return jsonify({'Error': 'API key invalid'}), 401
|
return jsonify({'Error': 'API key invalid'}), 401
|
||||||
|
|
@ -516,6 +586,7 @@ def add_pair():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -538,6 +609,7 @@ def remove_pair():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -560,6 +632,7 @@ def restart_pair():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -582,6 +655,7 @@ def import_pair():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -605,6 +679,7 @@ def switch_to_long():
|
||||||
quote: str
|
quote: str
|
||||||
calculate_profits: int
|
calculate_profits: int
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -628,6 +703,7 @@ def switch_to_short():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -650,6 +726,7 @@ def load_old_long():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -673,6 +750,7 @@ def add_so():
|
||||||
quote: str
|
quote: str
|
||||||
amount: int
|
amount: int
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -697,6 +775,7 @@ def mod_tp_level():
|
||||||
quote: str
|
quote: str
|
||||||
amount: float
|
amount: float
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -719,6 +798,7 @@ def mod_global_tp_level():
|
||||||
Parameters:
|
Parameters:
|
||||||
amount: float
|
amount: float
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -740,6 +820,7 @@ def last_call():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -763,6 +844,7 @@ def deferred_last_call():
|
||||||
quote: str
|
quote: str
|
||||||
yyyymmdd: str
|
yyyymmdd: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -786,6 +868,7 @@ def toggle_pause():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -807,6 +890,7 @@ def global_last_call():
|
||||||
Parameters:
|
Parameters:
|
||||||
None
|
None
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
return unwrapped_global_last_call()
|
return unwrapped_global_last_call()
|
||||||
return jsonify({'Error': 'API key invalid'}), 401
|
return jsonify({'Error': 'API key invalid'}), 401
|
||||||
|
|
@ -821,6 +905,7 @@ def add_quote():
|
||||||
quote: str
|
quote: str
|
||||||
amount: float
|
amount: float
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -843,6 +928,7 @@ def missing_pairs():
|
||||||
Parameters:
|
Parameters:
|
||||||
None
|
None
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
return unwrapped_missing_pairs()
|
return unwrapped_missing_pairs()
|
||||||
return jsonify({'Error': 'API key invalid'}), 401
|
return jsonify({'Error': 'API key invalid'}), 401
|
||||||
|
|
@ -856,6 +942,7 @@ def toggle_cleanup():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -878,6 +965,7 @@ def toggle_autoswitch():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -900,6 +988,7 @@ def toggle_check_old_long_price():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -923,6 +1012,7 @@ def switch_quote_currency():
|
||||||
quote: str
|
quote: str
|
||||||
new_quote: str
|
new_quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -945,6 +1035,7 @@ def toggle_restart():
|
||||||
Parameters:
|
Parameters:
|
||||||
None
|
None
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
return unwrapped_toggle_restart()
|
return unwrapped_toggle_restart()
|
||||||
return jsonify({'Error': 'API key invalid'}), 401
|
return jsonify({'Error': 'API key invalid'}), 401
|
||||||
|
|
@ -957,6 +1048,7 @@ def toggle_telegram():
|
||||||
Parameters:
|
Parameters:
|
||||||
None
|
None
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
return unwrapped_toggle_telegram()
|
return unwrapped_toggle_telegram()
|
||||||
return jsonify({'Error': 'API key invalid'}), 401
|
return jsonify({'Error': 'API key invalid'}), 401
|
||||||
|
|
@ -969,6 +1061,7 @@ def server_time():
|
||||||
Parameters:
|
Parameters:
|
||||||
None
|
None
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
return unwrapped_server_time()
|
return unwrapped_server_time()
|
||||||
return jsonify({'Error': 'API key invalid'}), 401
|
return jsonify({'Error': 'API key invalid'}), 401
|
||||||
|
|
@ -981,6 +1074,7 @@ def trader_time():
|
||||||
Parameters:
|
Parameters:
|
||||||
None
|
None
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
return unwrapped_trader_time()
|
return unwrapped_trader_time()
|
||||||
return jsonify({'Error': 'API key invalid'}), 401
|
return jsonify({'Error': 'API key invalid'}), 401
|
||||||
|
|
@ -993,6 +1087,7 @@ def loop_wait_time():
|
||||||
Parameters:
|
Parameters:
|
||||||
wait_time: float
|
wait_time: float
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -1013,6 +1108,7 @@ def call_wait_time():
|
||||||
Parameters:
|
Parameters:
|
||||||
wait_time: float
|
wait_time: float
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
@ -1034,6 +1130,7 @@ def reload_markets():
|
||||||
base: str
|
base: str
|
||||||
quote: str
|
quote: str
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
return unwrapped_reload_markets()
|
return unwrapped_reload_markets()
|
||||||
|
|
||||||
|
|
@ -1046,8 +1143,8 @@ def reload_safety_order():
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
None
|
None
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||||
try:
|
try:
|
||||||
if request.json is None:
|
if request.json is None:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue