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

 
fxsaber #:

检查标准 MA 上的模式,只检查刻度线。

...

工作模式。

仍不清楚的是: onnx 信号如何进入这个工作模板?

 
blef #:

还不清楚:onnx 信号如何进入该工作模板?

通过您对该函数主体的变体。

交易、自动交易系统和交易策略测试论坛

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

fxsaber, 2023.09.13 19:28

// Торговый сигнал.
double SignalONNX( const MqlTick &Tick ) { return(0); }

每个刻度都是输入 - 输出是 ONNX 对交易信号的决定。

上面显示了这样一个函数主体的变体。在 ONNX 的情况下,连接自己的 model.onnx。


EA 模板保持不变。

 
fxsaber #:

通过其身体变体实现这一功能。


每个刻度线都是输入 - 输出是 ONNX 关于交易信号的决定。

该函数的主体变体如上图所示。在 ONNX 的情况下,连接其自身的 model.onnx。


EA 模板保持不变。

即该函数的主体应实现本页上 MQL5 帮助中指定的函数 -https://www.mql5.com/ru/docs/onnx?

Документация по MQL5: ONNX модели
Документация по MQL5: ONNX модели
  • www.mql5.com
ONNX модели - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
blef #:

即该函数的主体应实现本页上 MQL5 帮助中指定的函数 -https://www.mql5.com/ru/docs/onnx?

除了前三个函数,它们负责创建和删除 ONNX 会话。
 
我明白了,谢谢你的解释--我会想办法解决国防部的问题。
 
blef #:

即该函数的主体应实现本页上 MQL5 帮助中指定的函数 -https://www.mql5.com/ru/docs/onnx?

是这样的

// Торговый сигнал.
double SignalONNX( const MqlTick &Tick )
{
  struct ONNX
  {
  public:
    const long Handle;
    
    ONNX( const string FileName ) : Handle(::OnnxCreate(FileName, ONNX_DATA_TYPE_DOUBLE)) {}
    ~ONNX() { ::OnnxRelease(this.Handle); }
  } static const Model("model.onnx"); // Подключили модель с автоматическим отключением.
  
  OnnxRun(Model.Handle, ONNX_DATA_TYPE_DOUBLE, ...); // Прогоняем данные через модель, получаем результат.
  
  // .... Обрабатываем результат вычислений.
  
  return(0); // Возвращаем торговый сигнал.
}
 
fxsaber #:

差不多吧。


总之,一切都很好。
但为什么函数返回的值是 double?
 

不知何故,它一直在谈论神经网络。

这里 列出了一个 转换器

微软ONNXMLTools可以将模型转换为 ONNX 格式

它能转换以下模型

转换为 ONNX 格式(ONNXMLTools)

通过 ONNXMLTools,您可以将各种机器学习工具包中的模型转换为ONNX 格式。

GitHub 上的 ONNXMLTools代码库 提供了安装和使用说明。

技术支持

目前支持以下工具包:

  • Keras(keras2onnx converter shell);
  • Tensorflow(tf2onnx 转换器 外壳)
  • scikit-learn(skl2onnx 转换器 外壳);
  • Apple Core ML;
  • Spark ML(实验模式);
  • LightGBM
  • libscm;
  • XGBoost;
  • H2O
  • CatBoost

此列表中的非神经网络比神经网络多得多

Документация по MQL5: ONNX модели
Документация по MQL5: ONNX модели
  • www.mql5.com
ONNX модели - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Andrey Dik #:

总之,还不错。
但为什么函数返回的值是 double?

因为最终模板本身可能比原始模板更难处理接收到的交易信号。

交易、自动交易系统和交易策略测试论坛。

交易中的机器学习:理论、模式、实践和算法交易

fxsaber, 2023.09.13 19:28

一般来说,我们已经可以讨论代码层面的东西了。

本来是要讨论模板的。让我们通过。

 

在 ONNX 中,输入数据是向量和矩阵。

对于现成模型的预测,也许可以利用这些特征(矩阵只有一种数据类型,这限制了预测器的选择),但训练 µl 模型是不可能的:任何原始模型都有大量不同的输入参数。

例如,不可能将 RF 驱动到矩阵中:

randomForest( x, y=NULL, xtest=NULL, ytest=NULL

ntree=500

mtry=if (! is.null( y) && ! is.factor(y)) max( floor( ncol( x)/3), 1) else floor( sqrt( ncol( x)))

权重=NULL

replace=TRUE

classwt=NULL

cutoff

strata

sampsize= if ( replace) nrow( x) else ceiling(.632*nrow( x))

nodesize= if (! is.null( y) && ! is.factor( y)) 5 else 1

maxnodes= NULL

importance=FALSE

localImp=FALSE

nPerm=1

proximity

oob.prox=proximity

norm.votes=TRUE

do.trace=FALSE

keep.forest=! is.null( y) && is.null( xtest), c

orr.bias=FALSE keep.inbag=FALSE ...)

因此,只需在 python 中进行训练、测试和其他乐趣,然后转换加载到 µl 中,并由测试人员在 EA 中进行检查。目前还不清楚如何以及在哪里准备用于 µl 测试的预测器,是在 µl 中编写代码,还是转向 python 并从中获取预测器用于预测....,即使如此,这些预测器也与训练模型时使用的预测器相同。