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

 

В новом билде поменялась формула расчета Шарпа? У данной стратегии шарп был ~ 0.2 в предыдущих билдах.

 
Vladimir Chamin #:

В новом билде поменялась формула расчета Шарпа? У данной стратегии шарп был ~ 0.2 в предыдущих билдах.

Да, расчет Шарпа теперь делается по другому, он приводится к годовому значению на основе изменений эквити. Скоро будет статья с объяснением.

 

Еще в 3180 и 3182 билде не могу изменить номер версии советника.

В журнале Metaeditor-a при попытке компиляции с новым номером (сейчас 2.58, хочу поменять на 2.59) вылезает ошибка:

2 2022.02.03 17:09:22.405 MqlProject cannot write project file(32)

 

Какая то неведомая дичь


 
Andrey Kaunov #:

Какая то неведомая дичь

Подтверждаю, в 3184 исправлено

 

Какой-то баг: после обновления на версию 3180 на этой неделе поперли какие-то странные ошибки на советниках, которые ранее работали месяцами без сбоев:

- советники вылетают с ошибкой "out of memmory in [название класса]", при  этом ссылка указывает на идет строку с простейшей арифметической операции в коде советника,

- в файле системы наблюдаются множественные записи типа "VirtualAlloc failed in large allocator, size=xxxxx".

Поискал на форуме описание этой ошибки, проверил лог-файл системы/советника - там нет никакого крупного размера, обычные логи.

Прошу разобраться какие изменения были внесены в версии 3180, которые могли так повлиять на стабильность  работы терминала.

Файлы:
 

В дополнение к предыдущему посту - посмотрел сейчас в TaskManager т.н. показатель "Page faults" - у тех советников, которые закрешелись сегодня этот показатель превысил 1млд.ошибок. Т.е. речь идет о переполнении виртуального стека. Советники работают круглосуточно, примерно с вечера воскресенья 30 января, т.е. примерно за неделю работы.

В ОС предостаточно оперативки - 32GB, среднее стабильное использование около 10Gb.

Файлы:
 
Rashid Umarov #:

Здесь нет полезной информации. Если у вас есть исходники, можете написать проверочный код и отследить всю цепочку вызовов.

Советник Test2 - пустышка, просто загружает индикатор и копирует данные

Индикатор From - использует индикатор MACD визуализируя два буфера по 50 баров.

Везде одинаковый период(пускай будет M1), но обновление данных происходит только каждые 12 баров.

Есть такое для MACD:

input int InpFastEMA=12;               // Fast EMA period

А это в исходнике MACD :

ExtFastMaHandle=iMA(NULL,0,InpFastEMA,0,MODE_EMA,InpAppliedPrice);
ExtSlowMaHandle=iMA(NULL,0,InpSlowEMA,0,MODE_EMA,InpAppliedPrice);

Несоответствие видно при прогоне советника  Test2 в тестере стратегий при визуализации и логировании(по 3 последних значения двух буферов):

Print(Period());
ArrayPrint(ExtMacdBuffer,10,NULL,rates_total-3);
ArrayPrint(ExtSignalBuffer,10,NULL,rates_total-3);

Тестирование индикатора  From отдельно происходит нормально, всё соответствует MACD.

Файлы:
Test2.mq5  5 kb
From.mq5  8 kb
 

Ещё баг...

Не правильная последовательность вызовов вложенных индикаторов, когда дочерние индикаторы имеют более старший таймфрейм:

В индикаторы From и MACD добавим:

Print(__FILE__," ",Period());

Запустим  From с параметром period больше текущего периода.

Результат:

2022.02.04 18:25:48.626 From (EURUSD,M1)        From.mq5 1
2022.02.04 18:25:48.626 MACD (EURUSD,M2)        MACD.mq5 2
2022.02.04 18:25:50.184 From (EURUSD,M1)        From.mq5 1
2022.02.04 18:25:50.184 MACD (EURUSD,M2)        MACD.mq5 2
2022.02.04 18:25:50.311 From (EURUSD,M1)        From.mq5 1
2022.02.04 18:25:50.311 MACD (EURUSD,M2)        MACD.mq5 2
2022.02.04 18:25:51.131 From (EURUSD,M1)        From.mq5 1
2022.02.04 18:25:51.131 MACD (EURUSD,M2)        MACD.mq5 2

По точным таймингам видна последовательность вызова