Пример #1
0
    def display_IntraDay_Data(self, company_name, interval_time):
        try:
            collection = ''
            if interval_time == '1sec':
                collection = 'IntraDay1 secs'
            elif interval_time == '1min':
                collection = 'IntraDay1 min'
            elif interval_time == '5min':
                collection = 'IntraDay5 mins'
            elif interval_time == '15min':
                collection = 'IntraDay15 mins'
            elif interval_time == '30min':
                collection = 'IntraDay30 mins'
            elif interval_time == '1hr':
                collection = 'IntraDay1 hour'
            elif interval_time == '4hr':
                collection = 'IntraDay4 hours'

            client = mongodb.MongoClient(mongodb.MongoIP, mongodb.MonngoPort)
            db = client[str(mongodb.MongoStore)]

            coll_names = db.list_collection_names()

            value = mongodb.ReadValue(collection, company_name)['Data']
            collectionP = collection + "Predict"

            if coll_names.__contains__(collectionP):
                valueP = mongodb.ReadValue(collectionP, company_name)['Data']
            df = pd.DataFrame(eval(value))
            dfP = pd.DataFrame(eval(valueP))
            # date_filter = (df['date'].max()).split(' ')[0]
            # dt = parser.parse(date_filter).date()
            df.rename(columns={
                0: "date",
                1: "open",
                2: "high",
                3: "low",
                4: "close",
                5: "volume"
            },
                      inplace=True)
            # df.rename(columns={0: "open", 1: "high", 2: "low", 3: "close",
            #                    4: "volume",5:""},inplace=True)
            # df['date'] = pd.to_datetime(df['date'])
            # df['_date'] = [d.date() for d in df['date']]
            # df['_time'] = [t.time() for t in df['date']]
            # df['date'] = df['date'].astype(str)
            # df['_date'] = df['_date'].astype(str)
            # df['_time'] = df['_time'].astype(str)
            # p_df = self.temp(company_name, date_filter)
            # final_df = pd.merge(df, p_df, how='left', left_on='date', right_on='date')
            # final_df = display_data().functionCalling(final_df)
            # final_df = final_df.fillna('')
            df = pd.concat([dfP, df], axis=1)
            return df.to_dict(orient='list')
            # return temp_list
        except Exception as e:
            print(sys.exc_info())
            return str(e)
Пример #2
0
    def next_day_prediction(self):
        collectionname = 'IntraDay'
        for com in self.CompanyP:
            value = mongodb.ReadValue(collectionname, com)['Data']
            df = pd.DataFrame(eval(value))
            # print(df)
            next_date = DataFeed().getNextDate((df['date'].max()).split(' ')[0])
            df.rename(columns={"1. open": "open", "2. high": "high", "3. low": "low", "4. close": "close",
                               "5. volume": "volume"}, inplace=True)

            if 'volume' in df.columns:
                del df['volume']
            dataframe = df.reset_index(drop=True)
            dates = dataframe['date'].copy()
            del dataframe['date']
            seedValue = dataframe.tail(1)
            dataframe, scaler = stocksLSTM.ScaleDataSet(dataframe)
            dataframe = stocksLSTM.prepareDataSet(dataframe)
            model, details = stocksLSTM.trainModel(dataframe)
            seedValue, _ = stocksLSTM.ScaleDataSet(seedValue, scaler)
            p_df = stocksLSTM.predictfulDay(model, details, seedValue)
            p_df = stocksLSTM.deScaleData(p_df, scaler)
            rng = pd.date_range(str(next_date) + ' ' + '09:35:00', periods=100, freq='5min')
            ts = pd.Series(rng)
            p_df['date'] = ts
            p_df['date'] = p_df['date'].astype(str)
            # print(p_df)
            mongodb.UpdateValue('FuturePrediction', com, p_df.to_dict(orient='list'))
Пример #3
0
 def temp(self, company_name, filter_date):
     try:
         collectionname = 'PredictionStore'
         value = mongodb.ReadValue(collectionname, company_name + ' ' +
                                   str(filter_date))['Data']
         df = pd.DataFrame(eval(value))
     except:
         df = pd.DataFrame(
             [], columns=['date', 'highP', 'lowP', 'openP', 'closeP'])
     return df
