Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3242

 
fxsaber #:

Проверка шаблона на стандартной МАшке, только на тиках.

...

Рабочий шаблон.

и все-таки непонятно: как onnx-сигнал попадет в этот рабочий шаблон?

 
blef #:

и все-таки непонятно: как onnx-сигнал попадет в этот рабочий шаблон?

Через свой вариант тела этой функции.

На вход приходит каждый тик - на выходе ONNX-решение о торговом сигнале.

Вариант тела такой функции показал выше. В случае ONNX подключается свой model.onnx.


Шаблон советника остается неизменным.

 
fxsaber #:

Через свой вариант тела этой функции.


На вход приходит каждый тик - на выходе ONNX-решение о торговом сигнале.

Вариант тела такой функции показал выше. В случае ONNX подключается свой model.onnx.


Шаблон советника остается неизменным.

т.е в теле этой функции должны реализовываться функции , указанные в справке 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 от Microsoft позволяет конвертировать модели в формат ONNX

который способен конвертировать следующие модели

Преобразование в формат ONNX (ONNXMLTools)

ONNXMLTools позволяет преобразовывать модели из различных наборов средств машинного обучения в формат ONNX.

Инструкции по установке и использованию доступны в репозитории ONNXMLTools на GitHub.

Поддержка

В настоящее время поддерживаются следующие наборы средств:

В этом списке НЕ нейросетей гораздо больше, чем нейросетей

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

в общем - норм.
только почему возвращаемое функцией значение double?

Потому что сам окончательный шаблон может сложнее обрабатывать получаемые торговые сигналы, чем изначальный.

Предполагалось обсуждение шаблона. Проехали.

 

В ONNХ входные данные - это вектора и матрицы.

Для предсказания по готовой модели может быть и можно обойтись этими возможностями (в матрице один тип данных, что ограничивает варианты предикторов), но обучение модели из мкл - это исключено: любая даже примитивная модель имеет гораздо большее число разнообразных входных параметров.

Например, 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))),

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,

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

Поэтому обучение только на питоне, тестирование и прочие радости, а потом конвертация для загрузки в мкл и проверка в советнике тестером. При этом не ясно как и где подготовить предикторы для тестирования в мкл, то ли написать код в мкл, то ли обратится в питон и из него получить предикторы для предсказания...., да еще так, чтобы они были одинаковыми с теми, на которых учили модель.