L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 3243

 
fxsaber #:

Vérification du modèle sur un MA standard, uniquement sur les ticks.

...

Un modèle qui fonctionne.

et toujours pas clair : comment onnx-signal va-t-il s'intégrer dans ce modèle de travail ?

 
blef #:

et toujours pas clair : comment onnx-signal sera intégré dans ce modèle de travail ?

Par le biais de votre variante du corps de cette fonction.

Chaque tick vient à l'entrée - la sortie est ONNX-décision sur le signal de trading.

Une variante du corps d'une telle fonction a été montrée ci-dessus. Dans le cas d'ONNX est connecté son propre modèle.onnx.


Le modèle EA reste inchangé.

 
fxsaber #:

Par le biais de sa variante corporelle de cette fonction.


Chaque tick vient à l'entrée - la sortie est la décision d'ONNX sur le signal de trading.

La variante du corps d'une telle fonction est illustrée ci-dessus. Dans le cas d'ONNX, son propre modèle.onnx est connecté.


Le modèle EA reste inchangé.

c'est-à-dire que le corps de cette fonction doit implémenter les fonctions spécifiées dans l'aide MQL5 sur cette page - https://www.mql5.com/ru/docs/onnx?

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

c'est-à-dire que le corps de cette fonction doit mettre en œuvre les fonctions spécifiées dans l'aide MQL5 sur cette page - https://www.mql5.com/ru/docs/onnx?

A l'exception des trois premières, qui sont responsables de la création et de la suppression de la session ONNX.
 
Je vois, merci pour la clarification - j'essaierai de faire quelque chose pour le ministère de la défense.
 
blef #:

c'est-à-dire que le corps de cette fonction doit mettre en œuvre les fonctions spécifiées dans l'aide MQL5 sur cette page - https://www.mql5.com/ru/docs/onnx?

C'est ainsi que cela se passe.

// Торговый сигнал.
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 #:

C'est à peu près ça.


Dans l'ensemble, c'est bien.
Mais pourquoi la valeur retournée par la fonction est-elle double ?
 

Pour une raison ou une autre, il est toujours question de réseaux neuronaux.

Mais il existe un convertisseur répertorié ici

ONNXMLTools de Microsoft vous permet de convertir des modèles au format ONNX.

Il est capable de convertir les modèles suivants

Conversion au format ONNX (ONNXMLTools)

ONNXMLTools vous permet de convertir des modèles provenant de divers outils d'apprentissage automatique au formatONNX.

Les instructions d'installation et d'utilisation sont disponibles dans ledépôt ONNXMLToolssur GitHub.

Support

Les toolkits suivants sont actuellement supportés :

  • Keras( shell deconversion keras2onnx) ;
  • Tensorflow( shell de transduction tf2onnx) ;
  • scikit-learn( shell de conversion skl2onnx) ;
  • Apple Core ML ;
  • Spark ML (mode expérimental) ;
  • LightGBM
  • libscm ;
  • XGBoost ;
  • H2O
  • CatBoost

Il y a beaucoup plus de réseaux de neurones NOT que de réseaux de neurones dans cette liste.

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

Dans l'ensemble, c'est bien.
Mais pourquoi la valeur retournée par la fonction est-elle double ?

Parce que le modèle final lui-même peut être plus difficile à traiter les signaux de trading reçus que le modèle original.

C'était censé discuter du modèle. Passons.

 

Dans ONNX, les données d'entrée sont des vecteurs et des matrices.

Pour la prédiction à partir d'un modèle prêt à l'emploi, il peut être possible de se contenter de ces caractéristiques (une matrice a un seul type de données, ce qui limite les options du prédicteur), mais l'entraînement d'un modèle µl est impossible : tout modèle, même primitif, a un nombre beaucoup plus important de paramètres d'entrée divers.

Par exemple, il est impossible d'introduire RF dans une matrice :

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))),

weights=NULL,

replace=TRUE,

classwt=NULL,

cutoff,

strates,

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,

proximité,

oob.prox=proximité,

norm.votes=VRAI,

do.trace=FALSE,

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

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

Par conséquent, formation uniquement en python, tests et autres joies, puis conversion pour le chargement dans µl et vérification dans l'EA par le testeur. Il n'est pas clair comment et où préparer les prédicteurs pour le test dans µl, s'il faut écrire le code dans µl, ou se tourner vers python et en tirer des prédicteurs pour prediction...., et même s'ils sont les mêmes que ceux sur lesquels le modèle a été entraîné.