Пример #4
0
 def display_Daily_Data(self, company_name):
     try:
         collection = 'Daily'
         value = mongodb.ReadValue(collection, company_name)['Data']
         df = pd.DataFrame(eval(value))
         df.rename(columns={
             "1. open": "open",
             "2. high": "high",
             "3. low": "low",
             "4. close": "close"
         },
                   inplace=True)
         df = df.tail(30)
         return df.to_dict(orient='list')
     except Exception as e:
         return 'False'
Пример #5
0
 def predict(self, company):
     try:
         collectionname = 'FuturePrediction'
         value = mongodb.ReadValue(collectionname, company)['Data']
         df = pd.DataFrame(eval(value))
         df.rename(columns={
             "openP": "open",
             "highP": "high",
             "lowP": "low",
             "closeP": "close",
             "volumeP": "volume"
         },
                   inplace=True)
         return df.head().to_dict(orient='list')
     except Exception as e:
         print(str(e))
         return str(e)
Пример #6
0
    def same_day_prediction(self):
        collectionname = 'IntraDay'
        for com in self.CompanyP:
            value = mongodb.ReadValue(collectionname, com)['Data']
            df = pd.DataFrame(eval(value))
            # print(df)
            next_date = DataFeed().getNextDate(
                (df['date'].max()).split(' ')[0])
            df.rename(columns={
                "1. open": "open",
                "2. high": "high",
                "3. low": "low",
                "4. close": "close",
                "5. volume": "volume"
            },
                      inplace=True)
            if 'volume' in df.columns:
                del df['volume']
            dataframe = df.reset_index(drop=True)
            dates = dataframe['date'].copy()
            del dataframe['date']

            testEnd = dataframe.iloc[312:].copy()
            trainStart = dataframe.drop(dataframe.index[312:])

            trainStart, scaler = stocksLSTM.ScaleDataSet(trainStart)
            testEnd, _ = stocksLSTM.ScaleDataSet(testEnd, scaler)

            # testEnd = testEnd.shift(-1)
            # testEnd = testEnd.dropna()
            # testEnd.reset_index(drop=True, inplace=True)
            trainStart = stocksLSTM.prepareDataSet(trainStart)
            model, details = stocksLSTM.trainModel(trainStart)

            presults = stocksLSTM.predict(model, testEnd)
            presults = stocksLSTM.deScaleData(presults, scaler)
            ndates = pd.DataFrame(dates[312:], columns=['date'])
            # ndates = ndates.shift(-1)
            # ndates = ndates.dropna()
            ndates.reset_index(drop=True, inplace=True)
            presults = pd.concat([presults, ndates], axis=1)

            date_filter = (presults['date'].max()).split(' ')[0]
            mongodb.UpdateValue('PredictionStore',
                                com + ' ' + str(date_filter),
                                presults.to_dict(orient='list'))
Пример #7
0
 def display_Daily_Data(self, company_name):
     try:
         collection = 'Daily'
         value = mongodb.ReadValue(collection, company_name)['Data']
         df = pd.DataFrame(eval(value))
         df.rename(columns={
             "1. open": "open",
             "2. high": "high",
             "3. low": "low",
             "4. close": "close",
             "5. volume": "volume"
         },
                   inplace=True)
         df = display_data().functionCalling(df)
         return df.dropna().to_dict(orient='list')
     except Exception as e:
         print(str(e))
         return str(e)
Пример #8
0
def getData_intraDay(stockname='aapl'):
    value = mongodb.ReadValue('IntraDay', 'aapl')['Data']
    df = pd.DataFrame(eval(value), )
    # print(df)

    df.rename(columns={
        "1. open": "open",
        "2. high": "high",
        "3. low": "low",
        "4. close": "close",
        "5. volume": "volume"
    },
              inplace=True)
    #
    # if 'volume' in df.columns:
    #     del df['volume']

    dataframe = df.reset_index(drop=True)
    return dataframe
