Выпущен MetaTrader 4 Client Terminal build 600 с обновленным языком MQL4 и Маркетом приложений
Константы LONG_VALUE, DOUBLE_VALUE и другие из этой группы пропали из всех справочников.
В справках не нашёл описание передачи строк в массивах.
Осталась ошибка в MT4 build 600.
Чтобы ее повторить:
1. Создаем новую папку и копируем в нее файл terminal.exe (наличие файлов metaeditor.exe, mql.dll и mql.exe значения не имеет).
2. Запускаем terminal.exe /portable (можно и без /portable, но в таком случае потом дольше искать файлы, которые будут созданы).
3. Отвечаем "Cancel" на предложение открыть новый счет. Отвечаем "Cancel" на предложение авторизоваться на существующем счете.
4. "Берем" мышью окно терминала за правый нижний угол и перемещаем влево вверх пока оно не будет иметь минимальный размер (примерно 596x420 точек).
5. Закрываем окно "Strategy Tester" (нажимаем мышью на крестик в углу). После этого под надписью "Market Watch" начинает мигать серая полоска, а терминал перестает реагировать на любые действия пользователя.
Осталась ошибка в MT4 build 600.
Чтобы ее повторить:
1. Создаем новую папку и копируем в нее файл terminal.exe (наличие файлов metaeditor.exe, mql.dll и mql.exe значения не имеет).
2. Запускаем terminal.exe /portable (можно и без /portable, но в таком случае потом дольше искать файлы, которые будут созданы).
3. Отвечаем "Cancel" на предложение открыть новый счет. Отвечаем "Cancel" на предложение авторизоваться на существующем счете.
4. "Берем" мышью окно терминала за правый нижний угол и перемещаем влево вверх пока оно не будет иметь минимальный размер (примерно 596x420 точек).
5. Закрываем окно "Strategy Tester" (нажимаем мышью на крестик в углу). После этого под надписью "Market Watch" начинает мигать серая полоска, а терминал перестает реагировать на любые действия пользователя.
Зря сразу не разрешили массивы строк проверить. Сейчас ошибка инициализации таких массивов.
Проверте такой код:
string asIndicatorName[5]; for (j = 0; j < 5; j++) asIndicatorName[j] = j + " ";
В старом MQL4 все ячейки инициализировались и сейчас работает.
В новом инициализируется только первая ячейка. При чём, почему-то размер буфера передаётся аж 123. Хотя, там всего 25. Остальные равны нулю.
Конечно, проверяйте не в MQL. В MQL всё в порядке. Посмотрите в DLL, что приходит.
Не по-людски копировать эту бесконечную простыню первого поста из темы в тему.
Для тех, что впервые заходит - да, все вместе и удобно. А нам что делать? Перечитывать в четвертый раз, выискивая изменения?...
Сделали бы статью с полным списком изменений, а в темах выкладывали бы только обновления (по сравнению с предыдущим билдом).
Странно
Зашел на всп свой запустил 3 терминала от разных брокеров (509) - обновились автоматом до 600
пробую у себя на ноуте запустить 509 от МФ но подключенный на реальный счет (аналогично счету на ВПС) - не обновляется
запускаю 577 от "А" билд и подключаюсь на тот же счет все равно не обновляется до 600.
Странно
Зашел на всп свой запустил 3 терминала от разных брокеров (509) - обновились автоматом до 600
пробую у себя на ноуте запустить 509 от МФ но подключенный на реальный счет (аналогично счету на ВПС) - не обновляется
запускаю 577 от "А" билд и подключаюсь на тот же счет все равно не обновляется до 600.
Странно
Зашел на всп свой запустил 3 терминала от разных брокеров (509) - обновились автоматом до 600
пробую у себя на ноуте запустить 509 от МФ но подключенный на реальный счет (аналогично счету на ВПС) - не обновляется
запускаю 577 от "А" билд и подключаюсь на тот же счет все равно не обновляется до 600.
у меня на семерке копия 509-го терминала на диске Д (установленных терминалов в системе нет) показала в логах при подключении инфу о новой версии терминала, но сама не обновилась..
поторгую пока тем что есть, эксперименты вечером дома буду мутить..
кстати, устанавливал также в семерке с админскими правами на Д диск 58-какой-то билд, каталог mql4 был создан в каталоге, где установлен терминал, так и должно быть ?
у меня на семерке копия 509-го терминала на диске Д (установленных терминалов в системе нет) показала в логах при подключении инфу о новой версии терминала, но сама не обновилась..
поторгую пока тем что есть, эксперименты вечером дома буду мутить..
кстати, устанавливал также в семерке с админскими правами на Д диск 58-какой-то билд, каталог mql4 был создан в каталоге, где установлен терминал, так и должно быть ?
Сначала терминал пришет о доступности обновления и загружает его. На следующем запуске обновление будет применено. Предварительно UAC вас попросит об этом разрешения.
спасибо, проверим апосля
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Выпущен MetaTrader 4 Client Terminal build 600 с обновленным языком MQL4 и Маркетом приложений
За последние 7 месяцев с момента выхода последнего публичного билда 509 была произведена огромная работа по улучшению клиентского терминала MetaTrader 4. Самым важным изменениям подвергся язык программирования торговых стратегий MQL4 - увеличилась скорость выполнения программ, а сам язык стал максимально близок к MQL5. Это значит, что теперь разработчикам торговых роботов на MQL4 также стали доступны все преимущества ООП: классы и структуры, наследование, Стандартная библиотека, ресурсы и многое-многое другое.
Новый редактор MetaEditor предоставит такие удобства, как отладка, профилировка, персональное хранилище, автоподстановка имен функций, сниппеты, вставка ресурсов и интеллектуальное управление кодом.
В новом терминале MetaTrader 4 появился Маркет - рынок защищенных приложений для терминала MetaTrader 4. Теперь любой разработчик может выставить на продажу на единой площадке собственные разработки для торговли и анализа рынка, а трейдеры могут прямо из терминала купить понравившийся им продукт. Все скачанные из Маркета EX4 файлы приложений имеют такую же высокую степень защиты, как и в MQL5. Разработчики MQL4 программ могут самостоятельно устанавливать количество активаций и цену на свои продукты, и не думать больше о технологических вопросах продаж - все это возьмет на себя MetaTrader 4 Маркет.
В связи с изменением файловой структуры и расположения каталога для хранения пользовательских файлов (индикаторы, советники, скрипты, шаблоны, логи и т.д.), в процессе обновления будет произведено автоматическое копирование этих данных в новое место. При этом никакие пользовательские файлы при копировании удаляться не будут, все оригиналы также останутся на своих местах, превратившись фактически в запасную копию. Более подробно об этом написано ниже в разделе Автоматическое копирование MQL4 программ при обновлении со старых билдов
MetaTrader 4 Client Terminal
Увеличена скорость работы MQL4-программ, встроена поддержка DLL и Visual Studio, появился доступ к MQL5 Storage и многое-многое другое.
Почему была введена новая система хранения данныхСистема Microsoft Windows XP, выпущенная 13 лет назад, разрешает программам записывать собственные данные по месту установки, даже если она была произведена в системную папку Program Files. Для записи в любую папку пользователю достаточно иметь администраторские права на компьютере.
Начиная с Windows Vista, компания Microsoft ввела ограничение на запись в каталог Program Files. Так, при включенной системе User Account Control (UAC) программам запрещается хранить собственные данные в каталоге Program Files. Все данные должны сохраняться в отдельном каталоге пользователя. Такое ограничение было введено с целью защиты от вредоносных программ, а также для того чтобы работа с программой под одной учетной записью никак не могла изменить или испортить данные этой же программы, необходимые для другой учетной записи. В дальнейшем требования безопасности в операционных системах Microsoft только усиливались, в частности, начиная с Windows 8, система UAC не отключается никогда, даже если в ее настройках установлена опция "Никогда не уведомлять".
Для обеспечения совместимости старых программ при использовании UAC Microsoft ввела систему виртуализации. Если программа пытается сохранить свои данные в каталог Program Files, то фактически (физически) эти данные сохраняются в отдельном каталоге вида C:\Users\<имя-пользователя>\AppData\Local\VirtualStore\Program Files. При этом проводник Windows показывает файлы так, как будто они сохраняются в каталоге установки. Компания Microsoft заявляет, что данный режим предусмотрен только для совместимости и в последующем может быть убран.
Для соответствия рекомендациям Microsoft, начиная с 600 билда, в клиентском терминале MetaTrader 4 изменена структура хранения данных. Терминал теперь также будет сохранять свои данные в каталоге пользователя.
Каталог данных пользователяВ новой версии все данные конкретного пользователя, работающего с определенной копией терминала MetaTrader 4, хранятся в специальном месте, называемом каталог данных терминала. Находится этот каталог на системном диске (диске, на котором установлена операционная система Windows) по пути следующего вида
гдe:В меню терминала "Файл" добавлена команда "Открыть каталог данных" для поиска и открытия каталога данных.
В корне каждого каталога данных терминала также находится файл origin.txt, который содержит путь к папке установки терминала, к которой относятся эти данные. Это позволяет сопоставить каждый каталог данных терминала с конкретным каталогом установки терминала, например, если у пользователя установлено несколько копий терминала MetaTrader 4. Такой способ работы с терминалом, когда каталог данных находится отдельно от каталога установки, является основным режимом.
Для дополнительного удобства при каждом запуске терминала в его журнал выводится запись, в которой указывается путь к каталогу данных. Например:
2014.02.10 12:48:28.477 Data Folder: C:\Users\JohnSmith\AppData\Roaming\MetaQuotes\Terminal\9F86138A4E27C7218E9EC98A5F8D8CA1
Перенос файлов MQL4-программ при обновлении на MetaTrader 4 build 600 и вышеПри запуске после обновления терминал проверяет, и если его нет, то создает каталог данных. Если этот каталог отличается от каталога установки, в него производится копирование штатных данных терминала - стандартные MQL4-программы, исторические данных, конфигурационные файлы, шаблоны и т.д. В каталоге установки остаются только те файлы, которые терминал не изменяет в процессе работы (исполняемые файлы, компилятор mql.dll, звуковые файлы и т.д.). Каталог данных терминала будет отличаться от каталога установки в следующих случаях:
Только в тех случаях, когда не подходит ни одно из вышеуказанных описаний, данные терминала будут храниться в каталоге установки.
После копирования штатных данных терминала осуществляется миграция пользовательских файлов в каталог данных. На этом этапе определяется, в каком каталоге хранились пользовательские данные терминала. Если данные хранились в каталоге установки терминала, происходит их копирование по следующей схеме:
Примечание: переносятся только файлы из корневого каталога \experts. Никакие подкаталоги не переносятся, поскольку невозможно достоверно определить их содержимое.
Далее проверяется, хранил ли клиентский терминал данные в каталоге виртуализации (виртуальное хранилище операционной системы, описанное выше). В большинстве случаев, когда терминал установлен в каталоге Program Files и операционной системой является Windows Vista и выше, данные терминала хранятся именно в этом каталоге. Если данные обнаружены, осуществляется их копирование по вышеописанной схеме.
При копировании в процессе миграции в журнал терминала выводятся записи о том, откуда были скопированы файлы и куда. Для просмотра журналов целиком откройте вкладку "Журнал" в окне "Терминал" и выполните команду "Открыть" в контекстном меню. Будет открыт каталог, в котором хранятся файлы журнала терминала.
Если процесс миграции успешно выполнен для данной копии терминала, то при последующих обновлениях терминала MetaTrader 4 миграция уже не производится. Если каталог данных отличается от каталога установки и при миграции были перенесены не только стандартные файлы, но и пользовательские MQL4-программы, показывается информационный диалог:
Режим PortableДля работы терминала на съемных носителях, в несистемных каталогах, а также для работы в Windows XP в терминале предусмотрен режим запуска Portable. При запуске в данном режиме терминал будет пытаться сохранять свои данные в каталоге установки. В то же время запуск в режиме Portable не гарантирует того, что операционная система разрешит хранение данных в каталоге установки (например, если терминал установлен в каталог Program Files и включена система UAC).
Для возможности работы в режиме Portable необходимо соблюдение следующих требований:
Чтобы запустить терминал в режиме Portable, необходимо использовать ключ "/portable". Для удобства на Рабочем столе можно создать дополнительный ярлык запуска терминала с нужным именем и добавить ключ прямо в ярлык:
Теперь при выставлении торговых запросов все запросы передаются через основное соединение с торговым сервером. Таким образом значительно сокращается время обработки торговых запросов, особенно первого торгового запроса, за счет отсутствия дополнительного ожидания установки соединения с торговым сервером. Для работы новой схемы отправки запросов необходимо обновление торгового сервера - на старых торговых серверах запросы по-прежнему выставляются в отдельном соединении.
В связи с переходом на новую модель обработки запросов была убрана возможность отмены еще не принятых сервером торговых заявок (кнопка "Отмена" на диалоге состояния торгового запроса).
В новом формате в структура RateInfo добавлены поля для хранения спреда и торгового объема:
Соответственно, если в программах MQL4 используются DLL для передачи/приема ценовых данных, то соответствующие функции в исходных кодах должны быть переписаны и заново скомпилированы с учетом изменении формата для обеспечения правильной работы.
Используется пословный поиск с учетом морфологии русского и английского языков. Поиск осуществляется в разделах, указанных пользователем в настройках:
Контекстное меню вкладки результатов поиска содержит дополнительные команды в зависимости от типа результата:
При разрешенной опции управления торговыми уровнями с чарта значение цены у алерта может быть изменено перетаскиванием мышью на новый ценовой уровень. Алерт может быть отключен или удален с помощью вызова контекстного меню на соответствующем уровне на графике.
Достаточно указать имя компании (или фрагмент имени сервера), и терминал автоматически добавит в список все сервера, принадлежащие данной компании (сервера, имена которых включают в себя указанную строку):
Новая система работы с файлами помощи также снижает расход трафика за счет того, что происходит скачивание руководства только на том языке, который пользователь установил для интерфейса клиентского терминала. Также она обеспечивает регулярное обновление справочного руководства независимо от обновления клиентского терминала.
В окне регистрации необходимо указать желаемый логин, а также адрес электронной почты. После нажатия кнопки "Регистрация" на указанный адрес будет выслано письмо для активации аккаунта MQL5.community.
Аккаунт в сообществе MQL5.community позволяет трейдеру пользоваться мощными дополнительными сервисами:
Данная опция необходима при использовании сигналов на VPS (Virtual Private Server) и также может быть использована для повышения надежности синхронизации при работе с уже выбранным сигналом.Исправления по сообщениям на форуме и крешлогам.
MetaTrader 4 MultiTerminal
Обновление на новый MetaTrader 4 build 600 доступно через систему LiveUpdate.
Что нового в MQL4
Язык программирования MQL4 полностью переработан и приведен к уровню MQL5 - теперь писать торговых роботов на MQL4/5 можно в единой среде разработке MetaEditor и используя единые стиль, библиотеки и инструменты отладки.
MQL4 пользуется заслуженной популярностью среди разработчиков автоматических торговых систем благодаря простоте изучения и огромному количеству кода, наработанного за многие годы использования терминала MetaTrader 4. Но вместе с тем, ему были присущи и некоторые недостатки, проистекающие из главного преимущества - простой язык программирования не позволял писать сложные системы и затруднял портирование отлаженных библиотек из языков высокого уровня. Поэтому мы решили перенести в него максимум функций и возможностей языка MQL5, полностью сохраняя функционал MQL4. То есть все мощные функции MQL5, включая ООП и компилятор в нативный код, станут доступны в MQL4.
Для этого мы разработали единый компилятор, который автоматически поддерживает оба языка MQL4 и MQL5. MetaEditor тоже становится единым для обеих платформ MetaTrader 4 и MetaTrader 5. С его помощью можно компилировать как MQL4, так и MQL5 из любой версии. Для работы также сразу становится доступным и MQL5 Storage.
Защита MQL4-программ поднимается на один уровень с MQL5, в новых EX4/EX5-файлах очень серьезная и полностью переработанная защита по сравнению со старым EX4. А это значит, что для MetaTrader 4 становится доступным и Маркет защищенных приложений на EX4.
Кроме того, в язык MQL4 добавлены новые графические объекты и новые функции по работе с графиками. Стандартная библиотека из MQL5 будет портирована и в MQL4, что предоставит для разработчиков программ новые возможности по созданию собственных графических интерфейсов и торговых библиотек. Теперь в MetaTrader 4 можно создавать полноценные приложения с использованием ресурсов.
Изменения в языке MQL4
Изменилось поведение функции ArrayCopyRates() - в старой версии MQL4 эта функция производила копирование ценовых серий в массив double[][6]. Теперь для получения таймсерий необходимо использовать массив из элементов структуры MqlRates:
Новый формат функции также производит виртуальное копирование, то есть реального копирования не происходит, а при обращении к скопированным значениям происходит обращения прямо к ценовым данным.
Для совместимости со старыми MQL4 программами сохранился и старый формат вызова, но теперь производится реальное копирование данных в массив типа double.
Это означает, что при изменении значений в таймсерии (добавлении новых баров, перестройке, обновлении цены Close последнего бара), необходимо заново скопировать нужные данные в массив dest_array[][]. При этом массив-приемник будет автоматически распределен под требуемое количество копируемых баров, даже если он был объявлен статически.Следует иметь ввиду, что преобразование типа datetime в строку теперь зависит от режима компиляции:
Таблица отличий между компиляторами
и новые OnInit(), OnStart(), OnCalculated, OnTick(), OnTimer(), OnChartEvent(), OnTester(), OnDeinit() должны точно соответствовать своим сигнатурам
Список зарезервированных слов расширен, поэтому именами не могут быть такие широко распространенные слова, как short, long, const и т.д.
datetime - 32-битное целое.
Предопределенная переменная Volume имеет тип double
datetime - 64-битное целое.
Предопределенная переменная Volume имеет тип long
* Следует обратить особое внимание на ошибку "Array out of range" - многие старые пользовательские индикаторы при запуске на графике будут выдавать эту ошибку в новом компиляторе в режиме strict. Желательно найти причину и устранить ее.
** В новом MQL4 и MQL5 за режим совместного использования файлов отвечают флаги FILE_SHARE_READ и FILE_SHARE_WRITE, которых не было в старом MQL4.
Автоматическое копирование MQL4 программ при обновлении со старых билдов
В предыдущих билдах клиентского терминала MetaTrader 4 (509 и ниже) все MQL4 программы хранились в корневой папке <каталог_установки_терминала>\experts\ в следующих подпапках:
В новой версии MQL4 файловая структура для хранения исходных кодов изменилась. Теперь все программы на MQL4 должны находиться в папке <каталог_данных>\MQL4\ во вложенных соответствующих папках:
При обновлении терминала MetaTrader 4 с 509 билда на новую версию все файлы MQ4, MQH и EX4 из стандартных корневых папок старого местоположения автоматически копируются и раскладываются в соответствующие папки. Дополнительно созданные пользователем внутри стандартных папок дочерние папки с файлами никак не обрабатываются, их необходимо самостоятельно скопировать в новое место, если они необходимы.
При обновлении автоматическая перекомпиляция старых EX4-файлов на новую версию не производится, пользователю предоставлена возможность самому решать, какие исходные коды он хочет скомпилировать в новую версию EX4. Все старые EX4 будут работать и в новом терминале MetaTrader 4. Библиотеки EX4, скомпилированные новым компилятором, могут вызываться только из программ EX4, также скомпилированных в новой версии.
Возможно, в некоторых случаях в исходных файлах потребуется исправить пути в #property include для включаемых файлов (если относительные пути изменились). Важно запомнить, что сейчас корневой папкой для редактора MetaEditor является папка <каталог_данных>\MQL4\, все программы должны находиться в правильных дочерних подпапках.
Найти каталог данных (<каталог_данных>) на компьютере для каждой копии установленного терминала MetaTrader 4 можно из меню терминала или редакторе MetaEditor: "Файл" - "Открыть каталог данных".
Обновление на новый MetaTrader 4 build 600 доступно через систему LiveUpdate.