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)]
|
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 = []
|
file_contents = []
|
||||||
result = []
|
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)
|
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 = 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")
|
@stats_api.route("/clear_caches")
|
||||||
def clear_hashes():
|
def clear_hashes():
|
||||||
global hashes_db
|
global hashes_db
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue