from config_ws_connect import subs_public #from config_ws_connect import ws_public # <- original code websocket method from config_ws_connect import ws_public_get_orderbook # <- new websocket method from func_calcultions import get_trade_details from func_price_calls import get_latest_klines from func_stats import calculate_metrics from exceptions import FailedRequestError, InvalidRequestError from requests.exceptions import ConnectionError, Timeout, RequestException from json.decoder import JSONDecodeError # Get latest z-score def get_latest_zscore(): exception = True try: # Get latest asset orderbook prices and add dummy price for latest #orderbook_1 = ws_public.fetch(subs_public[0]) # <- original code websocket method orderbook_1 = ws_public_get_orderbook(subs_public[0]) # <- new websocket method mid_price_1, _, _, = get_trade_details(orderbook_1) #orderbook_2 = ws_public.fetch(subs_public[1]) # <- original code websocket method orderbook_2 = ws_public_get_orderbook(subs_public[1]) # <- new websocket method mid_price_2, _, _, = get_trade_details(orderbook_2) # print("\n") # print('-------------------------------------------------------------------') # print("Get Latest Zscore") # print(orderbook_1) # print(orderbook_2) # print('-------------------------------------------------------------------') # print("\n") # Get latest price history series_1, series_2, exception = get_latest_klines() if exception: return (0, False, exception) # Get z_score and confirm if hot if len(series_1) > 0 and len(series_2) > 0: # Replace last kline price with latest orderbook mid price series_1 = series_1[:-1] series_2 = series_2[:-1] series_1.append(mid_price_1) series_2.append(mid_price_2) # Get latest zscore _, zscore_list = calculate_metrics(series_1, series_2) zscore = zscore_list[-1] if zscore > 0: signal_sign_positive = True else: signal_sign_positive = False exception = False # Return output return (zscore, signal_sign_positive, exception) except (ConnectionError, Timeout, RequestException, JSONDecodeError, FailedRequestError, InvalidRequestError) as e: print(e) # Return output if not true return (0, False, exception)