code:
from datetime import datetime, timedelta
import tradermade as tm
from sklearn.preprocessing import StandardScaler
import pandas as pd
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
tm.set_rest_api_key("I1KRGRTMBTTDe9QR7wI_")
now = datetime.utcnow().strftime('%Y-%m-%d-%H:%M')
start = (datetime.utcnow() - timedelta(hours=10)).strftime('%Y-%m-%d-%H:%M')
frames = []
for c in ["USDJPY", "NZDJPY", "SEKJPY"]:
df = tm.timeseries(currency=c, start=start, end=now, interval="hourly", fields=["open", "high", "low","close"])
df.insert(0, "currency", c)
frames.append(df)
df = pd.concat(frames)
currency_dummies = pd.get_dummies(df['currency'], prefix='currency')
df = pd.concat([df, currency_dummies], axis=1)
df.drop('currency', axis=1, inplace=True)
print(df)
df['date'] = pd.to_datetime(df['date']).astype('int64') // 10**9
column_names = df.columns.tolist()
column_names.remove('close')
X = df.drop(column_names, axis=1).values
y = df[['close']].values
scaler_X = StandardScaler()
scaler_Y = StandardScaler()
X = scaler_X.fit_transform(X)
y = scaler_Y.fit_transform(y)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
model = Sequential()
model.add(Dense(64, input_dim=X.shape[1], activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(1, activation='linear'))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(X_train, y_train, epochs=5, batch_size=32, validation_data=(X_test, y_test))
# test on real data
df = tm.timeseries(currency="NOKJPY", start=start, end=now, interval="hourly", fields=["open", "high", "low","close"]).loc[0]
print(df)
df['currency_NOKJPY'] = 1
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M:%S')
df["date"] = df["date"].timestamp()
scaled_data = scaler_X.transform(df)
predictions = model.predict(scaled_data)
print(predictions)