Hello MQL5 community, I've been trying to follow this tutorial on how to use ONNX in your EA's. In the tutorial a neural network was the model of choice, I've used a gradient boosted tree.
Object-oriented programming enables creation of a more compact code that is easy to read and modify. Here we will have a look at the example for three ONNX models.
Alberto Henrique Tacoronte #: 先生们,你们好。谁能帮帮我,因为在 python 进程结束时,出现了以下错误:AttributeError: 'Sequential' object has no attribute 'output_names'(属性错误:'Sequential'对象没有属性'output_names')。我对 python 或编程知之甚少。因此希望得到任何帮助!谢谢。
文章不错。测试数据的预测图令人失望。你还不如跳过所有的 DNN 建模/训练,直接使用与上次已知价格相等的下一个价格预测。我敢打赌,这种微不足道的模型的预测准确率会比你的 DNN 模型高。我建议比较这两个准确率,并在这里展示出来。总的来说,使用 DNN 预测价格是个坏主意。它们更适合价格模式分类(如买入、卖出、持有)。此外,DNN 的权重数量也是一个天文数字。一定是过度拟合了。
谢谢您,弗拉基米尔。
只是为了讨论,如果时间允许,我会修改这个模型,进行分类比较。
如果您有想法,请告诉我。
教程给出了一批SAMPLE_SIZE 数量的 输入,您需要的是一批 input_count 输入。
另外,您的模型没有使用浮点数作为输入,而是使用了双倍、
版主注:由于下面的帖子是从另一个主题移过来的,所以本帖顺序不对。请参阅下面的帖子。
您好,MQL5 社区,我一直在尝试学习如何在 EA 中使用 ONNX 的教程。在教程中,神经网络是首选模型,而我使用的是梯度增强树。
我使用InterpretML Python 软件包建立了模型,并使用ebm2onnx 将其导出到 ONNX。
我将总结模型的训练过程。
1) 模型是在 5 个输入、OHLC 和高度(高度的计算公式为 ((H + L) / 2) - C)的基础上训练的。
2) 该模型是一个二元分类器,旨在将下一根蜡烛分为上涨(1)或下跌(0)。
用于训练模型的数据
3) 然后将模型导出为 ONNX 格式
ONNX 模型表示法。
为了让模型正常工作,我偏离了教程中的代码,不断编辑代码,试图让 ONNX 模型正常工作,但现在我真的不知道自己做错了什么。我一直收到模型句柄无效的错误信息。
我在下面附上了 MQL5 代码。
现在我将总结我代码中偏离教程的步骤,并解释我偏离教程的原因
1) 第 57 行:设置模型输入形状。
在教程中,我们使用了 3 个维度来设置输入和输出形状,即 {1,SAMPLE_SIZE,1};然而,当我采用这种方法时,却不断出现错误,特别是错误 5808。经过通常的跟踪和出错过程,我意识到如果只使用一个维度,即输入的数量,错误就会消失。
2) 第 68 行:设置模型输出形状。
逻辑同上。
我所做的其他偏差不会影响模型,例如,我使用了我认为比教程中的逻辑更直观的逻辑来记录时间。我不需要对输入进行归一化处理,因为这是一个基于树的模型。
如果您能指出我犯的其他错误,我将不胜感激。
关于交易、自动交易系统和测试交易策略的论坛
文章 "如何在 MQL5 中使用 ONNX 模型 "的讨论
Stian Andreassen, 2023.12.08 20:51
教程给出了一批SAMPLE_SIZE 关闭输入的数量,您需要的是一批 input_count 输入。
另外,您的模型没有使用浮点数作为输入,而是使用了双倍、
感谢您的分享,我已经应用了您指出的方法,但错误仍然存在。
一批 input_count 输入。

