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

 

Вначале статистику порезали, а щас вообще убили?


 
Igor Makanu:

написал такой код:

установил точку останова на string s = ""; - без проблем вернулся в МЕ, появились окна отладки, ну все как обычно

При таком подходе нужно после каждого оператора ставить проверку на остановку. Не подходит.

 
TheXpert:

Вначале статистику порезали, а щас вообще убили?

заработало

 
fxsaber:

При таком подходе нужно после каждого оператора ставить проверку на остановку. Не подходит.

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

 
Igor Makanu:

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

Большая прога. Для воспроизведения зависания требуется около 30 секунд каждый раз.

 
fxsaber:

В режиме отладки запускаю советник. Нужно сделать точку останова ровно в тот момент, когда руками сниму с чарта советник. Как это сделать?


Дело в том, что при снятии советника намертво вешается Терминал. Нужно понять, в каком месте это происходит.

Совсем намертво или все-таки через некоторое время выгрузка советника происходит? Если второе, то ищи цикл.
 
Vladimir Simakov:
Совсем намертво или все-таки через некоторое время выгрузка советника происходит? Если второе, то ищи цикл.

Интереснее. В дебаг-режиме не виснет. А в полноценном - намертво.

 
Здравствуйте коллеги! Кто то знает почему терминал МТ4 на андроид не засчитывает некоторые закрытые позиции в прибыли, хотя в истории они отображаются? 

Может это баг какой-то?
 
fxsaber:

Интереснее. В дебаг-режиме не виснет. А в полноценном - намертво.

Локализовал проблему.

#include <WinAPI\WinAPI.mqh>

#define GA_ROOT           0x00000002

void OnDeinit( const int )
{
  static const int ControlID[] = {0xE81E, 0x804E, 0x2712, 0x4196};
  
  long Handle = user32::GetAncestor(::ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT);
                                                                                        
  for (int i = 0; i < sizeof(ControlID) / sizeof(int); i++)                             
    Handle = user32::GetDlgItem(Handle, ControlID[i]);

  ushort Str[6];
  user32::GetWindowTextW(Handle, Str, sizeof(Str) / sizeof(ushort)); // Freeze
}


Запускаете этот советник на чарте и потом руками снимаете. Будет зависание Терминала.

Выполнение этого же кода в любой другой On-функции зависания не производит.

 
Вдруг в папке Tester появилась папка для третьего агента (порт 3002), которого отродясь не было. Ничего не менял, менеджер не запускал. В папках двух других (нормальных) агентов также есть свежие файлы от сегодня. Отчего такое может быть? Можно прибить лишний?