Метаквоты, всё же, есть проблемы с главным окном терминала, начиная, примерно, с 480 билда.
Ранее писал уже. Кажется, Слава отвечал примером кода, который работал. Но пример был из MQL4-скрипта.
Окно не выполняет команды по восстановлению, разворачиванию, активации, если эти команды посылает другое приложение из окна со стилем "всегда поверх других окон".
Экспериментировал из консоли с таким стилем.
Особенно странно, что окно разворачивается, но находится под всеми остальными окнами. Должно же развернуться там, где было в Z-порядке.
Но, если перед началом активировать MDI-клиента, то всё работает правильно.
======================
Хорошо, хоть, со стилем "без заголовка" разобрался. Мой косяк. Перерисовывал окно путём клика мыши на графике. Чтобы с другими сообщениями не возиться. Больно сложно.
Сделал ограничение в 2 открытых окна графика. Если меньше, чем 2 окна, то игнорируем операцию. В 509 было 2 окна открыто (работало), в 574 одно окно открыто (не работало) :-))
P.S. Открыть файл к которому обращается индикатор и в блокноте и в Екселе становится невозможным не только после удаления индикатора, но даже после закрытия терминала. Только перезагрузка компьютера помогает.
P.S. Открыть файл к которому обращается индикатор и в блокноте и в Екселе становится невозможным не только после удаления индикатора, но даже после закрытия терминала. Только перезагрузка компьютера помогает.
Потом уже открывайте файл с помощью других программ
В индикаторе FileClose прописан, в том то и дело. При компиляции индикатора терминал падает (это у него в последнее время постоянно происходит), после этого файл открыт. Применять и удалять индикатор снова тоже не помогает.
1. При открытии используйте такую комбинацию флагов: FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI (зачем одновременно FILE_WRITE и FILE_SHARE_WRITE - не знаю)
2. В заголовке укажите новую версию и занулите записываемый массив:
int file_version=401;
string c_copyright;
string c_symbol=Symbol();
int i_digits=Digits;
int i_unused[13];
//---
c_copyright="(C)opyright 2003, MetaQuotes Software Corp.";
ArrayInitialize(i_unused,0);
//--- write history file headerFileWriteInteger(HstHandle,file_version,LONG_VALUE);
FileWriteString(HstHandle,c_copyright,64);
FileWriteString(HstHandle,c_symbol,12);
FileWriteInteger(HstHandle,TimeFrame,LONG_VALUE);
FileWriteInteger(HstHandle,i_digits,LONG_VALUE);
FileWriteInteger(HstHandle,0,LONG_VALUE);
FileWriteInteger(HstHandle,0,LONG_VALUE);
FileWriteArray(HstHandle,i_unused,0,13);
3. Запись баровых данных переделайте на вызов вот такой функции:
1. При открытии используйте такую комбинацию флагов: FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI (зачем одновременно FILE_WRITE и FILE_SHARE_WRITE - не знаю)
2. В заголовке укажите новую версию и занулите записываемый массив:
3. Запись баровых данных переделайте на вызов вот такой функции:
4. Все переменные, связанные с volume, сделайте типа long.
Только сегодня переписывал 2 таких советника, все работает.
Удачи!
И от меня спасибо. До функции я уже дошёл, а до проверки формата ещё нет. Кстати, функция вроде и так работает
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Метаквоты, всё же, есть проблемы с главным окном терминала, начиная, примерно, с 480 билда.
Ранее писал уже. Кажется, Слава отвечал примером кода, который работал. Но пример был из MQL4-скрипта.
Окно не выполняет команды по восстановлению, разворачиванию, активации, если эти команды посылает другое приложение из окна со стилем "всегда поверх других окон".
Экспериментировал из консоли с таким стилем.
Особенно странно, что окно разворачивается, но находится под всеми остальными окнами. Должно же развернуться там, где было в Z-порядке.
Но, если перед началом активировать MDI-клиента, то всё работает правильно.
======================
Хорошо, хоть, со стилем "без заголовка" разобрался. Мой косяк. Перерисовывал окно путём клика мыши на графике. Чтобы с другими сообщениями не возиться. Больно сложно.
Сделал ограничение в 2 открытых окна графика. Если меньше, чем 2 окна, то игнорируем операцию. В 509 было 2 окна открыто (работало), в 574 одно окно открыто (не работало) :-))
не помогло.
Посоветуйте как исправить.
Закройте файл с помощью FileClose
Потом уже открывайте файл с помощью других программ
Закройте файл с помощью FileClose
Потом уже открывайте файл с помощью других программ
В индикаторе FileClose прописан, в том то и дело. При компиляции индикатора терминал падает (это у него в последнее время постоянно происходит), после этого файл открыт. Применять и удалять индикатор снова тоже не помогает.
Посоветуйте как исправить.
1. При открытии используйте такую комбинацию флагов: FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI (зачем одновременно FILE_WRITE и FILE_SHARE_WRITE - не знаю)
2. В заголовке укажите новую версию и занулите записываемый массив:
3. Запись баровых данных переделайте на вызов вот такой функции:
4. Все переменные, связанные с volume, сделайте типа long.
Только сегодня переписывал 2 таких советника, все работает.
Удачи!
Buil 574 а так же актуальный Build 574
При переключении периода графика происходит переинициализация глобальных переменных причем только в индикаторах.
В справке однозначно написанно что инициализация происходит однажды при запуске программы
Из лога видно, что эксперт выводит правильные измененные значения а индикатор производит инициализацию
Используется в эксперте и индикаторе этот простой код
Чем обосновывается такое поведение в индикаторе?
Ошибка или не документированная особенность?
было бы еще удобно показ уровней на горячую клавишу положить
1. При открытии используйте такую комбинацию флагов: FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI (зачем одновременно FILE_WRITE и FILE_SHARE_WRITE - не знаю)
2. В заголовке укажите новую версию и занулите записываемый массив:
3. Запись баровых данных переделайте на вызов вот такой функции:
4. Все переменные, связанные с volume, сделайте типа long.
Только сегодня переписывал 2 таких советника, все работает.
Удачи!
И от меня спасибо. До функции я уже дошёл, а до проверки формата ещё нет. Кстати, функция вроде и так работает
Чем обосновывается такое поведение в индикаторе?
Ошибка или не документированная особенность?
Да. Это - ошибка. Исправили. Спасибо за замечание