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

 
fxsaber:
Какие флаги и подводные камни могут быть, если из одной MQL-программы что-то должно дописываться в файл (RAM-drive) постоянно, а из других (и другой Терминал) читаться из него же все эти дописываемые данные?

сохранность данных должна обеспечиваться, но думаю как минимум 2 проблемы:

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

- нет средства обнаружения и контроля такой ситуации

решения как обычно - семафоры или писать свой диспетчер записи

ЗЫ: кажется есть возможность в памяти расположить встроенный SQLite , там хоть проконтролировать состояние БД можно

 
Alexey Kozitsyn:

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

Нет, в пятерке индикаторы в потоке инструмента.

 
Баг МТ5 (build 2340) отсутствует доступ к дефолтному operator= из объекта указателя.

class A{
public:
   char data;
   
   // uncomment to fix the bug
   //void operator=(A &a){this.data = a.data;}
};


// bypassing the bug
template<typename P1, typename P2>
void unref_assignment_operator(P1* &p1, P2* &p2){
   struct Functor{
      static void call(P1 &p1, P2 &p2){
         p1 = p2;
      }
   };
   Functor::call(p1, p2);
}

   
void OnStart(){      
   A a1;
   A a2;
   
   a2.data = 0x1;
   a1 = a2;
   printf("%d", (a1.data));               // Ok, 0x1
   
   
   A* a_ptr_1 = &a1;
   A* a_ptr_2 = &a2;
   
   a2.data = 0x2;
   a1.operator=(a2);                      //'operator=' - undeclared identifier 
   printf("%d", (a1.data));               
   
   
   a2.data = 0x3;
   unref_assignment_operator(a_ptr_1, a_ptr_2); 
   printf("%d", (a1.data));               // Ok, 0x3
}
 

Пожалуйста исправьте баг - краш МТ терминала при попытке отладить статическую функцию структуры.
Даже в примере выше, если поймать точку останова на строке "
p1 = p2;" это приведет к крашу терминала.

 
Andrey Khatimlianskii:

Нет, в пятерке индикаторы в потоке инструмента.

Пардон, попутал. Как раз считал, что в четверке именно такое поведение (т.е. как в пятерке - в потоке инструмента).

А где про общий интерфейсный поток написано для индикаторов МТ4?

Добавлено:

Indicator

All indicators share the resources of graphic interface threadof the terminal

An infinite loop in one indicator will stop the work of terminal


Спасибо за наводку, нашел.

Тогда отладчик изначально не продумали, получается, в МТ4. Запретили б хоть его вызывать для индикаторов.

 

НЕ знаю, куда точно отписать о баге.. Попробую отписать здесь.. Суть проблемы на MT5: при использовании масштабирования графика через кнопки "+" или "-" -- график не возвращается в нормальное положение (с отступом от правого края экрана). Приходится постоянно возвращать его вручную..

На MT4 - такой проблемы нет.. Проверял у нескольких брокеров..

После нажатия на "+"


Очень неудобно... Можно пофиксить?

 
Alexey Kozitsyn:

Тогда отладчик изначально не продумали, получается, в МТ4. Запретили б хоть его вызывать для индикаторов.

А его там изначально и не было. Вот и не продумали.

 
Roman Agafonkin:

НЕ знаю, куда точно отписать о баге.. Попробую отписать здесь.. Суть проблемы на MT5: при использовании масштабирования графика через кнопки "+" или "-" -- график не возвращается в нормальное положение (с отступом от правого края экрана). Приходится постоянно возвращать его вручную..

На MT4 - такой проблемы нет.. Проверял у нескольких брокеров..


Очень неудобно... Можно пофиксить?

При использовании масштабирования отступ возвращается в нормальное состояние на следующем поступившем тике.

 
SEM:

При использовании масштабирования отступ возвращается в нормальное состояние на следующем поступившем тике.

В том то и дело, что не возвращается.. на mt4 - все норм... на mt5 - увы, глючит.. 
Хорошо, засниму видео - добавлю в этот топик

Причина обращения: