新版MetaTrader 5平台build 3980:其他改进和修复
from sys import argv data_path=argv[0] last_index=data_path.rfind("\\")+1 data_path=data_path[0:last_index] from sklearn.datasets import load_iris iris_dataset = load_iris() from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0) from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=1) knn.fit(X_train, y_train) # 转换 为 ONNX格式 from skl2onnx import convert_sklearn from skl2onnx.common.data_types import FloatTensorType initial_type = [('float_input', FloatTensorType([None, 4]))] onx = convert_sklearn(knn, initial_types=initial_type) path = data_path+"iris.onnx" with open(path, "wb") as f: f.write(onx.SerializeToString())
python 代码
我的新报告一直是空白页显示不出来
MetaTrader 5平台更新版于2023年9月21日星期四进行发布。此次更新包含了许多平台的修复和改进。
MetaTrader 5客户端build 3980
对于在输出层提供Map序列(ONNX_TYPE_MAP的ONNX_TYPE_SEQUENCE)的ONNX模型,应将动态或固定的结构数组作为输出参数传递。此结构的前两个字段必须与ONNX_TYPE_MAP键和值类型匹配,并且是固定数组或动态数组。
考虑由以下Python脚本创建的iris.onnx模型:
在MetaEditor中打开创建的onnx文件:
Map序列作为“output_probability”传递。它有一个INT64类型键(对应于MQL5中的long)和float类型值。要从此输出接收数据,请声明以下结构:
这里我们使用具有适当类型的动态数组。在这种情况下,我们可以使用固定数组,因为这个模型的Map始终包含3个键+值对。
由于返回Map序列,因此应将此类结构的数组作为参数传递,以接收来自output_probability输出的数据。根据特定模型的属性,该数组可以是动态数组可以是固定数组。示例:
外汇EA网页端外汇EA
更新将通过实时更新系统提供。