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

 
Vladimir Belozercev:

Его нет, но он вызывается на return-е из параметрического конструктора.

Во всяком случае встроенный отладчик "показывает" его исполнение. Нажмите F11 на "выходной фигурной скобке"  параметрического конструктора ...

С строке 76 приведённого кода из-за ошибки в компиляторе создаётся неявный (безымянный) объект clTuneParam - для этого объекта и вызывается деструктор.

Если хотите перепроверить мои слова, то наследуйте clTuneParam от

class A
  {
public:
   A() { Print("A created ",&this); }
   ~A() { Print("A destroyed ",&this); }
  };

В логе вы увидите, сколько объектов A было создано и когда они уничтожены (раскомментируйте удаление AdaptiveTrade в коде)

UPD:  создайте отдельную функцию инициализации и вызывайте её из параметрического и дефолтного контрукторов - так будет надёжнее и понятнее по коду.

 
Ilyas:

С строке 76 приведённого кода из-за ошибки в компиляторе создаётся неявный (безымянный) объект clTuneParam - для этого объекта и вызывается деструктор.

Если хотите перепроверить мои слова, то наследуйте clTuneParam от

В логе вы увидите, сколько объектов A было создано и когда они уничтожены (раскомментируйте удаление AdaptiveTrade в коде)

UPD:  создайте отдельную функцию инициализации и вызывайте её из параметрического и дефолтного контрукторов - так будет надёжнее и понятнее по коду.

Да я не спорю. Уж Вам то точно виднее... Я же не вижу что "внутри" происходит. "Споткнулся" об это - написал. Глубокую трассировку не делал, да и к тому же отладчик не штатно работает и времени не было. Обошёл этот нюанс просто убрав вложенные вызовы...

Не думал, что Вы так быстро отреагируете. Спасибо что откликнулись.

 

По потреблению памяти. Возможно ли в TaskManager отдельно показывать, сколько и какие кеши потребляют память? Особенно это касается CopyTicks-кешей.

TERMINAL_MEMORY_USED = 3277 MB.

3 Гб съедает Терминал. Единственная возможность - это кеши CopyTicks. И это при том, что за несколько суток ни разу не сделал запрос дальше, чем на пять последних тиков.

Зачем такое потребление?!


MQL_MEMORY_USED = 10 MB

10 Мб потребляет советник. Подсчитал честно объем всех переменных и массивов (включая резервные места). Не вышло более 2.5 Мб. Значит остальное - это системные кеши (для HistorySelect и других). Как-то возможно это отразить в TaskManager?


Возможно ли будет в TaskManager сбрасывать некоторые кеши?

 

Про Alt-G в метаэдиторе... Понимаю, что задача скорее всего не в высоком приоритете, но все же отсутствие этой функции портит жизнь.

Alt-G не работает в случаях:

  1. Когда вы в одном mqh файле, а определение объекта/переменной в другом;
  2. Когда переменная/объект в одном и том же mqh-файле, но используется template (причем он как-то выборочно влияет на файл). И касается это не только объектов, завернутых в template, но и тех, что описаны в этом же самом файле.
 
Vladimir Belozercev:

Про Alt-G в метаэдиторе... Понимаю, что задача скорее всего не в высоком приоритете, но все же отсутствие этой функции портит жизнь.

Alt-G не работает в случаях:

  1. Когда вы в одном mqh файле, а определение объекта/переменной в другом;
  2. Когда переменная/объект в одном и том же mqh-файле, но используется template (причем он как-то выборочно влияет на файл). И касается это не только объектов, завернутых в template, но и тех, что описаны в этом же самом файле.

Выделенное работает. Постоянно пользуюсь.

 
В TaskManager для чартов не активны кнопки Показать/Свойства/Удалить. И не указывается таймфрейм и количество графических объектов.
 
fxsaber:

Выделенное работает. Постоянно пользуюсь.

Если запрос из *.mq5 в *.mqh - то да, а вот обратно у меня не работает, и никогда не работал, кстати... Видел в чужом коде прием с пустым объявлением объектов в начале файла, но он у меня тоже не заработал.
 
Vladimir Belozercev:
Если запрос из *.mq5 в *.mqh - то да, а вот обратно у меня не работает, и никогда не работал, кстати... Видел в чужом коде прием с пустым объявлением объектов в начале файла, но он у меня тоже не заработал.

Объявление должно быть выше по коду (может быть в инклуде, но тоже выше), естественно.

 
2021.02.20 13:37:38.827 Terminal        MetaTrader 5 x64 build 2789 started for MetaQuotes Software Corp.
2021.02.20 13:37:38.830 Terminal        Windows 10 build 19042, Intel Core i7-9750H  @ 2.60GHz, 26 / 31 Gb memory, 851 / 947 Gb disk, IE 11, UAC, GMT+2
2021.02.20 13:37:38.830 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

SYMBOL_MARGIN_INITIAL всё время выдаёт 0.0 , при том, что спецификация выдаёт маржу:

Код:

//+------------------------------------------------------------------+
//|                                               Margin initial.mq5 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//--- input parameters
input int      Input1=9;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print("Margin initial ",DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL),8));
  }
//+------------------------------------------------------------------+
Файлы:
 
Vladimir Karputov:

SYMBOL_MARGIN_INITIAL всё время выдаёт 0.0 , при том, что спецификация выдаёт маржу:

Код:

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