Пример #9
0
    def selected_predict(self, company_name, start_date, end_date,
                         nopredictions):
        try:
            collectionname = 'IntraDay'
            t1 = start_date.split(' ')[1]
            t2 = end_date.split(' ')[1]
            FMT = '%H:%M:%S'
            tdelta = datetime.strptime(t2, FMT) - datetime.strptime(t1, FMT)
            total_minutes = int(tdelta.total_seconds() / 60)
            value = mongodb.ReadValue(collectionname, company_name)['Data']
            df = pd.DataFrame(eval(value))
            df.rename(columns={
                "1. open": "open",
                "2. high": "high",
                "3. low": "low",
                "4. close": "close",
                "5. volume": "volume"
            },
                      inplace=True)

            if 'volume' in df.columns:
                del df['volume']

            test_df = df[(df['date'] >= start_date) & (df['date'] <= end_date)]

            max_date = (test_df['date'].max()).split(' ')[0]
            max_time = (test_df['date'].max()).split(' ')[1]

            testEnd = test_df
            trainStart = df.tail(312)

            # dates = df['date'].copy()
            del testEnd['date']
            del trainStart['date']

            trainStart, scaler = stocksLSTM.ScaleDataSet(trainStart)
            testEnd, _ = stocksLSTM.ScaleDataSet(testEnd, scaler)

            trainStart = stocksLSTM.prepareDataSet(trainStart)

            model, details = stocksLSTM.trainModel(trainStart)

            presults = stocksLSTM.predict(model, testEnd)
            presults = stocksLSTM.deScaleData(presults, scaler)

            temp_time = datetime.strptime(max_time, "%H:%M:%S")
            time = temp_time.time()
            gen_date = None
            rng = None
            global frequency
            global points

            if nopredictions == 5:
                frequency = '5min'
                points = total_minutes / 5
            elif nopredictions == 15:
                frequency = '15min'
                points = total_minutes / 15
            elif nopredictions == 30:
                frequency = '30min'
                points = total_minutes / 30
            elif nopredictions == 60:
                frequency = '60min'
                points = total_minutes / 60

            if time.hour == 16:
                gen_date = self.getNextDate(max_date)
                rng = pd.date_range(str(gen_date) + ' ' + '09:35:00',
                                    periods=points,
                                    freq=frequency)
            else:
                rng = pd.date_range(str(max_date) + ' ' + str(max_time),
                                    periods=points,
                                    freq=frequency)

            ts = pd.Series(rng)
            presults['date'] = ts
            presults['date'] = presults['date'].astype(str)
            presults.rename(columns={
                "openP": "open",
                "highP": "high",
                "lowP": "low",
                "closeP": "close"
            },
                            inplace=True)
            return presults.to_dict(orient='list')
        except Exception as e:
            print(str(e))
            return 'False'
