def fetch_tech_indicators(): with open("./store/indicators.json", 'w') as indicators_json: try: price_data = dataset("price_data") indicators = transformer("calculate_indicators")(price_data) get_signal = { "MOM (1)": lambda v: "BUY" if v >= 0 else "SELL", "ADX (14)": lambda v: "BUY" if v >= 25 else "SELL", # Not sure about this "WILLR": lambda v: "SELL" if v <= -50 else "BUY", "RSI (6)": lambda v: "SELL" if v >= 50 else "BUY", "ATR (14)": lambda v: "N/A", "OBV": lambda v: "N/A", "TRIX (20)": lambda v: "N/A", "EMA (6)": lambda v: "N/A" } data = [] for indicator, signal in get_signal.items(): val = round(indicators[indicator][0], 2) data.append([indicator, str(val), signal(val)]) indicators_json.write( json.dumps( { "error": False, "data": list(sorted(data, key=lambda i: len(i[0]))) }, indent=2)) except: indicators_json.write( json.dumps({ "error": True, "data": [] }, indent=2))
def make_prediction(): price_data = dataset("price_data") blockchain_data = dataset("blockchain_data") processed_data = (price_data.pipe( transformer("calculate_indicators")).pipe( transformer("merge_datasets"), other_sets=[blockchain_data]).pipe( transformer("fix_null_vals")).pipe( transformer("add_lag_vars")).pipe( transformer("power_transform")).pipe( transformer("binarize_labels")).drop("Date", axis=1)) feature_vector = processed_data.drop("Trend", axis=1).iloc[0] model = Model(processed_data.drop(processed_data.index[0]), hyperopt=False) return model.predict(feature_vector.values)[0]
def fetch_tech_indicators(): # TODO: Create a mapping between indicator values and signals with open("./cache/data/indicators.json", 'w') as indicators_json: try: indicators = transformer("calculate_indicators")( dataset("price_data")) # "MACD": {}, # MACD, MACD (Signal), MACD (Historical) # "MOM (1)": {"value": indicators["MOM (1)"][0], "signal": ""}, # "ADX (20)": {"value": indicators["ADX (20)"][0], "signal": ""}, # "RSI (12)": {"value": indicators["RSI (12)"][0], "signal": ""}, # "ATR (14)": {"value": indicators["ATR (14)"][0], "signal": ""}, # "OBV": {"value": indicators["OBV"][0], "signal": ""}, # "TRIX (20)": {"value": indicators["TRIX (20)"][0], "signal": ""}, # "EMA (6)": {"value": indicators["EMA (6)"][0], "signal": "NONE"}, data = [[ "MOM (3-period)", str(round(indicators["MOM (1)"][0], 2)), "SELL" ], [ "ADX (14-period)", str(round(indicators["ADX (14)"][0], 2)), "SELL" ], ["WILLR", str(round(indicators["WILLR"][0], 2)), "SELL"], [ "RSI (6-period)", str(round(indicators["RSI (6)"][0], 2)), "SELL" ], [ "ATR (14-period)", str(round(indicators["ATR (14)"][0], 2)), "SELL" ], ["OBV", str(round(indicators["OBV"][0], 2)), "BUY"], [ "TRIX (20-period)", str(round(indicators["TRIX (20)"][0], 2)), "BUY" ], [ "EMA (6-period)", str(round(indicators["EMA (6)"][0], 2)), "BUY" ]] indicators_json.write( json.dumps( { "error": False, "data": list(sorted(data, key=lambda i: len(i[0]))) }, indent=2)) except: indicators_json.write( json.dumps({ "error": True, "data": [] }, indent=2))
def fetch_price_data(): with open(os.path.join(DIR_PATH, "../store/ticker.json"), 'w') as price_data: try: response = requests.get( "https://www.bitstamp.net/api/ticker/").json() price_data.write( json.dumps( { "error": False, "data": { "last": round(float(response["last"]), 2), "high": round(float(response["high"]), 2), "low": round(float(response["low"]), 2), "open": round(float(response["open"]), 2), "volume": round(float(response["volume"]), 2) } }, indent=2)) except: price_data.write( json.dumps({ "error": True, "data": json.loads(price_data)["data"] })) with open(os.path.join(DIR_PATH, "../store/graph.json"), 'w') as graph_data: try: data = [] for index, row in dataset("price_data").iterrows(): data.append({ "date": moment.date(row["Date"]).format("MM/DD/YY"), "price": row["Close"], "volume": row["Volume (BTC)"] }) graph_data.write( json.dumps({ "error": False, "data": data }, indent=2)) except: graph_data.write( json.dumps({ "error": True, "data": json.loads(graph_data)["data"] }))
def fetch_blockchain_data(): with open("../cache/data/blockchain.json", 'w') as blockchain_data_json: try: blockchain_data = dataset("blockchain_data") data = [ ["Confirmation Time", str( round(blockchain_data["Conf. Time"][0], 2))], ["Block Size", str(round(blockchain_data["Block Size"][0], 2))], ["Transaction Cost", str( round(blockchain_data["TXN Cost"][0], 2))], ["Difficulty", str(round(blockchain_data["Difficulty"][0], 2))], ["Transactions per Day", str(round( blockchain_data["TXNs per Day"][0], 2))], ["Hash Rate (GH/s)", str(round(blockchain_data["Hash Rate (GH/s)"][0], 2))], ["Market Capitalization", str(round( blockchain_data["Market Cap"][0], 2))], ["Miners Revenue", str( round(blockchain_data["Miners Revenue"][0], 2))], ["Transactions per Block", str(round( blockchain_data["TXNs per Block"][0], 2))], ["Unique Addresses", str(round( blockchain_data["Unique Addresses"][0], 2))], ["Total Bitcoin", str( round(blockchain_data["Total BTC"][0], 2))], ["Transaction Fees", str( round(blockchain_data["TXN Fees"][0], 2))] ] blockchain_data_json.write(json.dumps({ "error": False, "data": list(sorted(data, key=lambda i: len(i[0]))) }, indent=2)) except: blockchain_data_json.write(json.dumps({ "error": True, "data": [] }, indent=2))