| import pandas as pd |
| import numpy as np |
| import time |
| import requests |
| import matplotlib.pyplot as plt |
|
|
| from sklearn.preprocessing import MinMaxScaler |
|
|
| import tensorflow as tf |
| from keras.models import Sequential |
| from keras.layers import Dense,Dropout,Bidirectional |
| from keras.layers import LSTM |
|
|
| data=requests.get('https://api.twelvedata.com/time_series?symbol=BTC/INR&timezone=Asia/Kolkata&start_date=2023-03-01 00:00:00&end_date=2023-03-20 00:00:00&order=ASC&interval=5min&outputsize=5000&apikey=e76157c75c3a42649e168c5c206e88ca').json() |
| |
| data_final=pd.DataFrame(data['values']) |
| |
| scaler=MinMaxScaler(feature_range=(0,1)) |
| scaled_data=scaler.fit_transform(data_final['close'].values.reshape(-1,1)) |
| timeinterval=24 |
| prediction=1 |
|
|
| x_train=[] |
| y_train=[] |
|
|
| for i in range(timeinterval,len(scaled_data)-prediction): |
| x_train.append(scaled_data[i-timeinterval:i,0]) |
| y_train.append(scaled_data[i+prediction,0]) |
|
|
| x_train=np.array(x_train) |
| y_train=np.array(y_train) |
| x_train=np.reshape(x_train,(x_train.shape[0],x_train.shape[1],1)) |
|
|
| model=Sequential() |
|
|
| model.add(Bidirectional(LSTM(256,return_sequences=True,input_shape=(x_train.shape[1],1),activation='relu'))) |
| model.add(Dropout(0.3)) |
| model.add(Bidirectional(LSTM(128,return_sequences=True,activation='tanh'))) |
| model.add(Dropout(0.2)) |
| model.add(Bidirectional(LSTM(64,activation='relu'))) |
| model.add(Dropout(0.1)) |
| model.add(Dense(1,activation='sigmoid')) |
| model.compile(loss='mean_squared_error',optimizer='adam',metrics=['accuracy']) |
| model.fit(x_train,y_train,epochs=15,batch_size=100) |
| predict=[] |
| exchange=[] |
|
|
| i=0 |
| while(i<6): |
| testapi='https://api.twelvedata.com/time_series?symbol=BTC/INR&interval=5min&outputsize=3000&timezone=Asia/Kolkata&order=ASC&apikey=e76157c75c3a42649e168c5c206e88ca' |
| testdata=requests.get(testapi).json() |
| testdatafinal=pd.DataFrame(testdata['values']) |
|
|
| bitcoinprice=pd.to_numeric(testdatafinal['close'],errors='coerce').values |
| testinputs=testdatafinal['close'].values |
| testinputs=testinputs.reshape(-1,1) |
| modelinputs=scaler.fit_transform(testinputs) |
|
|
| x_test=[] |
| for x in range(timeinterval,len(modelinputs)): |
| x_test.append(modelinputs[x-timeinterval:x,0]) |
|
|
| x_test=np.array(x_test) |
| x_test=np.reshape(x_test,(x_test.shape[0],x_test.shape[1],1)) |
| prediction_price=model.predict(x_test) |
| prediction_price=scaler.inverse_transform(prediction_price) |
|
|
| """plt.plot(bitcoinprice,label='Bitcoin Prices') |
| plt.plot(prediction_price,label='Predicted Prices') |
| plt.title('Predicting Bitcoin Price') |
| plt.xlabel('5min Interval') |
| plt.ylabel('Price') |
| plt.legend() |
| plt.show()""" |
| exchangeapi='https://api.twelvedata.com/exchange_rate?symbol=BTC/INR&timezone=Asia/Kolkata&apikey=e76157c75c3a42649e168c5c206e88ca' |
| exchangedata=requests.get(exchangeapi).json() |
| print(exchangedata) |
|
|
| exchangefinal=exchangedata['rate'] |
| exchange.append(exchangefinal) |
|
|
|
|
| lastdata=modelinputs[len(modelinputs)+1-timeinterval:len(modelinputs)+1,0] |
| lastdata=np.array(lastdata) |
| lastdata=np.reshape(lastdata,(1,lastdata.shape[0],1)) |
| prediction=model.predict(lastdata) |
| prediction=scaler.inverse_transform(prediction) |
| predict.append(prediction[0][0]) |
| print(prediction) |
| i+=1 |
| print(i) |
| time.sleep(300) |
|
|
| """testapi='https://api.twelvedata.com/time_series?symbol=BTC/INR&interval=5min&outputsize=3000&apikey=e76157c75c3a42649e168c5c206e88ca' |
| testdata=requests.get(testapi).json() |
| testdatafinal=pd.DataFrame(testdata['values']) |
| |
| bitcoinprice=pd.to_numeric(testdatafinal['close'],errors='coerce').values |
| testinputs=testdatafinal['close'].values |
| testinputs=testinputs.reshape(-1,1) |
| modelinputs=scaler.fit_transform(testinputs) |
| |
| x_test=[] |
| for x in range(timeinterval,len(modelinputs)): |
| x_test.append(modelinputs[x-timeinterval:x,0]) |
| |
| x_test=np.array(x_test) |
| x_test=np.reshape(x_test,(x_test.shape[0],x_test.shape[1],1)) |
| prediction_price=model.predict(x_test) |
| prediction_price=scaler.inverse_transform(prediction_price) |
| |
| plt.plot(bitcoinprice,label='Bitcoin Prices') |
| plt.plot(prediction_price,label='Predicted Prices') |
| plt.title('Predicting Bitcoin Price') |
| plt.xlabel('5min Interval') |
| plt.ylabel('Price') |
| plt.legend() |
| plt.show() |
| predict=[] |
| exchange=[] |
| exchangeapi='https://api.twelvedata.com/exchange_rate?symbol=BTC/INR&timezone=Asia/Kolkata&apikey=e76157c75c3a42649e168c5c206e8' |
| exchangedata=requests.get(exchangeapi).json() |
| exchangefinal=pd.DataFrame(exchangedata['rate']) |
| exchange.append(exchangefinal) |
| |
| |
| |
| |
| lastdata=modelinputs[len(modelinputs)+1-timeinterval:len(modelinputs)+1,0] |
| lastdata=np.array(lastdata) |
| lastdata=np.reshape(lastdata,(1,lastdata.shape[0],1)) |
| prediction=model.predict(lastdata) |
| prediction=scaler.inverse_transform(prediction) |
| predict.append(prediction) |
| print(prediction)""" |
|
|
|
|
|
|
| exchange1api='https://api.twelvedata.com/exchange_rate?symbol=BTC/INR&timezone=Asia/Kolkata&apikey=e76157c75c3a42649e168c5c206e88ca' |
| exchange1data=requests.get(exchange1api).json() |
| exchange1final=exchange1data['rate'] |
| exchange.append(exchange1final) |
| exchange.pop(0) |
| print(exchange) |
| print(predict) |
|
|
| plt.plot(exchange,label='Bitcoin Price') |
| plt.plot(predict,label='Predicted Prices') |
| plt.title('Predicting Bitcoin Price') |
| plt.xlabel('5min Interval') |
| plt.ylabel('Price') |
| plt.legend() |
| plt.show() |