def histdata(): a = datetime.datetime.now() a = a.strftime('%Y-%m-%d') namasaham = request.form['namasaham'] tgl1 = request.form['tanggal1'] tgl2 = request.form['tanggal2'] def convert_date(date): date = datetime.datetime.strptime(date, '%Y-%m-%d') tanggal = date.strftime('%d') if tanggal[0] == str(0): tanggal1 = int(tanggal[1]) else: tanggal1 = int(tanggal) bulan = date.strftime('%m') if bulan[0] == str(0): bulan1 = int(bulan[1]) else: bulan1 = int(bulan) tahun = date.strftime('%Y') tahun1 = int(tahun) tanggal_lengkap = str(tahun + '-' + bulan + '-' + tanggal) return tanggal1, bulan1, tahun1, tanggal_lengkap tgl1_1, bulan1_1, tahun1_1, tgl_lengkap1 = convert_date(tgl1) tgl2_1, bulan2_1, tahun2_1, tgl_lengkap2 = convert_date(tgl2) #import data stock price real_saham = Fetcher(namasaham + ".JK", [tahun1_1, bulan1_1, tgl1_1], [tahun2_1, bulan2_1, tgl2_1], interval="1d") real_saham = real_saham.getHistorical() real_saham = real_saham.dropna() #plot data plt.plot(real_saham['Date'], real_saham['Open'], 'blue') plt.title('Plot Stock Price of {}'.format(namasaham)) plt.xlabel('Date') plt.ylabel('Price (Rp)') plt.xticks(real_saham['Date'], rotation=90) plt.tight_layout() #filename b = datetime.datetime.now() namafile = (str(b).split('.'))[-1] addressplot = './storage/{}.png'.format(namafile) urlplot = '/fileupload/{}.png'.format(namafile) plt.savefig(addressplot) plot = urlplot plt.close() return render_template('histdata.html', tables=real_saham.to_html(), a=a, tgl1=tgl_lengkap1, tgl2=tgl_lengkap2, namasaham=namasaham, plot=plot)
def post(): K.clear_session() namasaham = request.form['namasaham'] model = joblib.load('model' + namasaham) #split tanggal,bulan,tahun date = request.form['tanggal'] date = datetime.datetime.strptime(date, '%Y-%m-%d') tanggal = date.strftime('%d') if tanggal[0] == str(0): tanggal1 = int(tanggal[1]) else: tanggal1 = int(tanggal) print(tanggal1) bulan = date.strftime('%m') if bulan[0] == str(0): bulan1 = int(bulan[1]) else: bulan1 = int(bulan) tahun = date.strftime('%Y') tahun1 = int(tahun) tanggal_predict = str(tahun + '-' + bulan + '-' + tanggal) #import data stock price real_saham = Fetcher(namasaham + ".JK", [2018, 1, 1], [tahun1, bulan1, tanggal1], interval="1d") real_saham = real_saham.getHistorical() real_saham = real_saham.iloc[:, 0:2] real_saham = real_saham.dropna() #set index and drop data in predict_date real_saham = real_saham.set_index("Date") if tanggal_predict in real_saham.index.values: real_saham = real_saham.drop(tanggal_predict, axis=0) real_saham = real_saham.tail(10) #transform from sklearn.preprocessing import MinMaxScaler sc = MinMaxScaler() saham = sc.fit_transform(real_saham) window = 3 predictX = dataset_predict.createDataset(saham, window) predictX = predictX.reshape(len(saham) - window + 1, window, 1) predictY = model.predict(predictX) #denormalisasi predictY = sc.inverse_transform(predictY) predict_next_day = "Rp. {}".format(int(predictY[-1][0])) price_previous_day = "Rp. {}".format(int(real_saham['Open'][-1])) previous_date = real_saham.index[-1] return render_template('predict.html', predict=predict_next_day, price_previous=price_previous_day, tanggal_predict=tanggal_predict, previous_date=previous_date, namasaham=namasaham)
def get_historical(stock_ticker): data = Fetcher(stock_ticker, [1990, 1, 1]).getHistorical() data['Date'] = pd.to_datetime(data['Date']) data = data.drop(columns=['Open', 'High', 'Low', 'Adj Close', 'Volume']) data['Date'] = pd.to_datetime(data['Date']).values.astype( np.int64) // 10**6 data = data.rename(columns={"Date": "x", "Close": "y"}) data = data.dropna() data = data.to_dict('records') return data
# load model with joblib import numpy as np import pandas as pd namasaham="bbri" namasaham=namasaham.upper() import joblib model=joblib.load('model{}'.format(namasaham)) #dataset from yahoo finance from yahoo_historical import Fetcher real_saham= Fetcher(namasaham+".JK", [2019,6,18], [2019,7,18], interval="1d") real_saham=real_saham.getHistorical() date_and_open=real_saham.iloc[:,0:2] real_saham=real_saham.iloc[:,1:2] real_saham=real_saham.dropna() print(real_saham) from sklearn.preprocessing import MinMaxScaler sc=MinMaxScaler() saham=sc.fit_transform(real_saham) print(saham) def createDataset(data, window): dataX= [] for i in range(len(data)-window): temp = [] for j in range(i, i+window): temp.append(data[j,0]) dataX.append(temp) return np.array(dataX)
##Dataset from yahoo finance from yahoo_historical import Fetcher namasaham="bmri" namasaham=namasaham.upper() saham= Fetcher(namasaham+".JK", [2012,7,12], [2019,7,12], interval="1d") saham=saham.getHistorical() #Open Price saham=saham.iloc[:,1:2] # print(saham) ##Data Preprocessing #delete na values saham=saham.dropna() #split dataset into training and testing percent_train=0.75 trainingset=saham.iloc[:int(len(saham)*percent_train),:] testset=saham.iloc[int(len(saham)*percent_train):,:] # Scale the features from sklearn.preprocessing import MinMaxScaler sc=MinMaxScaler() trainingset=sc.fit_transform(trainingset) testset=sc.fit_transform(testset) # Build trainX and trainY def createDataset(data, window): dataX, dataY = [], []
def dataset(saham,tanggal1,tanggal2): real_saham=Fetcher("{}.JK".format(saham), tanggal1, tanggal2, interval="1d") real_saham=real_saham.getHistorical() real_saham=real_saham.dropna() return real_saham