# Copyright 2023, MetaQuotes Ltd. # https://www.mql5.com import MetaTrader5 as mt5 import numpy as np import onnxruntime as ort import pandas as pd from sys import argv if not mt5.initialize(): print("initialize() failed, error code =",mt5.last_error()) quit() # you code here # data_path=argv[0] last_index=data_path.rfind("\\")+1 data_path=data_path[0:last_index] print("data path to load onnx model",data_path) eurusd_rates = mt5.copy_rates_from_pos("EURUSD", mt5.TIMEFRAME_H1, 1, 10) #print(eurusd_rates) df = pd.DataFrame(eurusd_rates) X = df[['open', 'high', 'low', 'close']].values X = np.expand_dims(X, axis=0) #print(X) m = X.mean(axis=1, keepdims=True) #print(m) s = X.std(axis=1, keepdims=True) #print(s) X_norm = (X - m) / s #print(X_norm) model_path = data_path+"model2.onnx" ort_sess = ort.InferenceSession(model_path) output_names = [out.name for out in ort_sess.get_outputs()] outputs = ort_sess.run(output_names, {'lstm_input': X_norm.astype(np.float32)}) y_pred_norm = outputs[0] print("raw output:",y_pred_norm) # --- y_pred ---{ # y_pred = np.round(y_pred_norm.flatten() * ((s[:, 0, 1] - s[:, 0, 0]) - (s[:, 0, 0] - s[:, 0, 2])) + ((m[:, 0, 1] - m[:, 0, 0]) - (m[:, 0, 0] - m[:, 0, 2])), decimals=5) # --- y_pred = np.round(y_pred_norm.flatten(), decimals=5) # --- y_pred ---} print("predicted:",y_pred) mt5.shutdown()