Что то не так с вызовом OnnxRun

 
При вызове функции OnnxRun возникает ошибка
    if(!OnnxRun(onnxHandle,ONNX_DEBUG_LOGS | ONNX_NO_CONVERSION,features,output)) 
     { 
      Print("OnnxRun failed, error ",GetLastError()); 
      OnnxRelease(onnxHandle); 
      onnxHandle = INVALID_HANDLE;
      return; 
     }     

2025.06.05 17:13:02.666 Veles_II (EURUSD,M5) Попытка запуска ONNX с параметрами:
2025.06.05 17:13:02.666 Veles_II (EURUSD,M5) Handle: 4991810773180759836
2025.06.05 17:13:02.666 Veles_II (EURUSD,M5) Flags: 24576
2025.06.05 17:13:02.666 Veles_II (EURUSD,M5) Features size: 10
2025.06.05 17:13:02.666 Veles_II (EURUSD,M5) Output size: 5
2025.06.05 17:13:02.666 Veles_II (EURUSD,M5) ONNX: incorrect parameters count passed to OnnxRun, expected 3 instead of 2, inspect code 'û®‹ nŒûë NE' (446:9)
2025.06.05 17:13:02.666 Veles_II (EURUSD,M5) OnnxRun failed, error 5804

т.е. мы передаем 3 параметра вместо 2
в документации описан именно такой вызов

Запуск модели ONNX на исполнение.

bool  OnnxRun(
   long    onnx_handle,  // хэндл сессии ONNX
   ulong   flags,        // флаги, описывающие режим запуска
   ...                   // входные и выходные параметры модели
   );

Параметры

onnx_handle

[in]  Хэндл объекта сессии ONNX, созданный через OnnxCreate или OnnxCreateFromBuffer.

flags

[in] Флаги из ENUM_ONNX_FLAGS, описывающие режим запуска — ONNX_DEBUG_LOGS и ONNX_NO_CONVERSION.

...

[in] [out]  Входные и выходные параметры модели.

В случае успешного выполнения возвращает true, иначе false. Для получения кода ошибки вызовите функцию GetLastError.

так в чем проблема?

если делаю вот такой вызов

    if(!OnnxRun(onnxHandle,features,output)) 
     { 
      Print("OnnxRun failed, error ",GetLastError()); 
      OnnxRelease(onnxHandle); 
      onnxHandle = INVALID_HANDLE;
      return; 
     }   

не хочет компилироваться

Что делать?

Документация по MQL5: ONNX модели / OnnxCreate
Документация по MQL5: ONNX модели / OnnxCreate
  • www.mql5.com
Создает сессию ONNX c загрузкой модели из *.onnx файла. Параметры filename [in]  Путь к *.onnx файлу модели относительно папки \MQL5\Files\...
 
на входе у меня одномерный массив double features[10]
на выходе double output[5]

я понял что для запуска
if(!OnnxRun(onnxHandle,ONNX_DEBUG_LOGS | ONNX_NO_CONVERSION,features,output)) 

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

Подскажите, пожалуйста, конкретным примером преобразования моих данных.

 
ну, кое чего добился, но теперь ошибка другая
я применил так
    
double features[10];
// тут код заполнения массива

double output[5];

Print("Попытка запуска ONNX с параметрами:");
Print("Handle: ", onnxHandle);
Print("Flags: ", ONNX_DEBUG_LOGS | ONNX_COMMON_FOLDER);
Print("Features size: ", ArraySize(features));
Print("Output size: ", ArraySize(output));   

// Установка формы входного тензора
const ulong shape_input[] = {1,10};
if (!OnnxSetInputShape(onnxHandle, 0, shape_input)) {
    Print("Ошибка установки формы входа: ", GetLastError());
    return;
}
// Установка формы выходного тензора
const ulong shape_output[] = {1,5};
if (!OnnxSetOutputShape(onnxHandle, 0, shape_output)) {
    Print("Ошибка установки формы выхода: ", GetLastError());
    return;
}

    if(!OnnxRun(onnxHandle, ONNX_DEBUG_LOGS , features, output)) { 
        Print("OnnxRun failed, error ",GetLastError()); 
        OnnxRelease(onnxHandle); 
        onnxHandle = INVALID_HANDLE;
        return; 
    }

в питоне
        target = np.select([buy_open, sell_open, buy_close, sell_close], [1, 2, 3, 4], default=0)

        if not deals_df.empty:
            time_index = pd.Series(df.index, index=df['time'])
            for _, deal in deals_df.iterrows():
                open_idx = time_index.get(deal['open_time'], None)
                close_idx = time_index.get(deal['close_time'], None)
                if open_idx is not None:
                    target[open_idx] = 1 if deal['type'] == 0 else 2
                if close_idx is not None:
                    target[close_idx] = 3 if deal['type'] == 0 else 4

        return target
и такая ошибка
2025.06.06 00:06:24.987 Veles_II (EURUSD,M5) EURUSD. Загрузка файла EURUSD_Veles.onnx
2025.06.06 00:06:24.987 Veles_II (EURUSD,M5) EURUSD. Загрузка скалера EURUSD_Veles_scaler.csv
2025.06.06 00:06:24.988 Veles_II (EURUSD,M5) EURUSD. Модель EURUSD_Veles загружена
2025.06.06 00:06:24.988 Veles_II (EURUSD,M5) Попытка запуска ONNX с параметрами:
2025.06.06 00:06:24.988 Veles_II (EURUSD,M5) Handle: 4991810408108539676
2025.06.06 00:06:24.988 Veles_II (EURUSD,M5) Flags: 20480
2025.06.06 00:06:24.988 Veles_II (EURUSD,M5) Features size: 10
2025.06.06 00:06:24.988 Veles_II (EURUSD,M5) Output size: 5
2025.06.06 00:06:24.988 Veles_II (EURUSD,M5) Ошибка установки формы выхода: 5808