Раз используются глобальные переменные , то предполагается, что используются они из нескольких MQL программ работающих одновременно (?) Если так, то чем чаще программы одновременно обращаются к глобальным переменным, тем больше вероятность, что программы попадут в ожидание на доступ к глобальным переменным. Чем большее количество глобальных переменных используется, тем дольше будет ожидание, поэтому, обращение к глобальным переменным стоит свести к минимуму (кешировать значения).
При доступе к глобальным переменным используется бинарный поиск (ускорять там практически нечего). Для поиска глобальной переменной из +-1000, в худшем случае будет использоваться 10 сравнений строк (имён).
Можно ли ввести глобальные переменные, которые ПОЛНОСТЬЮ скрыты от пользователя? В некоторых случаях действительно раздражает необходимость иметь дело с пользователем, изменяющим или, скорее всего, удаляющим глобальные переменные через графический интерфейс.
struct A
{
protected:
int Value;
void f()
{
this.Value = 0; // Не появляется всплывающая подсказка при написании this.Value.
Value = 0; // Появляется всплывающая подсказка при написании Value.
}
};
Раз используются глобальные переменные, то предполагается, что используются они из нескольких MQL программ работающих одновременно (?)
Недавно наблюдал (то ли в мониторе ресурсов, то ли в антивирусе), как терминал ежесекундно обращался к файлу gvariables.dat.
У меня действительно есть советник, который на каждом тике проверяет значение переменной и раз в 5 секунд его перезаписывает, но действительно ли есть необходимость постоянно (и так часто) сбрасывать все переменные в файл?
Тем более, что это все равно не всегда помогает при критическом завершении работы (неоднократно сталкивался с потерей гл. переменных).
Недавно наблюдал (то ли в мониторе ресурсов, то ли в антивирусе), как терминал ежесекундно обращался к файлу gvariables.dat.
У меня действительно есть советник, который на каждом тике проверяет значение переменной и раз в 5 секунд его перезаписывает, но действительно ли есть необходимость постоянно (и так часто) сбрасывать все переменные в файл?
Тем более, что это все равно не всегда помогает при критическом завершении работы (неоднократно сталкивался с потерей гл. переменных).
Вы использовали функцию GlobalVariablesFlush ?
Глобальные переменные в MT5 записываются файл в случаях:
At(int) - CArrayString - Коллекции данных - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Ранее Debug не удалось полноценно воспользоваться, но запускать скрипты через F5 иногда удобно (правда непонятно почему запуск идет на новом графике, а не на текущем).
И случайно обнаружил в логе такие записи:
При этом сам скрипт выполняется. Попробовал вставить в код такую строку:
{ DebugBreak(); Print( "DebugBreak" ); }
Строка "DebugBreak" печатается, но остановки не происходит
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Раз используются глобальные переменные , то предполагается, что используются они из нескольких MQL программ работающих одновременно (?)
Если так, то чем чаще программы одновременно обращаются к глобальным переменным, тем больше вероятность, что программы попадут в ожидание на доступ к глобальным переменным.
Чем большее количество глобальных переменных используется, тем дольше будет ожидание, поэтому, обращение к глобальным переменным стоит свести к минимуму (кешировать значения).
При доступе к глобальным переменным используется бинарный поиск (ускорять там практически нечего).
Для поиска глобальной переменной из +-1000, в худшем случае будет использоваться 10 сравнений строк (имён).
Можно ли ввести глобальные переменные, которые ПОЛНОСТЬЮ скрыты от пользователя? В некоторых случаях действительно раздражает необходимость иметь дело с пользователем, изменяющим или, скорее всего, удаляющим глобальные переменные через графический интерфейс.
Спасибо, исправлено
Раз используются глобальные переменные, то предполагается, что используются они из нескольких MQL программ работающих одновременно (?)
Недавно наблюдал (то ли в мониторе ресурсов, то ли в антивирусе), как терминал ежесекундно обращался к файлу gvariables.dat.
У меня действительно есть советник, который на каждом тике проверяет значение переменной и раз в 5 секунд его перезаписывает, но действительно ли есть необходимость постоянно (и так часто) сбрасывать все переменные в файл?
Тем более, что это все равно не всегда помогает при критическом завершении работы (неоднократно сталкивался с потерей гл. переменных).
Недавно наблюдал (то ли в мониторе ресурсов, то ли в антивирусе), как терминал ежесекундно обращался к файлу gvariables.dat.
У меня действительно есть советник, который на каждом тике проверяет значение переменной и раз в 5 секунд его перезаписывает, но действительно ли есть необходимость постоянно (и так часто) сбрасывать все переменные в файл?
Тем более, что это все равно не всегда помогает при критическом завершении работы (неоднократно сталкивался с потерей гл. переменных).
Вы использовали функцию GlobalVariablesFlush ?
Глобальные переменные в MT5 записываются файл в случаях:
Вы использовали функцию GlobalVariablesFlush ?
Глобальные переменные в MT5 записываются файл в случаях:
Нет, только Check, Get, Set и Temp.
Наблюдал сразу за двумя терминалами (4 и 5). Возможно, файл был от МТ4, не помню точно.
Build 3063.
А что с ошибкой ERR_OUT_OF_RANGE? Пример тут.
Компилятор пишет: 'ERR_OUT_OF_RANGE' - undeclared identifier
Что это?
ЗЫ Снова нарвался, что DebugBreak не срабатывает.
При дебаге терминал выдал
Что это?
ЗЫ Снова нарвался, что DebugBreak не срабатывает.
Это значит заглушка (не сделано\не доделано\отложено - нужное подчеркнуть)
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
A100, 2021.05.04 00:36
Ранее Debug не удалось полноценно воспользоваться, но запускать скрипты через F5 иногда удобно (правда непонятно почему запуск идет на новом графике, а не на текущем).
И случайно обнаружил в логе такие записи:
При этом сам скрипт выполняется. Попробовал вставить в код такую строку:
{ DebugBreak(); Print( "DebugBreak" ); }Строка "DebugBreak" печатается, но остановки не происходит
Функция сравнить график другого графика все же по штату должна быть в терминале.
Было бы супер если перетаскиванием инструмента с таблицы в кнопку сравнение, создавало бы на активном графике, сравнение инструментов.