概述
为了稳定进行交易,通常建议采用多样化得交易工具和交易策略。 这同样是指机器学习模型:创建几个更简单的模型比创建一个复杂的模型更容易。 但是,将这些模型汇集到一个 ONNX 模型可能很困难。
不过,可以在一个 MQL5 程序中组合多个经过训练的 ONNX 模型。 在本文中,赫兹量化软件将研究融合方式之一,称为表决分类器。 我们将向您展示如何轻松地实现这样的融合。
添加图片注释,不超过 140 字(可选)
项目的模型
对于我们的示例,赫兹量化软件将用到两个简单的模型:回归价格预测模型,和分类价格变动预测模型。 模型之间的主要区别在于回归模型预测数量,而分类模型预测分类。
第一个模型是回归。
它依据 2003 年至 2022 年底的 EURUSD D1 数据进行训练。 训练是基于一个 10 OHLC 价格序列进行。 为了提高模型的可训练性,赫兹量化软件对价格进行归常规化,并将序列中的平均价格除以序列中的标准差。 因此,我们将一个序列纳入某个范围,平均值为 0,扩散为 1,这提高了训练期间的收敛性。
结果就是,模型应能预测下一个交易日的收盘价。
模型非常简单。 此处提供的仅用于演示目的。
# Copyright 2023, MetaQuotes Ltd. # https://www.mql5.com from datetime import datetime import MetaTrader5 as mt5 import tensorflow as tf import numpy as np import pandas as pd import tf2onnx from sklearn.model_selection import train_test_split from tqdm import tqdm from sys import argv if not mt5.initialize(): print("initialize() failed, error code =",mt5.last_error()) quit() # we will save generated onnx-file near the our script data_path=argv[0] last_index=data_path.rfind("\\")+1 data_path=data_path[0:last_index] print("data path to save onnx model",data_path) # input parameters inp_model_name = "model.eurusd.D1.10.onnx" inp_history_size = 10 inp_start_date = datetime(2003, 1, 1, 0) inp_end_date = datetime(2023, 1, 1, 0) # get data from client terminal euru