Обсуждение статьи "Оборачиваем ONNX-модели в классы"

 

Опубликована статья Оборачиваем ONNX-модели в классы:

Объектно-ориентированное программирование позволяет создавать более компактный код, который легко читать и модифицировать. Представляем пример для трёх ONNX-моделей.

Большинство голосов считается по формуле <общее количество голосов>/2 + 1. Для общего числа голосов 3 большинством являются 2 голоса. Это - так называемое "жёсткое голосование"

Результат тестирования всё с теми же самыми настройками.

Результаты тестирования жёсткого голосования

Вспомним работу всех трёх моделей по отдельности, а именно количество прибыльных и убыточных трейдов. Первая модель — 11 : 3, вторая модель — 6 : 1, третья модель — 16 : 10.

Похоже, при помощи жёсткого голосования мы улучшили результат — 16 : 4. Но, конечно же, необходимо смотреть полные отчёты и графики тестирования.

Автор: MetaQuotes

 
Очень полезная статья!

Версия ONNX 1.13.0 или 1.14.0 используется в MT5?
 

Это очень интересно, спасибо большое.

В приложенном к статье ML-файле ONNX.eurusd.D1.30.class.Training.py есть следующие строки кода (строки 48 - 59) в def collect_dataset():

    for i in tqdm(range(n - sample_size)):
        w = df.iloc[i: i + sample_size + 1]
        x = w[['close', 'ma_fast', 'ma_slow']].iloc[:-1].values

        delta = x[0][-1] - w.iloc[-1]['close']
        if np.abs(delta)<=0.0001:
           y = 0, 1, 0
        else:
           if delta>0:
              y = 1, 0, 0
           else:
              y = 0, 0, 1

Подскажите, пожалуйста, какая логика стоит за выделенной строкой выше?

Классификация основана на разнице между "ma_slow" первого образца(x[0][-1]) и "close" новой цели(w.iloc[-1]['close']). При этом время будет отличаться на'sample_size-1'.

Кроме того:

if delta>0:
              y = 1, 0, 0

разве это не должно быть y = 0,0,1? Т.е. сигнал на продажу.

Аналогично в ONNX.eurusd.D1.10.class.Training.py в def collect_dataset(), строка45-47:

        x = w[['open', 'high', 'low', 'close']].iloc[:-1].values

        delta = x[3][-1] - w.iloc[-1]['close']
Как? Классификация основана на разнице между "закрытием" четвертой выборки(x[3][-1]) и "закрытием" новой цели(w.iloc[-1]['close']); и здесь будет разница во времени'sample_size-4'.
 
Xiaoyu Huang #:
Очень полезная статья!

Версия ONNX 1.13.0 или 1.14.0 используется в MT5?
Не могу найти информацию. Есть ли причина для такого вопроса?