Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 3243

 
fxsaber #:

Verificar o padrão em uma MA padrão, somente em ticks.

...

Um padrão de trabalho.

E ainda não está claro: como o onnx-signal entrará nesse modelo de trabalho?

 
blef #:

E ainda não está claro: como o onnx-signal entrará nesse modelo de trabalho?

Por meio de sua variante do corpo dessa função.

Cada tick chega à entrada - a saída é a decisão ONNX sobre o sinal de negociação.

Uma variante do corpo dessa função foi mostrada acima. No caso do ONNX, ele está conectado ao seu próprio model.onnx.


O modelo do EA permanece inalterado.

 
fxsaber #:

Por meio de sua variante corporal dessa função.


Cada tick chega à entrada - a saída é a decisão do ONNX sobre o sinal de negociação.

A variante do corpo dessa função é mostrada acima. No caso do ONNX, seu próprio model.onnx está conectado.


O modelo EA permanece inalterado.

Ou seja, o corpo dessa função deve implementar as funções especificadas na Ajuda MQL5 nesta página - https://www.mql5.com/ru/docs/onnx?

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

Ou seja, o corpo dessa função deve implementar as funções especificadas na Ajuda MQL5 nesta página - https://www.mql5.com/ru/docs/onnx?

Exceto pelas três primeiras, que são responsáveis pela criação e exclusão da sessão ONNX.
 
Entendo, obrigado pelo esclarecimento - tentarei fazer algo com relação ao MoD.
 
blef #:

Ou seja, o corpo dessa função deve implementar as funções especificadas na Ajuda MQL5 nesta página - https://www.mql5.com/ru/docs/onnx?

É assim.

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

É mais ou menos isso.


Em suma, está tudo bem.
Mas por que o valor retornado pela função é duplo?
 

Por alguma razão, ele continua falando sobre redes neurais.

Mas há um conversor listado aqui

O ONNXMLTools da Microsoft permite que você converta modelos para o formato ONNX.

Ele é capaz de converter os seguintes modelos

Conversão para o formato ONNX (ONNXMLTools)

O ONNXMLTools permite converter modelos de vários kits de ferramentas de aprendizado de máquina para o formatoONNX.

As instruções de instalação e uso estão disponíveis norepositório ONNXMLToolsno GitHub.

Apoio

Os seguintes kits de ferramentas são compatíveis no momento:

  • Keras( shelldo conversor keras2onnx);
  • Tensorflow( shell do transdutor tf2onnx);
  • scikit-learn( shell do conversor skl2onnx);
  • Apple Core ML;
  • Spark ML (modo experimental);
  • LightGBM
  • libscm;
  • XGBoost;
  • H2O
  • CatBoost

Há muito mais redes NÃO neurais do que redes neurais nesta lista

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

Em suma, está tudo bem.
Mas por que o valor retornado pela função é o dobro?

Porque o modelo final em si pode ser mais difícil de processar os sinais de negociação recebidos do que o modelo original.

O objetivo era discutir o modelo. Vamos passar.

 

No ONNX, os dados de entrada são vetores e matrizes.

Para a previsão de um modelo pronto, pode ser possível se contentar com esses recursos (uma matriz tem um tipo de dados, o que limita as opções de previsão), mas treinar um modelo µl é impossível: qualquer modelo, mesmo primitivo, tem um número muito maior de parâmetros de entrada diversos.

Por exemplo, é impossível conduzir RF em uma matriz:

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,

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,

proximidade,

oob.prox=proximidade,

norm.votes=TRUE,

do.trace=FALSE,

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

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

Portanto, treinamento somente em python, testes e outras alegrias e, em seguida, conversão para carregamento em µl e verificação no EA pelo testador. Não está claro como e onde preparar os preditores para teste no µl, se é necessário escrever o código no µl ou recorrer ao python e, a partir dele, obter os preditores para a previsão...., e mesmo assim que eles fossem os mesmos em que o modelo foi treinado.