Ошибки, баги, вопросы - страница 725

 
Snaf: В первом скрипте я сам нашел ошибку, а для второго мозгов не хватает.

Билд 630

Пример написан с использованием нового билда компилятора MQL5. Приносим извинения, не учли. Но скоро уже он выйдет, подождите немного, пожалуйста, и всё будет компилироваться.
 
MetaDriver: Ага, точно.  У меня тоже именно с обработкой строк глючило.  Функция собирала длинную строку из кусков, возвращаемых другими функциями (генерация OpenCL-программы). В отладчике всё как часы - билд падает и пишет "Acces Violation"... ;)

Хотел уже в сервисдеск писать, а тут оно ни с того ни с сего взяло и заработало. :)  Я больше воспроизвести не смог (хотя по честному пытался), и чего посылать в сервисдеск?   Остаётся тут поворчать да поябедничать.

Да, есть явная проблема с CLProgramCreate(). Специально проследил, где в скрипте первый глюк при исполнении, он оказался именно в этой функции. Функция не возвращает значение.

CL-программа в виде строки вроде воспроизводится правильно. Но сама CL-программа не создается.

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

Попробуйте запустить визуализацию и сразу же поймете объем вычислений на основе количества фоновыхьсимволов в маркетвотче.
 
Скажите пожалуйста, как обьеденить мой ноутбук и ПК, при тестировании стратегий, компьютеры работают через роутер, один по шнуру, другой через Wi-Fi, попытался сам создать на настольном компе файл mt5, скинул на ноут, добавил в раздел remote, а имена агентов такие же как на ноуте
 

из поста https://www.mql5.com/ru/forum/1111/page736#comment_185306

локализовал проблему по пункту :

- на функции из класса CFastFile::ReadInteger

Оказалось, что в 630/64 слетело то ли присваивание структур, то ли чтение из массива в массив.  Хотя вариант напрашивается худший - перевод знаковых (short/int/char) в беззнаковые (ushort/uint/uchar).

Где то вылазят лишние биты или смещение. В результате читается совсем не то число что должно. Вам в функции будет проще разобраться и перепроверить.

В дебаг режиме не воспроизводится.  Зато стабильно на 4 компах срабатывает в одном и том же коде.  (Код большой, участок не вытяну)

 
lazarev-d-m:
Скажите пожалуйста, как обьеденить мой ноутбук и ПК, при тестировании стратегий, компьютеры работают через роутер, один по шнуру, другой через Wi-Fi, попытался сам создать на настольном компе файл mt5, скинул на ноут, добавил в раздел remote, а имена агентов такие же как на ноуте
Так не получается? Клиентский терминал / Тестер стратегий / Агенты
 
Yedelkin:
Так не получается? Клиентский терминал / Тестер стратегий / Агенты
видимо я что-то криво делал, сейчас опять создал файл mt5, теперь ноут видит процессоры компьютера, но при тесте дальше connecting ничего не идет, в чем может быть проблема, и надо ли добавлять процессоры ноутбука в тестер ПК, если я не буду их использовать на ПК?
 

Разработчики, вы меня покорили этим багом!  Как говорится, "я плакаль".

Функции из CFastFile (::ReadInteger)

        uint ReadArray(uchar &dst[], uint dst_start=0, int cnt=WHOLE_ARRAY) { int r=ArrayCopy(dst, m_data, dst_start, m_pos, cnt); if (r>0) m_pos+=r; return(r); }
        ushort ReadShort() { __2 b={0}; __short d={0}; ReadArray(b.v, 0, 2); d=b; return(d.v); }
        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); return(s); }
                return(ReadInt());
        }


В фиг поймешь каких случаях возвращает бред при чтении SHORT_VALUE.


Начал копать, обкручивать разные варианты чтения из массива. 

Оказалось, что если вместо ushort s=ReadShort()  поставить само тело функции ReadShort,   то числа все читаются нормально.

Но потом нашел вариант, от которого реально плакал.

        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); if (s==426) Print(s); return(s); }
                return(ReadInt());
        }

То есть с какого-то перепугу  функция Print магическим образом превращает битое число s в правильное, и возвращает корректное значение.


Уважаемые господа разработчики, одумайтесь! Вы же лепите халтуру!!! 

Как вы будете возмещать убытки в маркете, полученные в результате своего отношения к вашему же продукту?

Ведь на базе MT5  создается просто огромный потребительский ресурс, который обслуживают сторонние программисты

А вы своими халатными действиями ставите под сомнения их компетентность и качество их программ!

 
sergeev:

Разработчики, вы меня покорили этим багом!  Как говорится, "я плакаль".

Функции из CFastFile (::ReadInteger)

Подождите, но это же Ваш код класса CFastFile? Причем тут разработчики платформы?

//+------------------------------------------------------------------+
//|                                                         FastFile |
//|                                            Copyright © 2006-2012 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006-2012"
#property version "1.00"
#property library
 
Renat:

Подождите, но это же Ваш код класса CFastFile? Причем тут разработчики платформы?



Да Ренат, это мой код.

Он работал в предыдущих билдах. Но перестал работать в текущем 630/64.

Причем в 630/32 продолжает работать успешно.


Баг, который я обнаружил весьма странный и если честно пугающий.