Новая версия платформы MetaTrader 5 build 3081: Улучшения в MQL5-сервисах и обновленный дизайн - страница 19

 
Ilyas # :

Раз используются глобальные переменные , то предполагается, что используются они из нескольких MQL программ работающих одновременно (?)
Если так, то чем чаще программы одновременно обращаются к глобальным переменным, тем больше вероятность, что программы попадут в ожидание на доступ к глобальным переменным.
Чем большее количество глобальных переменных используется, тем дольше будет ожидание, поэтому, обращение к глобальным переменным стоит свести к минимуму (кешировать значения).

При доступе к глобальным переменным используется бинарный поиск (ускорять там практически нечего).
Для поиска глобальной переменной из +-1000, в худшем случае будет использоваться 10 сравнений строк (имён).

Можно ли ввести глобальные переменные, которые ПОЛНОСТЬЮ скрыты от пользователя? В некоторых случаях действительно раздражает необходимость иметь дело с пользователем, изменяющим или, скорее всего, удаляющим глобальные переменные через графический интерфейс.

 
Функция сравнить график другого графика все же по штату должна быть в терминале.
 
Ilyas #:

Спасибо, исправлено

struct A
{
protected:
  int Value;
  
  void f()
  {
    this.Value = 0; // Не появляется всплывающая подсказка при написании this.Value.
    Value = 0;      // Появляется всплывающая подсказка при написании Value.
  }
};


 
Ilyas #:

Раз используются глобальные переменные, то предполагается, что используются они из нескольких MQL программ работающих одновременно (?)

Недавно наблюдал (то ли в мониторе ресурсов, то ли в антивирусе), как терминал ежесекундно обращался к файлу gvariables.dat.

У меня действительно есть советник, который на каждом тике проверяет значение переменной и раз в 5 секунд его перезаписывает, но действительно ли есть необходимость постоянно (и так часто) сбрасывать все переменные в файл?

Тем более, что это все равно не всегда помогает при критическом завершении работы (неоднократно сталкивался с потерей гл. переменных).

 
Andrey Khatimlianskii #:

Недавно наблюдал (то ли в мониторе ресурсов, то ли в антивирусе), как терминал ежесекундно обращался к файлу gvariables.dat.

У меня действительно есть советник, который на каждом тике проверяет значение переменной и раз в 5 секунд его перезаписывает, но действительно ли есть необходимость постоянно (и так часто) сбрасывать все переменные в файл?

Тем более, что это все равно не всегда помогает при критическом завершении работы (неоднократно сталкивался с потерей гл. переменных).

Вы использовали функцию GlobalVariablesFlush ?

Глобальные переменные в MT5 записываются файл в случаях:

  1. GlobalVariablesFlush
  2. Закрытия терминала
  3. Сохранения профиля
 
Ilyas #:

Вы использовали функцию GlobalVariablesFlush ?

Глобальные переменные в MT5 записываются файл в случаях:

  1. GlobalVariablesFlush
  2. Закрытия терминала
  3. Сохранения профиля

Нет, только Check, Get, Set и Temp.

Наблюдал сразу за двумя терминалами (4 и 5). Возможно, файл был от МТ4, не помню точно.

 

Build 3063.

А что с ошибкой ERR_OUT_OF_RANGE? Пример тут.

Компилятор пишет: 'ERR_OUT_OF_RANGE' - undeclared identifier

Документация по MQL5: Стандартная библиотека / Коллекции данных / CArrayString / At
Документация по MQL5: Стандартная библиотека / Коллекции данных / CArrayString / At
  • www.mql5.com
At(int) - CArrayString - Коллекции данных - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
При дебаге терминал выдал
2021.10.05 21:18:58.237 Test19 (EURUSD,H1)      failed to load debug types

Что это?


ЗЫ Снова нарвался, что DebugBreak не срабатывает.

 
fxsaber #:
При дебаге терминал выдал

Что это?


ЗЫ Снова нарвался, что DebugBreak не срабатывает.

Это значит заглушка (не сделано\не доделано\отложено - нужное подчеркнуть)

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

Ошибки, баги, вопросы

A100, 2021.05.04 00:36

Ранее Debug не удалось полноценно воспользоваться, но запускать скрипты через F5 иногда удобно (правда непонятно почему запуск идет на новом графике, а не на текущем).

И случайно обнаружил в логе такие записи:

При этом сам скрипт выполняется. Попробовал вставить в код такую строку:

{ DebugBreak(); Print( "DebugBreak" ); }

Строка "DebugBreak" печатается, но остановки не происходит

 
BillionerClub #:
Функция сравнить график другого графика все же по штату должна быть в терминале.

Было бы супер если перетаскиванием инструмента с таблицы в кнопку сравнение, создавало бы на активном графике, сравнение инструментов.