Индикаторы: Portfolio Optimizer - страница 31

 
Andrey Kaunov:

Спасибо огромное, @Stanislav Korotky за конвертирование индикатора. Поправил пару мелких багов и он заработал. Но при включении любого фильтра пучка портфелей вылезает ошибка Stack overflow и индикатор падает. Не представляю, куда копать. Может посмотрите.

@transcendreamer, вы ещё не воплотили в жизнь идею о переводе на MQL5 этого замечательного индикатора и советника? Очень хочется конвертацию от создателя, во избежание различных багов.

Не понятно, какая версия правилась (последняя MT4-шная?). В моем варианте MT5 (для предыдущей версии для MT4) есть аналогичная ошибка?

По идее, конвертация чисто механистическая - по принципу сравнения старых версий MT4/MT5 можно пропатчить новую MT4 версию.

 
Stanislav Korotky:

Не понятно, какая версия правилась (последняя MT4-шная?). В моем варианте MT5 (для предыдущей версии для MT4) есть аналогичная ошибка?

По идее, конвертация чисто механистическая - по принципу сравнения старых версий MT4/MT5 можно пропатчить новую MT4 версию.

Да, ошибка в в вашем последнем патче от   2020.06.16 22:22 . Я так понимаю, это не последняя версия индикатора.

Если не затруднит, сконвертируйте последний релиз. Может ошибка уйдёт.

 
Andrey Kaunov:

Да, ошибка в в вашем последнем патче от   2020.06.16 22:22 . Я так понимаю, это не последняя версия индикатора.

Если не затруднит, сконвертируйте последний релиз. Может ошибка уйдёт.

Вы же там уже что-то еще поправили? Надо тогда с учетом этих правок проверять.

Если можно описать тест-сценарий, как воспроизвести ошибку, я могу в отладчике запустить. Но перевод новой версии - это более длинная рутина, потому и пишу, что желающие могут, руководствуясь сравнением предыдущих версий под MT4/МТ5, сделать аналогичный "копипаст" для последней версии.

 
Stanislav Korotky:

Вы же там уже что-то еще поправили? Надо тогда с учетом этих правок проверять.

Если можно описать тест-сценарий, как воспроизвести ошибку, я могу в отладчике запустить. Но перевод новой версии - это более длинная рутина, потому и пишу, что желающие могут, руководствуясь сравнением предыдущих версий под MT4/МТ5, сделать аналогичный "копипаст" для последней версии.

В вашей версии я переделал только инициализацию массивов

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string COMBINATIONS[MAX_LINES];
string SYMBOLS[MAX_SYMBOLS];
double MODEL[MAX_SYMBOLS], ROOTS[MAX_SYMBOLS], LOTS[MAX_SYMBOLS];
double CV[MAX_SYMBOLS], VALUE[MAX_SYMBOLS], RMSE[MAX_LINES];
color COLORS[MAX_LINES];

Сделал динамическими два массива. Ошибка выхода за пределы массива вылезает ещё в определенных ситуациях, но пользоваться это особо не мешает. 

Приложил сет-файл настроек, при которых глючит. 

Переводить долго, согласен. Хочу проверить одну идею. Для этого нужно прогнать в тестере на МТ5. Если всё получится, сам сяду за перевод. Сейчас просто хотел устранить ошибки. С указанным сетом выдаёт вот это


Файлы:
test_1.set  4 kb
 
Andrey Kaunov:

В вашей версии я переделал только инициализацию массивов

Сделал динамическими два массива. Ошибка выхода за пределы массива вылезает ещё в определенных ситуациях, но пользоваться это особо не мешает. 

Приложил сет-файл настроек, при которых глючит. 

Переводить долго, согласен. Хочу проверить одну идею. Для этого нужно прогнать в тестере на МТ5. Если всё получится, сам сяду за перевод. Сейчас просто хотел устранить ошибки. С указанным сетом выдаёт вот это


Чего-то не хватает в исходных условиях. У меня этот set-файл выдает ошибку Incorrect interval settings, но это было на H1, переключился на M5 - получил Insufficient history data - это при 100000 баров (свободная ОЗУ еще есть, не знаю, чего не хватает). Хотелось бы тест-кейс попроще. Пока не могу воспроизвести.

 

Добился ошибки - падает в 19-й строке:

    ::ArraySort(data);

Здесь всегда вызывает сама себя. Похоже на ошибку компилятора.

Заменил на такое:

template <typename T>
void ArraySort(T &data[][2], const int count, const int start, const int mode)
{
    ::ArraySort(data);
    if(mode == MODE_DESCEND)
    {
        ArrayReverse(data);
    }
}
Т.е. сделал аргументы обязательными.
 
Stanislav Korotky:

Добился ошибки - падает в 19-й строке:

Огромное спасибо, Станислав. Буду пробовать дальше )))) 

 
В следующем обновлении фильтры будут упрощены и эта функция уже не понадобится 
 
transcendreamer:
В следующем обновлении фильтры будут упрощены и эта функция уже не понадобится 

А для MT5 у Вас все ещё в планах? Очень много косяков вылезает в пропатченной версии.

 
Andrey Kaunov:

А для MT5 у Вас все ещё в планах? Очень много косяков вылезает в пропатченной версии.

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