Пример #10
0
import pandas as pd
import mongodb
value = mongodb.ReadValue('Daily', 'aapl')['Data']
df = pd.DataFrame(eval(value))
d = pd.DataFrame()
d = df.iloc[1]
d = df.iloc[2]
d = df.iloc[3]
print(d)
df = pd.DataFrame()
Пример #11
0
    def same_day_prediction(self):
        collectionname = ['IntraDay5 mins', 'IntraDay4 hours']
        for col in collectionname:
            for com in self.CompanyP:
                value = mongodb.ReadValue(col, com)['Data']
                df = pd.DataFrame(eval(value))
                # print(df)
                # df = {"date": ['20190502  13:30:00', '20190502  16:00:00'], "open": [209.95, 208.65],
                #       "high": [212.65, 210.29], "low": [208.13, 208.41], "close": [208.63, 209.17],
                #       "volume": [149612, 100915]}
                # next_date = DataFeed().getNextDate((df['date'].max()).split(' ')[0])
                df.rename(columns={
                    0: "date",
                    1: "open",
                    2: "high",
                    3: "low",
                    4: "close",
                    5: "volume"
                },
                          inplace=True)

                if 'volume' in df.columns:
                    del df['volume']

                dataframe = df.reset_index(drop=True)
                dates = dataframe['date'].copy()
                signals = dataframe['signal'].copy()
                del dataframe['date']
                del dataframe['signal']

                dfleng = len(dataframe.index) - 1
                testEnd = dataframe.iloc[dfleng:].copy()
                trainStart = dataframe.drop(dataframe.index[dfleng:])

                trainStart, scaler = stocksLSTM.ScaleDataSet(trainStart)
                testEnd, _ = stocksLSTM.ScaleDataSet(testEnd, scaler)

                # testEnd = testEnd.shift(-1)
                # testEnd = testEnd.dropna()
                # testEnd.reset_index(drop=True, inplace=True)
                trainStart = stocksLSTM.prepareDataSet(trainStart)
                model, details = stocksLSTM.trainModel(trainStart)

                presults = stocksLSTM.predict(model, testEnd)
                presults = stocksLSTM.deScaleData(presults, scaler)
                ndates = pd.DataFrame(dates[dfleng:], columns=['date'])
                nsignals = pd.DataFrame(signals[dfleng:], columns=['signal'])

                # ndates = ndates.shift(-1)
                # ndates = ndates.dropna()
                ndates.reset_index(drop=True, inplace=True)
                nsignals.reset_index(drop=True, inplace=True)
                presults = pd.concat([presults, ndates], axis=1)
                presults = pd.concat([presults, nsignals], axis=1)
                print(presults)
                presults = pd.DataFrame(presults)
                presults.rename(columns={
                    "date": "dateP",
                    "open": "openP",
                    "high": "highP",
                    "low": "lowP",
                    "close": "closeP",
                    "signal": "signalP"
                },
                                inplace=True)
                presults1 = self.strategy(presults)

                df.reset_index(drop=True, inplace=True)
                presults = pd.concat([presults, df], axis=1)
                print(presults1)
                date_filter = (presults['date'].max()).split(' ')[0]
                # mongodb.UpdateValue(col+"Predict", com + ' ' + str(date_filter), presults1.to_dict(orient='list'))
                mongodb.UpdateValue(col + "Predict", com,
                                    presults1.to_dict(orient='list'))
Пример #12
0
    def display_IntraDay_Data(self, company_name, barSize, counter):
        try:
            collection = ''
            if barSize == '5 secs':
                collection = 'IntraDay_5s'
            elif barSize == '15 secs':
                collection = 'IntraDay_15s'
            elif barSize == '30 secs':
                collection = 'IntraDay_30s'
            elif barSize == '1 min':
                collection = 'IntraDay_1m'
            elif barSize == '2 min':
                collection = 'IntraDay_2m'
            elif barSize == '3 min':
                collection = 'IntraDay_3m'
            elif barSize == '5 min':
                collection = 'IntraDay_5m'
            elif barSize == '15 min':
                collection = 'IntraDay_15m'
            elif barSize == '30 min':
                collection = 'IntraDay_30m'
            elif barSize == '1 hour':
                collection = 'IntraDay_1h'
            elif barSize == '1 day':
                collection = 'IntraDay'

            value = mongodb.ReadValue(collection, company_name)['Data']
            df = pd.DataFrame(eval(value))
            # data = df[(df['date'] > start_date) & (df['date'] < end_date)]

            date_filter = (df['date'].max()).split(' ')[0]
            dt = parser.parse(date_filter).date()

            df.rename(columns={
                "1. open": "open",
                "2. high": "high",
                "3. low": "low",
                "4. close": "close"
            },
                      inplace=True)

            df['date'] = pd.to_datetime(df['date'])

            df['_date'] = [d.date() for d in df['date']]
            df['_time'] = [t.time() for t in df['date']]

            df['date'] = df['date'].astype(str)
            df['_date'] = df['_date'].astype(str)
            df['_time'] = df['_time'].astype(str)

            filter_date = dt - timedelta(days=int(counter))

            p_df = self.temp(company_name, filter_date)
            # p_df = pd.DataFrame(eval(value))
            # p_df.rename(columns={"date": "dateP"}, inplace=True)
            final_df = pd.merge(df,
                                p_df,
                                how='left',
                                left_on='date',
                                right_on='date')
            # print(final_df)
            final_df = final_df.fillna('')
            # temp_list = [data.to_dict(orient='list'), p_df.to_dict(orient='list')]
            #
            # final_df = pd.concat([data,p_df])
            # return str(final_df.to_dict(orient='list'))
            final_df = final_df[final_df['date'].str.contains(
                str(filter_date))]
            return final_df.to_dict(orient='list')
            # return temp_list
        except Exception as e:
            return 'False'