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

 
Dmitri Custurov:
Спасибо огромное за предоставленное решение. Все работает.
Отлично. Значит библиотеку и пример использования размещаю в КодоБазе.
 
-Aleks-:
Гораздо быстрей читать весь файл массива в память, а потом уже с ним работать - ускорение в разы быстрей будет.
Не думаю, в оптимизаторе файл придётся десятки тысяч раз открывать-читать-закрывать.
 
Aliaksandr Yemialyanau:

Как к советнику подключить файл с массивом?

Сначала скрипт записывает массив:

 В советнике подключаю файл:

При компиляции, ошибки:

'??????????????????????????t????…' - identifier is too long mas.dat 1 1

'' - unknown symbol mas.dat 1 3015

Так а что за файл с массивом-то? В каком-он виде?   Судя по этим ошибкам, там просто поток байтов, так чтоль?
 

Серьёзные баги со статическими переменными.  Рассмотрим такой код:

class A  { public:
            int m;
            A() { Alert("A");  m=1; }
         };

class B  { public:
            B() { Alert("B");  static A a;  Alert("a.m==",a.m);  Alert("&a==",&a);}
         };
B b;

void OnStart()
{
};

При выполнении получаем следующий порядок алертов:

B
a.m==0
&a==0
A

Т.е. статическая переменная ещё не инициализирована к моменту доступа к ней.  Даже указатель нулевой.  Её типа перескочили, и благополучно пошли дальше. 

Такого безобразия быть не должно.  Либо инициализируем переменную и идём дальше, либо прерываем компиляцию с ошибкой.

Здесь естественно она должна быть проинициализирована. А вот в случаях, если образуется рекурсия из взаимно ссылающихся классов, то надо стопорить компиляцию.

 
Aliaksandr Yemialyanau:

Как к советнику подключить файл с массивом?

Сначала скрипт записывает массив:

 В советнике подключаю файл:

При компиляции, ошибки:

'??????????????????????????t????…' - identifier is too long mas.dat 1 1

'' - unknown symbol mas.dat 1 3015

Ваш скрипт должен сформировать файл mas.mqh, в котором будет размещаться массив типа uchar, содержащий байты ваших данных. Например, если файл размером три байта, содержимое файла mas.mqh должно быть следующим:

uchar mass[3] = {25, 127, 89};

 Сгенерированный массив mass Вы и должны использовать в своей программе.

 
Aliaksandr Yemialyanau:
Не думаю, в оптимизаторе файл придётся десятки тысяч раз открывать-читать-закрывать.
А, так Вы хотите компилировать с массивом?
 
Вряд ли придётся считывать файл с диска десятки тысяч раз. Для этого существует дисковый кэш.  Хотя я конечно не знаю, используется ли оно в данном конкретном случае, но надо проверить, сделать замеры, прежде чем изобретать костыли.
 
Если прерываю в MT5 одиночный прогон, то виден только график изменения баланса. Но сделки и ордера недоступны.
Использовать режим Визуализации не всегда подходит из-за возможных тормозящих доп. расчетов по MQLInfoInteger(MQL_VISUAL_MODE).
Возможно ли добавить доступность всей информации во время бэктеста (без визуализации), как это есть в MT4?
 
В режиме отладки на исторических данных MQLInfoInteger(MQL_VISUAL_MODE) всегда возвращает true.
 
fxsaber:
В режиме отладки на исторических данных MQLInfoInteger(MQL_VISUAL_MODE) всегда возвращает true.
А что должно возвращать?