Загадочное число 63 :)
Я установил ту же дату и те же настройки, но результаты получились разными. Кто-нибудь знает, почему?
Результаты тестирования первой моделиРезультаты тестирования второй модели
Во-первых, большое спасибо за то, что вы собрали все это вместе, приятно смотреть в разные стороны. За ней легко следить, и она хорошо составлена.
Я получаю одинаковые показатели успеха и немного меньшее количество сделок на демо-счете, но когда я использую демо-счет meta trader. С моим торговым счетом он торгует только один раз. Я предполагаю, что это часовой пояс брокера, мой брокер находится в Австралии (GMT+10). Первая сделка с демо-счета: Core 1 2023.01.02 07:02:00 deal #2 sell 1 EURUSD at 1.07016 done(based on order #2).
Первая транзакция от My Broker Australia (GMT+10): Core 1 2023.01.03 00:00:00 failed market sell 1 EURUSD [Market closed], и я не совсем понимаю, как это решить. Возможно, вся модель зависит от временной зоны. Если это так, то время должно выводиться в целых часах? Но как начальная сделка 2023.01.02 07:02:00 превращается в 2023.01.03 00:00:00?
Буду признателен за любые предположения о причине этого.
торговая подача
То же самое, мне удалось воспроизвести очень похожие результаты с оригинальными файлами onnx на моем счете MetaQuates-Demo.
Затем мне удалось переобучить Python ML до конца, хотя и со следующими предупреждениями/ошибками, которые можно проигнорировать:
D:\MT5 Demo1\MQL5\Experts\article_12433\Python>python ONNX.eurusd.D1.10.Training.py 2023-11-19 18:07:38.169418: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found 2023-11-19 18:07:38.169664: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine. data path to save onnx model 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5187/5187 [00:00<00:00, 6068.93it/s] 2023-11-19 18:07:40.434910: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'nvcuda.dll'; dlerror: nvcuda.dll not found 2023-11-19 18:07:40.435070: W tensorflow/stream_executor/cuda/cuda_driver.cc:263] failed call to cuInit: UNKNOWN ERROR (303) 2023-11-19 18:07:40.437138: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: WIN-SSPXX7BO0B0 2023-11-19 18:07:40.437323: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: WIN-SSPXX7BO0B0 2023-11-19 18:07:40.437676: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2 To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags. Epoch 1/50 111/111 - 1s - loss: 1.6160 - mae: 0.9378 - val_loss: 2.7602 - val_mae: 1.3423 - lr: 0.0010 - 1s/epoch - 12ms/step Epoch 2/50 111/111 - 0s - loss: 1.4932 - mae: 0.8952 - val_loss: 2.4339 - val_mae: 1.2412 - lr: 0.0010 - 287ms/epoch - 3ms/step ...
оба ML-скрипта завершаются:
111/111 - 0 s - loss: 1.2812 - mae: 0.8145 - val_loss: 1.2598 - val_mae: 0.8142 - lr: 1.0000 e-06 - 366 ms/epoch - 3 ms/step Epoch 50/50 111/111 - 0 s - loss: 1.3030 - mae: 0.8203 - val_loss: 1.2604 - val_mae: 0.8143 - lr: 1.0000 e-06 - 365 ms/epoch - 3 ms/step 33/33 [==============================] - 0 s 1 ms/step - loss: 1.1542 - mae: 0.7584 test_loss=1.154 test_mae=0.758 2023-11-19 18:07:57.480814: I tensorflow/core/grappler/devices.cc:66] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 0 2023-11-19 18:07:57.481315: I tensorflow/core/grappler/clusters/single_machine.cc:358] Starting new session 2023-11-19 18:07:57.560110: I tensorflow/core/grappler/devices.cc:66] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 0 2023-11-19 18:07:57.560380: I tensorflow/core/grappler/clusters/single_machine.cc:358] Starting new session 2023-11-19 18:07:57.611678: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled saved model to model.eurusd.D1.10.onnx
24/24 - 0 s - loss: 0.6618 - accuracy: 0.6736 - val_loss: 0.8993 - val_accuracy: 0.4759 - lr: 4.1746 e-05 - 37 ms/epoch - 2 ms/step Epoch 300/300 24/24 - 0 s - loss: 0.6531 - accuracy: 0.6770 - val_loss: 0.8997 - val_accuracy: 0.4789 - lr: 4.1746 e-05 - 39 ms/epoch - 2 ms/step 11/11 [==============================] - 0 s 682 us/step - loss: 0.8997 - accuracy: 0.4789 test_loss=0.900 test_accuracy=0.479 2023-11-19 18:07:19.838160: I tensorflow/core/grappler/devices.cc:66] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 0 2023-11-19 18:07:19.838516: I tensorflow/core/grappler/clusters/single_machine.cc:358] Starting new session 2023-11-19 18:07:19.872285: I tensorflow/core/grappler/devices.cc:66] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 0 2023-11-19 18:07:19.872584: I tensorflow/core/grappler/clusters/single_machine.cc:358] Starting new session saved model to model.eurusd.D1.63.onnx
Затем я перекомпилирую исходный ONNX.Price.Prediction.2M.D1.mq5, чтобы использовать новые ML, которые я обучил.
Результаты бэктестов с тем же счетом MetaQuates-Demo значительно отличаются от оригинала, что не очень хорошо.
Был бы очень признателен узнать, что пошло не так?
Большое спасибо.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования


Опубликована статья Пример ансамбля ONNX-моделей в MQL5:
ONNX (Open Neural Network eXchange) — открытый стандарт представления нейронных сетей. В данной статье мы покажем возможность одновременного использования двух ONNX-моделей в одном эксперте.
Для стабильной торговли желательно иметь диверсификацию как по торгуемым инструментам, так и по торговым стратегиям. Такая же ситуация и с моделями машинного обучения — проще создать несколько более простых моделей, чем одну сложную. Но собрать потом эти модели в одну ONNX-модель может быть непросто.
Однако можно комбинировать использование нескольких уже обученных ONNX-моделей в одной MQL5-программе. Мы покажем, как можно просто реализовать один из ансамблей, который называется классификатор голосования.
Результаты тестирования первой модели.
Теперь протестируем только вторую модель. Вот результаты тестирования второй модели.
Вторая модель оказалась гораздо сильнее первой модели. Результаты подтверждают теорию — ансамблировать нужно слабые модели. Но в данной статье речь шла не о теории ансамблирования, а о практике применения.
Автор: MetaQuotes