Новая версия платформы MetaTrader 5 build 3180: Векторы и матрицы в MQL5 и повышение удобства работы - страница 7

 
Slava #:

Спасибо за ваши комментарии.

Мы приняли решение, что операции + - * / являются поэлементными операциями для матриц и векторов согласованного размера

Для векторного произведения используем метод Dot

Для матричного произведения используем метод MatMul - матрица с матрицей, вектор с матрицей, матрица с вектором - все должны быть согласованных размеров

Это хорошо, удобно.

Планируется ли какая-либо возможность передавать вектора в функции стандартной статистической библиотеки?

 
Roman #:

У меня есть неуверенное подозрение, что мт5 категорически не любит виртуальную машину.
Так как является сам виртуальным приложением. И возможно какие то моменты начинают глюкать.

fxsaber на виртуалке запускаешь?

Запускаю на живых машинах.

 
Aleksey Nikolayev #:

...Планируется ли какая-либо возможность передавать вектора в функции стандартной статистической библиотеки?

А в идеале ещё переписать портированную ALGLIB - заменить CMatrixDouble на matrix.

 
Denis Kirichenko #:

А в идеале ещё переписать портированную ALGLIB - заменить CMatrixDouble на matrix.

Да, CMatrixDouble теперь выглядит громоздко и избыточно...

 
Alexey Viktorov #:

Ну я не знаю что вам сказать… Вот результат трёхкратного запуска вашего скрипта

Я вручную разделил пустыми строками…

Запустил на другой машине на открытом с нуля счете MQ-Demo.

2022.01.26 09:24:06.009 Test (EURUSD,M1)        Alert: Index = 0 HistoryOrderGetTicket(Index) = 1244667702 
2022.01.26 09:24:06.025 Test (EURUSD,M1)        Alert: Index = 0 HistoryOrderGetTicket(Index) = 1244667699 
2022.01.26 09:24:06.040 Test (EURUSD,M1)        Alert: Index = 0 HistoryOrderGetTicket(Index) = 1244667698 
2022.01.26 09:24:06.052 Test (EURUSD,M1)        Alert: Index = 0 HistoryOrderGetTicket(Index) = 1244667696 
2022.01.26 09:24:06.065 Test (EURUSD,M1)        Alert: Index = 0 HistoryOrderGetTicket(Index) = 1244667695 
2022.01.26 09:24:06.086 Test (EURUSD,M1)        Alert: Index = 0 HistoryOrderGetTicket(Index) = 1244667694 
2022.01.26 09:24:06.099 Test (EURUSD,M1)        Alert: Index = 0 HistoryOrderGetTicket(Index) = 1244667693 
2022.01.26 09:24:06.112 Test (EURUSD,M1)        Alert: Index = 0 HistoryOrderGetTicket(Index) = 1244667692 
2022.01.26 09:24:06.124 Test (EURUSD,M1)        Alert: Index = 0 HistoryOrderGetTicket(Index) = 1244667690 
2022.01.26 09:24:06.135 Test (EURUSD,M1)        Alert: Index = 0 HistoryOrderGetTicket(Index) = 1244667689 


Прошу форумчан показать, что выдает этот скрипт на MQ-Demo.

 
fxsaber #:

Запустил на другой машине на открытом с нуля счете MQ-Demo.

Прошу форумчан показать, что выдает этот скрипт на MQ-Demo.

2022.01.26 12:31:57.102 Alert: Index = 109 HistoryOrderGetTicket(Index) = 1244672829 
2022.01.26 12:31:57.183 Alert: Index = 109 HistoryOrderGetTicket(Index) = 1244672826 
2022.01.26 12:31:57.261 Alert: Index = 109 HistoryOrderGetTicket(Index) = 1244672824 
2022.01.26 12:31:57.339 Alert: Index = 109 HistoryOrderGetTicket(Index) = 1244672820 
2022.01.26 12:31:57.417 Alert: Index = 109 HistoryOrderGetTicket(Index) = 1244672819 
2022.01.26 12:31:57.495 Alert: Index = 109 HistoryOrderGetTicket(Index) = 1244672817 
2022.01.26 12:31:57.575 Alert: Index = 109 HistoryOrderGetTicket(Index) = 1244672816 
2022.01.26 12:31:57.662 Alert: Index = 109 HistoryOrderGetTicket(Index) = 1244672813 
2022.01.26 12:31:57.739 Alert: Index = 109 HistoryOrderGetTicket(Index) = 1244672811 
2022.01.26 12:31:57.816 Alert: Index = 109 HistoryOrderGetTicket(Index) = 1244672808 
 
Denis Kirichenko #:

А в идеале ещё переписать портированную ALGLIB - заменить CMatrixDouble на matrix.

Ну, вроде была обещана поддержка формата ONNX, что даёт доступ к практически любым моделям МО. Так что вряд ли будут заморачиваться с  ALGLIB.

А вот преобразование из вектора в динамический массив и обратно не помешает.

 
Aleksey Nikolayev #:

Это хорошо, удобно.

Планируется ли какая-либо возможность передавать вектора в функции стандартной статистической библиотеки?

Пока нет.

Потребуется кардинальная переделка стандартной библиотеки под типы matrix и vector

Какие функции стандартной библиотеки Вы имеете в виду?

 
Vladimir Pastushak #:

Спасибо. Получается, что полностью прав по поводу поведения MT5: на одном и том же месте исторической таблицы могут быть разные ордера. Это архитектурная ошибка. Прошу разработчиков вернуть поведение b2958 - ордера при попадании в историческую таблицу помещаются в ее конец. Именно так происходит в Тестере.

На данный момент (b3160) один и тот же советник в Тестере и в Терминале показывает разное поведение.

 
fxsaber #:

Запустил на другой машине на открытом с нуля счете MQ-Demo.


Прошу форумчан показать, что выдает этот скрипт на MQ-Demo.

Я всего лишь добавил две строки в ваш код и получил совсем другой результат.

    HistorySelect(0, INT_MAX);
    Print(TOSTRING(HistoryOrdersTotal()));
    return(Step() && HistorySelect(0, INT_MAX) ? HistoryOrdersTotal() - 1 : 0);
Причина обращения: