parent
c486d91d7b
commit
bc306155ff
|
|
@ -164,7 +164,7 @@ def last_n_deals_without_history(n):
|
|||
return [(row[0],row[1],row[2],row[3],row[4],"") for row in last_n_deals(n)]
|
||||
|
||||
|
||||
def last_n_lines(file_name: str, width,amount: int = 4, full_log: bool = False):
|
||||
def last_n_lines(file_name,width,amount=4,full_log=False):
|
||||
|
||||
file_contents = []
|
||||
result = []
|
||||
|
|
@ -187,62 +187,9 @@ def last_n_lines(file_name: str, width,amount: int = 4, full_log: bool = False):
|
|||
return result[:amount],len(file_contents)
|
||||
|
||||
|
||||
def backtest_best_pairs(broker, max_rank: int = 0, min_vol: float = 0, amount: int = 0, vol_measure: str = "Yang-Zhang"):
|
||||
'''
|
||||
Returns a list of trading pairs ordered by volatility.
|
||||
Available volatility measures are Parkinson and Yang-Zhang.
|
||||
|
||||
Parameters: 'broker' -> string - Exchange name (available are Binance, Gate.io, KuCoin and OKX)
|
||||
'max_rank' -> int - Maximum rank of the trading pair (extracted from CoinMarketCap. If there is no valid CMC API key or this parameter is 0, the full list will be returned)
|
||||
'min_vol' -> float - Minimum trading volume of the trading pair to be considered (in USD)
|
||||
'amount' -> int - Maximum number of trading pairs to be returned
|
||||
'vol_measure' -> string - Type of volatility measure (available are "Parkinson" and "Yang-Zhang")
|
||||
'''
|
||||
|
||||
#Parse exchange name (valid entries are only "binance", "gateio", "kucoin" and "okx")
|
||||
|
||||
return []
|
||||
|
||||
|
||||
|
||||
stats_api = Flask(__name__)
|
||||
|
||||
|
||||
@stats_api.route("/fetch_best_pairs")
|
||||
def fetch_best_pairs():
|
||||
'''
|
||||
GET request
|
||||
Parameters: 'broker' -> string
|
||||
'max_rank' -> int
|
||||
'min_vol' -> float
|
||||
'amount' -> int
|
||||
'days_back' -> int
|
||||
'vol_measure' -> string
|
||||
'''
|
||||
|
||||
if "X-API-KEY" in request.headers and request.headers.get("X-API-KEY") in valid_keys:
|
||||
try:
|
||||
broker = request.args.get("broker")
|
||||
max_rank = int(request.args.get("max_rank")) #type:ignore
|
||||
min_vol = float(request.args.get("min_vol")) #type:ignore
|
||||
amount = int(request.args.get("amount")) #type:ignore
|
||||
days_back = int(request.args.get("days_back")) #type:ignore
|
||||
vol_measure = request.args.get("vol_measure") #type:ignore
|
||||
response_value = backtest_best_pairs(broker,max_rank=max_rank,min_vol=min_vol,amount=amount,days_back=days_back,vol_measure=vol_measure) #type:ignore
|
||||
if not cache_requests:
|
||||
return jsonify({"best_pairs": response_value})
|
||||
response_hash = hash(str({"best_pairs": response_value}))
|
||||
if hashes_db["best_pairs"]!=response_hash:
|
||||
hashes_db["best_pairs"] = response_hash
|
||||
return jsonify({"best_pairs": response_value})
|
||||
return jsonify({"no_changes": True})
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return jsonify({"best_pairs":["Error",0]})
|
||||
return jsonify({'Error': 'API key invalid'}), 401
|
||||
|
||||
|
||||
|
||||
@stats_api.route("/clear_caches")
|
||||
def clear_hashes():
|
||||
global hashes_db
|
||||
|
|
|
|||
Loading…
Reference in New Issue