Esempio n. 1
0
def getSymbolData(apiConnector):
    run = True

    db_connection = connect_database()

    while run:

        symbol = symbolList.get()

        if symbol == None:
            print("Breaking")
            symbolList.put(None)
            break
        else:
            start_time = time.time()
            db_cursor = db_connection.cursor()
            print(symbol)
            ts = apiConnector.getDailyTimeSeries(symbol)

            if (ts):
                storeSymbolData(db_cursor, symbol, ts)
                db_connection.commit()
            else:
                print("Error: " + symbol)
            end_time = time.time()
            elapsed_time = end_time - start_time
Esempio n. 2
0
def buildTimeSeriesTable():
    db_connection = connect_database()
    db_cursor = db_connection.cursor()
    db_cursor.execute("DROP TABLE IF EXISTS timeseries_daily")
    db_cursor.execute("CREATE TABLE timeseries_daily ("
                      "symbol TEXT, "
                      "date DATE, "
                      "high NUMERIC(10,2), "
                      "low NUMERIC(10,2), "
                      "volume INTEGER, "
                      "open NUMERIC(10,2), "
                      "close NUMERIC(10,2))")

    disconnect_database(db_cursor, db_connection)
Esempio n. 3
0
def buildSymbolTable():
    db_connection = connect_database()
    db_cursor = db_connection.cursor()
    db_cursor.execute("DROP TABLE IF EXISTS symbols")
    db_cursor.execute("CREATE TABLE symbols ("
                      "symbol TEXT, "
                      "exchange TEXT, "
                      "name TEXT, "
                      "date DATE, "
                      "type TEXT, "
                      "region TEXT, "
                      "currency TEXT)")

    disconnect_database(db_cursor, db_connection)
Esempio n. 4
0
def getTimeSeriesData(production):
    apiConnector = APIConnector(production)
    db_connection = connect_database()
    db_cursor = db_connection.cursor()
    symbolList = getSymbolList(db_cursor)

    for symbol in symbolList:
        print(symbol)
        ts = apiConnector.get5YearTimeSeries(symbol)
        if (ts):
            storeSymbolData(db_cursor, symbol, ts)
            db_connection.commit()
        else:
            print("Error: " + symbol)
Esempio n. 5
0
def similarityWorker(symbol, priceData):
    db_conn = connect_database()
    db_cursor = db_conn.cursor()

    while True:
        active_symbol = symbolQueue.get()

        if active_symbol != None:
            a = priceData[active_symbol]
            print(active_symbol)
            b = priceData[symbol]
            distance = calculateDistance(a, b)
            data = (active_symbol, symbol, distance)
            storeSimilarity(db_cursor, data)
            db_conn.commit()
        else:
            symbolQueue.put(None)
            db_conn.close()
            break
Esempio n. 6
0
def getSymbolData(production):
    apiConnector = APIConnector(production)
    db_connection = connect_database()
    db_cursor = db_connection.cursor()
    #apiResult = apiConnector.getAPIData("/ref-data/symbols")
    apiResult = apiConnector.getSymbolData()
    for result in apiResult:
        db_cursor.execute(
            "INSERT INTO symbols ("
            "symbol, "
            "exchange, "
            "name, "
            "date, "
            "type, "
            "region, "
            "currency) "
            "VALUES (%s, %s, %s, %s, %s, %s, %s)",
            (result["symbol"], result["exchange"], result["name"],
             result["date"], result["type"], result["region"],
             result["currency"]))
        db_connection.commit()
        print(result)
Esempio n. 7
0
    #                       "close) "
    #                       "VALUES (%s,%s,%s,%s,%s,%s,%s)",
    #                       (symbol,
    #                        data["date"],
    #                        data["high"],
    #                        data["low"],
    #                        data["volume"],
    #                        data["open"],
    #                        data["close"]))


if __name__ == "__main__":
    production = True
    buildTimeSeriesTable()
    apiConnector = APIConnector(production)
    db_connection = connect_database()
    db_cursor = db_connection.cursor()
    symbolList = getSymbolList(db_cursor)

    workers = []
    symbolList.put(None)

    for i in range(4):
        p = multiprocessing.Process(target=getSymbolData,
                                    args=(apiConnector, ))
        workers.append(p)
        p.start()

    for p in workers:
        p.join()