Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике - страница 21

 
Ilyas:

Спасибо, буду разбираться

@Ilyas В новом билде

опять наблюдается остановка отладки на кривой скобке


и все остальные баги остались.

 

Баг с кастомными символами.

Раньше при удалении группы, удалялись только скрытые символы в ней. Теперь удаляются все. Получается, что в Обзоре рынка висят вполне нормальные кастомные символы (работают запросы истории и т.д.), но при этом в базе данных символов (CTRL+U) их нет.


Просьба вернуть, как было.

Строка для поиска: Oshibka 023.
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Canvas - это круто!

Renat Fatkhullin, 2021.01.29 19:38

Минимизация окон позволяет снизить нагрузку на большинстве часто рисующих приложений.

В Win10 может быть несколько рабочих столов, между которыми быстрое переключение происходит по CTRL+WIN+LEFT и CTRL+WIN+RIGHT.

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


Однако, сейчас Терминалы, что работают на неактивном рабочем столе, продолжают активную деятельность по отрисовке GUI. Хотя они даже теоретически не могут быть видны. По сути их состояние приравнивается к минимизации.


Возможно ли не отрисовывать Терминалы, работающие на неактивном рабочем столе? Или иметь TERMINAL_MINIMIZED и TEMINAL_ACTIVEDESKTOP (TERMINAL_INVISIBLE)?


Сейчас такие DLL-манипуляции вынужден делать, чтобы не тратить ресурсы впустую.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

MT5 и скорость в боевом исполнении

fxsaber, 2020.10.01 23:58

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/ru/code/26132

#define WM_SYSCOMMAND 0x0112
#define SC_MINIMIZE   0xF020

// Сворачивает все окна.
void MinimizeAllCharts()
{
  static const long ChartsHandle = user32::GetDlgItem(MTTESTER::GetTerminalHandle(), 0xE900);
  
  for (long handle = user32::GetWindow(ChartsHandle, GW_CHILD); handle; handle = user32::GetWindow(handle, GW_HWNDNEXT))
    user32::PostMessageW(handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
}

void OnStart()
{
  MinimizeAllCharts();
}

Горячая клавиша и готово. Как закрывать Обзор рынка и Инструменты - не разобрался. Будет полезно для всех, кто использует VPS, если покажут.


Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: Benchmark

fxsaber, 2020.10.01 23:49

// Возвращает true в некоторых ситуациях, когда чарт не виден.
bool IsInvisible( long chartID = 0 )
{
  bool Res = ::ChartGetInteger(chartID, CHART_IS_MINIMIZED);
  
  if (!Res && !::ChartGetInteger(chartID, CHART_IS_MAXIMIZED) && ::ChartGetInteger(chartID, CHART_IS_DOCKED))
  {
    if (!chartID)
      chartID = ::ChartID();

    for (long Chart = ::ChartFirst(); (Chart != -1) && !Res; Chart = ::ChartNext(Chart))
      Res = (Chart != chartID) && ::ChartGetInteger(Chart, CHART_IS_MAXIMIZED);
  }
  
  return(Res);
}


#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/ru/code/26132

// Возвращает true в некоторых ситуациях, когда чарт не виден.
// Учитывает еще окно Терминала и графики Оптимизатора.
bool IsInvisible2( const long chartID = 0 )
{
  static const long TerminalHandle = MTTESTER::GetTerminalHandle();
  static const long ChartsHandle = user32::GetDlgItem(TerminalHandle, 0xE900);
  
  bool Res = ::ChartGetInteger(chartID, CHART_IS_MINIMIZED) || user32::IsIconic(TerminalHandle);
  
  if (!Res && !::ChartGetInteger(chartID, CHART_IS_MAXIMIZED) && ::ChartGetInteger(chartID, CHART_IS_DOCKED))
  {
    const long hwnd = ::ChartGetInteger(chartID, CHART_WINDOW_HANDLE);

    for (long handle = user32::GetWindow(ChartsHandle, GW_CHILD); handle && !Res; handle = user32::GetWindow(handle, GW_HWNDNEXT))
      Res = (hwnd != handle) && user32::IsZoomed(handle);
  }
  
  return(Res);
}

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

Строка для поиска: Uluchshenie 034.
 
2021.01.30 07:03:30.790 Terminal        MetaTrader 5 x64 build 2769 started for MetaQuotes Software Corp.
2021.01.30 07:03:30.790 Terminal        Windows 10 build 19042, Intel Core i7-9750H  @ 2.60GHz, 24 / 31 Gb memory, 868 / 947 Gb disk, IE 11, UAC, GMT+2
2021.01.30 07:03:30.790 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

Взял код из темы BUG in MQL5 version 5.00 build 2769 ?! (and build 2766)

Обставил OnInit точками останова и запускаю отладку на истории ( history)

точки останова

- но все они игнорируются и код запускается.

BUG in MQL5 version 5.00 build 2769 ?! (and build 2766)
BUG in MQL5 version 5.00 build 2769 ?! (and build 2766)
  • 2021.01.30
  • www.mql5.com
Hi When I run debug (see attached code in test1.mq5) I get: 2021.01.30 10:39:56.383 2019.10...
 

Как такое возможно?


 
Ivan Titov:

Как такое возможно?

https://www.mql5.com/ru/forum/360210/page2#comment_20227638

https://www.mql5.com/ru/forum/360210/page3#comment_20271662

Т.е. реально данные правильные, но отладчик показывает неправильно.
Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике
Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике
  • 2021.01.16
  • www.mql5.com
В пятницу 15 января 2021 года будет выпущена обновленная версия платформы MetaTrader 5...
 

2769 отладчик всё ещё не работает. При пошаговой отладке может скакать по строкам произвольно, останавливаться на пустой строке, возвращаться назад (на линейной программе)...

Could not evaluate expression на любой локальной или глобальной переменной, константе, параметре функции.

2761 пока незаменим.

 
2769 из-за корявого отладчика невозможно программу отладить. Показывает либо чушь, либо не останавливается вообще, либо останавливается вообще непонятно где.
 
  Новый отладчик - это фантастика. Я в восторге от возможности заглянуть внутрь любого объекта. Даже this разворачивается. Гениально. Конечно, все недочеты допилят, например, не видно статические поля класса, но функционал уже на совершенно новом уровне. Большое спасибо разработчикам от всей души. 
  P.S. Добавьте в editor возможность перемещать строку кода через Alt-Up/Alt-Dn
 
Для ArrayInsert() результат примера не верный.