交易中的机器学习:理论、模型、实践和算法交易 - 页 2956

 

OnnxTypeInfo 帮助 缺少对 dimensions[] 字段的解释。至少在 ONNX.Price.Prediction 项目(MT5 版本 3621)的示例中解释一下这个数组的含义会更好:

   OnnxTypeInfo otype;
   OnnxGetInputTypeInfo(handle, 0, otype);
   Print(otype.type == ONNX_TYPE_TENSOR);               // true
   Print(otype.element_type == ONNX_DATA_TYPE_FLOAT);   // true
   ArrayPrint(otype.dimensions);                        // -1 -1 4
   OnnxGetOutputTypeInfo(handle, 0, otype);
   Print(otype.type == ONNX_TYPE_TENSOR);               // true
   Print(otype.element_type == ONNX_DATA_TYPE_FLOAT);   // true  
   ArrayPrint(otype.dimensions);                        // -1 1
 
Bohdan Suvorov #:
这是我在自己的神经元上实现的 EA

我想知道这是一个什么样的程序库?

#import "markettrader.dll"
  void AlertT(string &msg,int len);
 
Aleksey Nikolayev #:

OnnxTypeInfo 帮助 缺少对 dimensions[] 字段的解释。至少在 ONNX.Price.Prediction 项目(MT5 版本 3621)的示例中解释一下这个数组的含义会更好:

用 python 术语来说,这是对象的形状。

 
Rashid Umarov #:

用 python 术语来说,这就是对象的形状。

那么负数和数组长度比参数维数大一个单位的事实就会引起混淆。

此外,参数的形状是在脚本中设置的,而不是从模型属性中获取的。这是错误还是功能?

 
Aleksey Nikolayev #:

那么负数和数组长度比参数测量次数多一个单位的事实就会引起混淆。

此外,参数的形状是在脚本中设置的,而不是从模型属性中获取的。这是错误还是功能?

是的,我忘了负值的问题。我会检查的。

 

大家好!

我在手动交易 模式下的交易取得了一定的成功,但我仍然希望交易过程能够自动化。考虑再三,我决定就机器学习问题进行咨询。谁使用了哪些模型,取得了哪些成功?我对这个问题的看法如下:

基本思路是,需要预测的不是趋势的方向,而是三个点:买入、卖出和等待。即 1(买入)、-1(卖出)、0(如果有交易,则保持当前交易;如果没有交易,则什么也不做)。最好使用分钟时间序列,这一点我还没想好。重要的是,要考虑到过去一定数量条形图的时间序列,这样才能考虑到历史上的指 标,否则它们的动态就不清楚。我有大约 30 个这样的指标,可能很难将它们牢记在心,但我还是设法用自己的双手进行交易。

据我所知,机器学习中有分类任务,例如,趋势是向上还是向下,或者预测一个特定值,比如价格会在这里出现这样的误差。但在金融市场中,任务就有些不同了--在最大限度地提高利润的同时,尽量减少缩水。我还没有见过这种小规模学习的模型。

当每笔可能的交易的规模最大化、损失最小化、进入和退出交易的准确性高时,利润就会更多:

考虑到点差,利润 = 正交易 - 负交易、

其中,正向交易的总和应趋于最大值,而亏损交易的总和应趋于零。那么,在其他条件(如手数)相同的情况下,利润将趋于最大值。

也就是说,在我看来,应该有这样一个模型,这样输入和输出才会更准确。

 
Aleksey Nikolayev #:

那么负数和数组长度比参数测量次数多一个单位的事实就会引起混淆。

此外,参数的形状是在脚本中设置的,而不是从模型属性中获取的。这是错误还是功能?

尺寸的负值意味着该尺寸不是固定的,而是通过外部参数设置的。因此,脚本应明确指定维度

 

很明显,在 MQL5 中使用 ONNX 模型的例子只是说明了这一点,仅此而已。不过,我还是想提请大家注意一个非常重要的错误。在机器学习中,第一阶段是预处理。这包括从琐碎的归一化到降维 以及其他工程技巧等很多方面。在这一阶段,任何预测器和目标转换的主要规则都是在训练集上计算所有转换参数(如均值、中位数、SD、Mad 等)。测试集和新数据将使用训练集上获得的参数进行处理。

因此,在本示例中,有必要在训练集上计算平均值/中位值,将这些数据传递给生成谓词的部分,并使用这些参数处理新数据。然后,进行去规范化处理,得到预测价格的真实值。这个顺序非常重要。

很明显,没有人将实际价格输入到模型的输入端,但这已经很具体了。

祝您好运

 
Slava #:

负维度值表示该维度不是固定的,而是通过外部参数设置的。因此,脚本必须明确指定维度

谢谢,现在更清楚了。

 
Elvin Nasirov #:

据我所知,在机器学习中存在分类任务,例如,趋势是向上还是向下,或者预测一个特定值,如价格将在这里出现这样那样的误差。但在金融市场中,任务就有些不同了--在最大化利润的同时最小化缩水。我还没见过这种树莓学习模型。

这个问题可以通过在训练 MO 模型时使用适当的损失函数来解决。这有两个问题。首先是技术问题--MO 软件包中的标准损失函数与利润最大化只是间接相关,因此需要创建自定义函数。要做到这一点相当困难--你需要在代码层面上对 MO 软件包有很好的理解。如果这个问题解决了,可能还会有第二个数学问题,即自定义损失函数不利于模型训练。

如果有人解决了这样一个难题,他们不太可能分享解决方案。