Ejemplo n.º 1
0
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))
Ejemplo n.º 2
0
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]
Ejemplo n.º 3
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))
Ejemplo n.º 4
0
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"]
                }))
Ejemplo n.º 5
0
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))