将输入设置为双
错误信息。
Hello MQL5 community, I've been trying to follow this tutorial on how to use ONNX in your EA's. In the tutorial a neural network was the model of choice, I've used a gradient boosted tree.
我使用InterpretML Python 软件包建立了模型,并使用ebm2onnx 将其导出到 ONNX。
我将总结一下模型的训练过程。
1) 模型是在 5 个输入、OHLC 和高度(高度的计算公式为 ((H + L) / 2) - C)的基础上训练的。
2) 该模型是一个二元分类器,旨在将下一根蜡烛分为上涨(1)或下跌(0)。
用于训练模型的数据
3) 然后将模型导出为 ONNX 格式
ONNX 模型表示法。
为了让模型正常工作,我偏离了教程中的代码,不断编辑代码,试图让 ONNX 模型正常工作,但现在我真的不知道自己做错了什么。我一直收到模型句柄无效的错误信息。
我在下面附上了 MQL5 代码。
现在我将总结我代码中偏离教程的步骤,并解释我偏离教程的原因
1) 第 57 行:设置模型输入形状。
在教程中,我们使用了 3 个维度来设置输入和输出形状,即 {1,SAMPLE_SIZE,1};然而,当我采用这种方法时,却不断出现错误,特别是错误 5808。经过通常的跟踪和出错过程,我意识到如果只使用一个维度,即输入的数量,错误就会消失。
2) 第 68 行:设置模型输出形状。
逻辑同上。
我所做的其他偏差不会影响模型,例如,我使用了我认为比教程中的逻辑更直观的逻辑来记录时间。我不需要对输入进行归一化处理,因为这是一个基于树的模型。
如果您能指出我犯的其他错误,我将不胜感激。
感谢您的分享,我已经应用了您指出的方法,但错误仍然存在。
一批 input_count 输入。
将输入设置为双
错误信息。
似乎 MQL5 还不支持(或者说ONNXMLTools 还不支持)EBM 的 ONNX:
https://www.mql5.com/zh/docs/onnx/onnx_conversion
如果您参考 https://www.mql5.com/zh/articles/12484 上的 ONNX 附件(尤其是使用 4 个输入的model.eurusd.D1.10.class.onnx),并使用Netron(网络版)将 onnx 文件可视化,您就会发现其中的差异。
我认为以下两篇文章也有助于您进一步理解:
Scikit-learn 库的回归模型及其向 ONNX 的导出
Scikit-learn 库中的分类模型及其向 ONNX 的导出
大家好、
我们正试图在一个时间点(批量大小为 32)使用带有 11 个预测器的 keras神经网络 对 XauUsd 进行预测(输出为介于 0 和 1 之间的单数)。首先,我们从 OnnxCreatefrombuffer 加载(因为 OnnxCreate 本身对我们不起作用),然后在 OnnxRun 阶段总是出错,我将这两个错误都附在下面。如果能帮助我们确定输入要重塑到什么维度,预测矢量要采用什么格式(如果它应该是矢量的话),或者提供语法方面的帮助或建议以帮助解决这些错误,那就太好了。我们已经尝试过重塑 32、1、11 向量的各种组合,但都不成功,而且真的不知道下一步该怎么做。非常感谢任何可以提供帮助的人!本。
错误 5808
ONNX:输入参数 #0 张量的维度 [0] 不正确,尝试使用 OnnxSetInputShape。
ONNX:输入参数 #0 的大小无效,预计为 1408 字节,而不是 480 字节
你好,我尝试使用
OnnxModelInfo.mq5文件脚本,但无法正常工作,我做错了什么?
我复制粘贴了 OnnxModelInfo 脚本,并保存到了 de Files 文件夹。
我有一个 onnx 模型(附后)
当我编译脚本时,出现了 21 个错误。
谁能帮帮我?请
新文章《在 MQL5 中使用 ONNX 模型》已发布:
作者:MetaQuotes
先生们,你们好。
有人能帮助我吗,因为在使用 python 的过程结束时,出现了以下错误:AttributeError: 'Sequential' object has no attribute 'output_names'(属性错误:'Sequential'对象没有属性 'output_names')。我对 python 或编程知之甚少。因此希望得到任何帮助!谢谢。
你好,Alberto,请发布您代码中出现错误的部分[使用CODE 按钮(Alt -S)],以便了解Python(MetaTrader for Python|ONNX Models) 的人指出解决方案...