Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5

Пример использования ONNX-модели для распознавания нарисованных цифр - эксперт для MetaTrader 5
- Просмотров:
- 1765
- Рейтинг:
- Опубликован:
- 2023.11.15 14:13
- Обновлен:
- 2023.11.16 02:41
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Эксперт, способный распознавать рукописные цифры
База данных MNIST состоит из 60,000 изображений для обучения и 10,000 изображений для тестирования. Эти изображения были созданы после переработки оригинального набора чёрно-белых образцов размером 20x20 пикселей от NIST, которые в свою очередь были получены из Бюро переписи населения США и дополнены тестовыми образцами, написанными студентами американских университетов. Образцы были нормализированы и приведены к серому полутоновому изображению размером 28x28 пикселей.
Обученная модель распознавания рукописных цифр mnist.onnx была скачана с гитхаба из зоопарка моделей (opset 8). Желающие могут скачать и попробовать другие модели, за исключением модели с opset 1, который уже не поддерживается свежим onnx runtime. Удивительным оказался тот факт, что выходной вектор не был обработан функцией активации Softmax, как это принято в моделях классификации. Но это не страшно, просто сделаем это сами
int PredictNumber(void) { static matrixf image(28,28); static vectorf result(10); PrepareMatrix(image); if(!OnnxRun(ExtModel,ONNX_DEFAULT,image,result)) { Print("OnnxRun error ",GetLastError()); return(-1); } result.Activation(result,AF_SOFTMAX); int predict=int(result.ArgMax()); if(result[predict]<0.8) Print(result); Print("value ",predict," predicted with probability ",result[predict]); return(predict); }
Цифры рисуются в специальной сетке при помощи мыши с зажатой левой кнопкой. Для распознавания нарисованной цифры необходимо нажать кнопку CLASSIFY.
Если полученная вероятность распознанной цифры меньше 0.8, то в журнал выводится результатный вектор с вероятностями по каждому классу. Попробуйте, например, классифицировать пустое незаполненное поле ввода
[0.095331445,0.10048489,0.10673151,0.10274081,0.087865397,0.11471312,0.094342403,0.094900772,0.10847695,0.09441267] value 5 predicted with probability 0.11471312493085861Почему-то хуже всех распознаются девятки. Цифры, нарисованные с левым наклоном, распознаются лучше.

Советник анализирует вероятности достижения тейк-профита и стоп-лосса.

Dynamic RSI индикатор.

Вторая производная может сглаживать временные ряды, удалять циклические компоненты и выделять тренды.

Индикатор считает ваш риск в процентах, и выдает размер предельного лота, который допустим для вашего риска. Нужно лишь указать риск в процентах, и размер стопа в пипсах.