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

 

Уважаемые разработчики. 

Билд 1281 МТ5 Windows 7 64

сегодня получил обновление


 

сосбвтенно процесс стал бесконечным :-)  

 

после перегрузки опять хочет перегрузиться и так далее  

 

2016.03.30 10:33:31.903 Network '3143179': trading has been enabled - netting mode

2016.03.30 10:33:31.903 Network '3143179': terminal synchronized with MetaQuotes Software Corp.

2016.03.30 10:33:31.829 Network '3143179': previous successful authorization performed from  on 2016.03.30 10:33:05

2016.03.30 10:33:31.829 Network '3143179': authorized on MetaQuotes-Demo through Access Point EU Frankfurt (ping: 70.19 ms)

2016.03.30 10:33:31.759 LiveUpdate new terminal build 1286 (IDE: 1286, Tester: 1286) is available

 
Vladislav Andruschenko:

Уважаемые разработчики. 

Билд 1281 МТ5 Windows 7 64

сегодня получил обновление


 

сосбвтенно процесс стал бесконечным :-)  

 

после перегрузки опять хочет перегрузиться и так далее  

 

2016.03.30 10:33:31.903 Network '3143179': trading has been enabled - netting mode

2016.03.30 10:33:31.903 Network '3143179': terminal synchronized with MetaQuotes Software Corp.

2016.03.30 10:33:31.829 Network '3143179': authorized on MetaQuotes-Demo through Access Point EU Frankfurt (ping: 70.19 ms)

2016.03.30 10:33:31.759 LiveUpdate new terminal build 1286 (IDE: 1286, Tester: 1286) is available

Приведите полные логи.
 
2016.03.30 10:48:54.402 Network '3143179': trading has been enabled - netting mode
2016.03.30 10:48:54.402 Network '3143179': terminal synchronized with MetaQuotes Software Corp.
2016.03.30 10:48:54.301 Network '3143179': previous successful authorization performed from  on 2016.03.30 10:33:30
2016.03.30 10:48:54.301 Network '3143179': authorized on MetaQuotes-Demo through Access Point EU Frankfurt (ping: 70.19 ms)
2016.03.30 10:48:54.230 LiveUpdate      new terminal build 1286 (IDE: 1286, Tester: 1286) is available
2016.03.30 10:48:54.021 MQL5.community  activated for 'Vladon', balance: 98.50
2016.03.30 10:48:53.122 Terminal        G:\РАБОТА\expforex\!!!$$$---MQL5---!!!\ROBOFOREX MT5
2016.03.30 10:48:53.122 Terminal        Windows 7 Ultimate (x64 based PC), IE 11.00, Intel Core i7-6700  @ 3.40GHz, RAM: 21297 / 32684 Mb, HDD: 9730 / 1498122 Mb, GMT+02:00
2016.03.30 10:48:53.115 Terminal        MetaTrader 5 - RoboForex x64 build 1281 started (ROBOFOREX LP)
 
Vladislav Andruschenko:
Это не полные логи. Пишите в сервисдеск.
 
comp:

Верно ли, что когда удаляется вручную индикатор во время выполнения OnCalculate, то OnDeinit исполняется сразу, иногда одновременно с не успевшим завершиться OnCalculate?

Похоже, что так. Класс имеет динамический массив экземпляров другого класса, который освобождается в деструкторе.

Деструктор вызывается только в OnDeinit через delete.

Так вот когда снимаю индикатор с чарта во время выполнения OnCalculate, упомянутый выше массив начинает очищаться сампороизвольно, будто кто-то вызвал деструктор. Этот кто-то - OnDeinit.

В итоге нарываюсь на NULL, вместо экземпляров класса.

Пробовал в OnCalculate использовать _StopFlag, но не помогает.

Как заставить выполняться OnDeinit не во время выполнения OnCalculate, а после?

Если из OnDeinit убираю delete, то на NULL прекращаю нарываться. Однако, в лог получаю логичный leaked memory. Так что это точно OnDeinit. Пробовал в нем Sleep прописать. Но похоже, Sleep в индикаторах не пашет. Пробовал даже так

  void MySleep( const uint Pause ) const
  {
    const uint StartTime = GetTickCount();
    
    while(GetTickCount() - StartTime < Pause)
      ;
      
    return;
  }

индикатор будто игнорит и такое.

 
comp:

Использую предопределенные макроподстановки при дебаге. Возможно ли также удобно без передачи соответствующего параметра в функцию/метод узнать, кто ее/его вызвал? 

Встроенными в MQL средствами нельзя, это надо делать самому, например, для отладочной версии добавлять параметр "имя вызвавшей функции"
 
comp:

Похоже, что так. Класс имеет динамический массив экземпляров другого класса, который освобождается в деструкторе.

Деструктор вызывается только в OnDeinit через delete.

Так вот когда снимаю индикатор с чарта во время выполнения OnCalculate, упомянутый выше массив начинает очищаться сампороизвольно, будто кто-то вызвал деструктор. Этот кто-то - OnDeinit.

В итоге нарываюсь на NULL, вместо экземпляров класса.

Пробовал в OnCalculate использовать _StopFlag, но не помогает.

Как заставить выполняться OnDeinit не во время выполнения OnCalculate, а после?

Если из OnDeinit убираю delete, то на NULL прекращаю нарываться. Однако, в лог получаю логичный leaked memory. Так что это точно OnDeinit. Пробовал в нем Sleep прописать. Но похоже, Sleep в индикаторах не пашет. Пробовал даже так

индикатор будто игнорит и такое.

Пожалуйста, откройте заявку в сервисдеск и приведите код функции OnDeinit
 
Ilyas:
Пожалуйста, откройте заявку в сервисдеск и приведите код функции OnDeinit

Порекомендуйте, как искусственно заставить OnCalculate выполняться долго? Со слипом облом.

У меня воспроизводится только в сложном индикаторе (много расчетов). Как расчеты убираю - все норм, т.к. OnCalculate выполняется почти мгновенно.

 
comp:

Как заставить выполняться OnDeinit не во время выполнения OnCalculate, а после?


OnDeinit всегда выполняется после OnCalculate
 
comp:

Порекомендуйте, как искусственно заставить OnCalculate выполняться долго? Со слипом облом.

У меня воспроизводится только в сложном индикаторе (много расчетов). Как расчеты убираю - все норм, т.к. OnCalculate выполняется почти мгновенно.

#import "kernel32.dll"
    void Sleep(uint);
#import



kernel32::Sleep(10000);
Причина обращения: