MetaTrader 4 Client Terminal build 646: Умный поиск, книги в Маркете и обновление окна параметров MQL4-программы - страница 14
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
У меня странно работает функция GlobalVariableTime()
Код:
Результат:
Билд №646
В МТ5 этот же код отрабатывает корректно.
В соответствующем chr-файле найдите строчку Digits=4 (это значение прописывается для неизвестных системе инструментов). Поменяйте на нужное Вам.
Да, такой метод костылей работает, и на этом спасибо. Но если бы кол-во разрядов пункта подхватывало из hst файла, было бы значительно лучше.
В режиме тестирования с визуализацией на Всех Тиках в момент загрузки истории на графике становятся видны все бары (когда история загружена лишние удаляются) - если в этот момент загрузить индикатор то он видит всю историю=заглядывает в будущее, что неправильно.
Этот эффект наблюдаю давно, с 616-й сборки, но мне он не мешает, более того, если бы его иметь в реале ...(!!!)
Используй OBJPROP_ANCHOR Положение точки привязки графического объекта и относительно этой точки координаты x y
Можно сделать и по вашему:
Но! Когда надо изменить текст в этой метке, повторно делаем:
ObjectSetText(TextLableName,Text,TextSize,FontName,TextColor);
и если было
То после увеличения длинны текста в метке точка привязки остается на месте, хотя в свойствах объекта - верхний правый. А на деле не верхний правый.
Вот в этом и баг.
Можно сделать и по вашему:
Но! Когда надо изменить текст в этой метке, повторно делаем:
и если было
То после увеличения длинны текста в метке точка привязки остается на месте, хотя в свойствах объекта - верхний правый. А на деле не верхний правый.
Вот в этом и баг.
Это не баг, а особенность реализации. В новых четвёрочных объектах типа Label - две точки, отвечающие за привязку, а не одна, как было раньше.
Если Вы создаёте объект вручную, то эти точки совпадают. Если Вы создаёте объект программно, то будьте добры управлять обеими точками: OBJPROP_ANCHOR и OBJPROP_CORNER
У нас на эту тему и пример есть OBJ_LABEL_Example
К вопросам по FileFlush. В MQL5 он должен работать, там поизучал скриптом (ниже). После записи каждой строки из 21 символа либо FileFlush, либо три операции: FileClose, FileOpen, FileSeek в конец файла.
Получил неожиданные результаты. FileFlush выполнялся от 25 миллисекунд и дольше. А тройка операций за время не выше 0.1 миллисекунды.
25 мс сильно не соответствует обычной оценке в 4-6 мс на ожидание полуоборота магнитной пластины.
Также и FileClose, о котором все говорят, что происходит сброс буферов на диск, то есть Flush, очевидно, не реализует запись на магнитную пластину. За 100 мкс в среднем это невозможно.
Поскольку перед этим поразбирался в системе команд интерфейса ATA (интерфейсы жестких дисков IDE, EIDE, SATA основаны на нем) и вообще не нашел как таковой команды сброса на магнитные пластины, теперь так представляю исполнение Flush: меняется режим работы диска сначала на работу без буферизации, затем возврат на работу с буферизацией. Такие команды в ATA есть. Они сложные, как я понимаю. Зато действительно прямо сейчас корректируется магнитная дорожка.
А FileClose, очевидно, забирает все из буфера операционной системы в буфер контроллера диска, и все. Когда физически из этого буфера пройдет запись на пластины, неизвестно, это решит контроллер диска на свое усмотрение. Но при этом видимая длина файла уже меняется на новую. Наблюдал долго.
Разница, на первый взгляд, в уровне надежности. Однако известно, что уже в 2000 году буферы новых дисков в 4 Мб при отключении электропитания вполне надежно записывались на пластины за счет инерции вращения и накопленного в обкладках конденсаторов заряда. Сейчас, значит, и 64 Мб успевают записаться.
Вот так мне теперь кажется, для MQL5. Насколько я понимаю, в MQL4 разработчики пошли дальше, вообще убрав Flush.
Нельзя ли пошагово рассказать, что как должно происходить обновление?
В частности,
- на каком этапе,
- что означает,
- что должно происходить дальше
когда терминал запущен с флагом /skipupdate.
Спасибо.
Wine 1.6
Не работают ограничения на минимальный размер окна свойств пользовательского индикатора. Его можно уменьшить до нуля!
На строках типа:
и
компилятор постоянно выдает предупреждения о том, что выражения всегда имеют результат false. То есть предполагается, что указанные функции не могут вернуть -1. Хотя в справке написано:
В случае удачи функция возвращает количество прочитанных (записанных) байт или -1 в случае ошибки.
Ошибка в справке, в компиляторе или в представленном коде?