Новая версия платформы MetaTrader 5 build 1730: Проекты в MetaEditor и синтетические инструменты
Как обновить терминал?
Как обновить терминал?
Для получения самых последних билдов необходимо залогиниться в терминале MetaTrader 5 к торговому серверу MetaQuotes-Demo.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Советники: FORTS Currency Powers
Stanislav Korotky, 2017.12.21 13:55
Например, когда последний пробрасываемый тик меняется, но не всегда попадает в историю (тиковый ЗигЗаг, например).
А это как? У меня все пробрасываемые тики попадают в историю.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Советники: FORTS Currency Powers
fxsaber, 2017.12.21 14:07
CustomTicksAdd + CustomTicksDelete.
ЗЫ А на самом деле не хватает такой опции в CustomTicksAdd.И ещё не ясен момент создания библиотек с, например, такой структурой:
Какой файл добавлять - не понятно, взаимосвязей много, и не факт, что корень в одном файле находится. Опять же - там всё в классах, а не исполняемый файл...
Проекты ещё нельзя публиковать из редактора в КодоБазу? То есть я сейчас закончил общедоступный проект "GalacticExplosion" - мне сейчас вручную размещать советник в кодобазе, как обычно или ждать нового функционала по синхронизации проектов, редактора и кодобазы?
В следующем релизе будет.
Пока это первая версия
не ясен момент с проектами, при добавлении включаемого файла, сам файл копируется в дирректорию проекта или остаются в инклюдниках.
Остается на своем месте.
В разделяемых проектах, если хотите работать совместно, нужно нештатные инклюдники переносить в проект. Штатные у всех одинаковы.
При работе с синтетическими инструментами платформа mt5, в выходной день, при отсутствии котировок, потребляет как-то многовато ресурсов.
На картинке создан индекс доллара, как в примере от metaquotes, открыт всего один график, без индикаторов советников вообще, минимум баров в окне и истории - 5000, metaquotes-demo.
i7 процессор ноута.
Платформа откусывает 20 % процессора.
При открытии более 5-6 синтетических инструментов ноут виснет загрузкой процессора на 96%. Это нормально?
Что-то я не совсем понял с Хранилищем.
Коммит я сделал.
Потом - было обновление.
После обновления - такое ощущение, что Хранилище исчезло. Иконки папок в навигаторе редактора - без значков Хранилища. Меняю файлы, пишу "отправить изменения в Хранилище" - никаких измененных файлов не находит. Пытаюсь запросить файлы из хранилища - в логе пишет, что апдейт успешно прошел, но изменений в файлах не происходит (по идее, то, что я изменил при этом должно быть затерто копией из Хранилища).
Все у меня какие-то проблемы...
P.S.
Взял новый файл - добавил, добавилось. Начало вроде с этим файлом нормально работать. А как получить доступ к старым файлам ? Или надо все их заново в Хранилище добавить, и отправить изменения туда ?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Новая версия платформы MetaTrader 5 build 1730: Проекты в MetaEditor и синтетические инструменты
21 декабря 2017 года будет опубликовано обновление платформы MetaTrader 5.
В новой версии платформы прекращается поддержка десктопных и мобильных терминалов старых версий:
Изменен протокол работы с MQL5 Storage
Для поддержки новых групповых проектов был изменен протокол работы с онлайн хранилищем MQL5 Storage. К сожалению, после обновления на новую версию платформы вам потребуется заново извлечь все данные из хранилища. Сами данные, которые в нем хранятся, не будут затронуты и не потеряются.
Перед обновлением на новую версию платформы мы рекомендуем отправить все локальные изменения в хранилище (выполнить Commit).
В MetaEditor появились полноценные проекты. Разрабатывать программы стало значительно удобнее.
Теперь в качестве проекта не выступает основной MQ5 файл программы. Проект — это отдельный файл "MQPROJ", в котором хранятся настройки программы, параметры компиляции и информация обо всех используемых файлах. Доступ к основным настройкам проекта организован через отдельное диалоговое окно, больше нет необходимости указывать их в исходном коде через #property.
Для удобной работы с проектом предусмотрена отдельная вкладка в Навигаторе. В ней по категориям отображаются все используемые файлы: включаемые, ресурсные, заголовочные и т.д. При этом файлы добавляются в навигатор проекта автоматически. Например, если вы включите новый MQH-файл в код, он будет автоматически показан в разделе "Dependencies" навигатора.
Мы сразу же предусмотрели возможность работы с новыми проектами в онлайн хранилище MQL5 Storage. Теперь намного удобнее заниматься разработкой больших проектов вместе с другими участникам сообщества MQL5.community.
Для работы с групповыми проектами добавлен новый раздел Shared Projects. Проект, созданный в этом разделе, сразу же отправляется в хранилище: вы можете быстро раздать права на него другим участникам и приступить к совместной разработке.
При компиляции проекта в Shared Project исполняемый файл EX5 автоматически копируется в локальный каталог Experts, Indicators или Scripts, в зависимости от типа программы. Вы можете сразу запустить программу на графике, не копируя файлы каждый раз вручную.
Изменения в работе с хранилищем MQL5 Storage
Для реализации полноценной работы с групповыми проектами был полностью переделан протокол взаимодействия с хранилищем MQL5 Storage. К сожалению, после обновления на новую версию платформы вам потребуется заново извлечь все данные из хранилища. Сами данные, которые в нем хранятся, не будут затронуты и не потеряются.
Команда "Извлечь данные из хранилища" (Checkout from Storage) теперь недоступна. Для извлечения данных используются команды "Активировать MQL5 Storage" и "Получить файлы из хранилища":
Новые проекты: пример создания и подробности работы
В MetaEditor появилась новая сущность — собственно проект. Это файл с расширением mqproj, в котором хранятся общие свойства программы, а также информация обо всех используемых файлах. Теперь свойствами программы можно удобно управлять в отдельном диалоговом окне MetaEditor, а не изменять их вручную в исходном коде (директивы #property).
Если у вас уже есть разработки, то самый простой способ попробовать новые проекты — воспользоваться командой "Новый проект из исходного файла".
В том же каталоге, что и выбранный исходный файл, будет создан одноименный файл проекта с расширением mqproj. В проект автоматически добавятся основные свойства программы, указанные в виде #property в исходном файле: имя, копирайт, версия, ссылка на разработчика и описание.
В свойствах проектов появились две новые опции для компиляции MQL5-программ:
Для работы с проектом предназначена отдельная вкладка "Проект" в окне "Навигатор". В ней удобно показываются все файлы, используемые в проекте. При генерации проекта из исходного файла в раздел "Dependencies" автоматически добавляются все используемые включаемые файлы (указанные при помощи директивы #include в основном MQ5-файле и во всех включенных в него файлах).
При добавлении новых включаемых файлов в исходный код, они также будут появляться в Навигаторе проекта. В раздел Headers будут добавляться используемые заголовочные файлы, а в раздел Resources — изображения, звуки и другие MQL5-программы, включенные в проект в виде ресурсов. В разделе Sources показываются MQ5-файлы с исходным кодом. В раздел Settings and files можно добавлять другие файлы, например, настройки для тестирования или шаблоны для графиков.
Для добавления существующих файлов в проект и удаления из него файлов воспользуйтесь командами контекстного меню. Будьте внимательны при удалении: вы можете убрать файл из проекта (убрать привязку) или полностью удалить его с жесткого диска:
Новый проект создать также легко, как и обычную MQL5-программу. Нажмите "Новый проект", а затем в Мастере MQL5 выберите тип создаваемой программы и укажите ее свойства (имя, обработчики событий и т.п.).
Для получения исполняемого файла EX5 вы можете открыть проект и выполнить команду компиляции (F7) или же, как раньше, открыть основной MQ5-файл программы и скомпилировать его.
Групповые проекты в MQL5 Storage: подробности работы
Для работы с групповыми проектами предусмотрен раздел Shared Projects. Если у вас еще не подключено хранилище, выполните в контекстном меню этой папки команду Activate MQL5 Storage. MetaEditor сразу же проверит, есть ли в вашем хранилище сохраненные данные, а также доступны ли вам какие-либо групповые проекты. Имеющиеся данные будут сразу же извлечены из хранилища и загружены на компьютер (Checkout). Доступные групповые проекты будут показаны в разделе Shared Projects; чтобы получить их, нажмите "Извлечь файлы из хранилища" в контекстном меню.
Для создания нового группового проекта выберите папку Shared Projects и нажмите "Новый проект":
Далее пройдите стандартные шаги Мастера MQL5: задайте тип, имя и свойства будущей программы. Выбирайте для групповых проектов четкие и понятные имена, чтобы другие участники легко их различали. В имени допускаются только латинские буквы и цифры, пробелы не допускаются.
Сразу после создания проект будет автоматически добавлен в хранилище MQL5 Storage. Используемые файлы стандартной библиотеки в хранилище не добавляются, при необходимости вы можете добавить их вручную.
Чтобы разрешить другим участникам работать с проектом, откройте его свойства: здесь можно назначить права конкретным пользователям (указать логин MQL5.community), а также задать общие параметры групповой работы:
Для удобства работы при компиляции группового проекта конечный исполняемый файл (EX5) автоматически копируется в папку Experts, Indicators или Scripts в зависимости от типа программы. Таким образом, вы сразу можете запустить программу в терминале без ее ручного копирования в нужный каталог.
Публичные проекты в MQL5 Storage: участие в разработках
Как уже упоминалось выше, у каждого группового проекта в MQL5 Storage есть настройки публичности: проект может быть приватным или же открытым для участия других пользователей. Теперь все проекты, к которым можно свободно присоединиться, отображаются в отдельной вкладке "Публичные проекты".
Каждый может найти интересный проект и принять участие в его разработке. Достаточно нажать "Присоединиться", а затем получить проект из хранилища.
Каждый присоединившийся пользователь получает права только на просмотр проекта. Для получения прав на отправку собственных изменений в хранилище обратитесь к автору проекта. Чтобы узнать его логин, откройте свойства проекта через контекстное меню.Terminal: Добавлена возможность создавать синтетические финансовые инструменты — инструменты на основе одного или нескольких имеющихся. Нужно просто задать формулу для расчета котировок, и платформа в режиме реального времени будет генерировать тики синтетического инструмента, а также создаст его минутную историю.
Как это происходит
Например, вы можете создать инструмент, который будет показывать индекс доллара (USDX). Его формула будет выглядеть следующим образом:
Примечание: в исходной формуле индекса доллара используются пары USDEUR и USDGBP. Поскольку в платформе есть только обратные валютные пары, в формуле синтетического инструмента для них используется отрицательная степень и цена Ask вместо Bid.
В режиме реального времени платформа будет рассчитывать цену нового инструмента на основе котировок шести других инструментов, предоставляемых вашим брокером. В Обзоре рынка и на графике вы будете видеть, как изменяется его цена:
Создайте новый пользовательский инструмент, откройте его спецификацию и укажите формулу:
Для удобства редактор формул показывает список возможных вариантов по мере ввода имен инструментов и функций.Расчет тиков и минутных баров синтетического инструмента начнется при его добавлении в "Обзор рынка". При этом в "Обзор рынка" сразу же автоматически добавляются все символы, необходимые для его расчета. В журнал платформы будет добавлена запись о начале расчета: Synthetic Symbol USDX: processing started.
Расчет котировок в реальном времени
Каждые 100 мс (десять раз в секунду) проверяется, изменилась ли цена хотя бы одного из инструментов, участвующих в формуле. Если да, происходит расчет цены синтетического инструмента и генерируется тик. Расчет осуществляется параллельно в трех потоках для цен Bid, Ask и Last. Например, если в формуле указан EURUSD*GBPUSD, расчет цен синтетического инструмента будет следующим:
Наличие изменений проверяется для каждой цены отдельно. Например, если при очередном расчете у исходного инструмента поменялась только цена Bid, то и для тика синтетического инструмента будет рассчитана только та цена, где были изменения.
Построение истории минутных баров
Помимо сбора тиков в реальном времени, платформа создает и минутную историю синтетического инструмента. Таким образом, трейдер может просматривать его графики аналогично обычным инструментам, проводить на них технический анализ при помощи объектов и индикаторов.
Как только трейдер добавляет синтетический инструмент в Обзор рынка, платформа проверяет, есть ли для него рассчитанная минутная история. Если нет, она будет создана для последних 60 дней — это около 50 000 баров. Если в настройках платформы в параметре "Макс. баров в окне" указана меньшая величина, то будет использовано именно это ограничение.
Если часть баров за этот период уже построена, то платформа досоздаст новые бары. Более глубокая история создается только при попытке просмотреть соответствующий временной период на графике (если прокрутить его назад или запросить историю из MQL5-программы).
История минутных баров синтетического инструмента рассчитывается на основе минутных баров (не тиков) инструментов, входящих в его формулу. Например, чтобы посчитать цену Open минутного бара синтетического инструмента, платформа берет цены Opеn инструментов, входящих в его формулу. Аналогично производится расчет для цен High, Low и Close.
Если для какого-либо инструмента из формулы отсутствует нужный минутный бар, платформа возьмет для расчета цену Close предыдущего бара. Например, используются три инструмента: EURUSD, USDJPY и GBPUSD. Если при расчете бара, соответствующего минуте 12:00, для инструмента USDJPY такого минутного бара не окажется, при расчете будут использованы следующие цены:
Если минутный бар отсутствует у всех инструментов из формулы, соответствующий минутный бар синтетического инструмента не будет рассчитан.
Построение новых минутных баров
Все новые бары (текущий и последующие) синтетического инструмента создаются на основе генерируемых тиков. Цена, по которой строятся бары, зависит от параметра "Построение графиков" в спецификации:
Какие операции можно использовать в формуле инструмента
В формуле можно использовать ценовые данные, а также некоторые свойства имеющихся символов (предоставляемых брокером). Для этого укажите:
Для арифметических операций существует приоритет их выполнения:
Также в формуле можно использовать константы:
Также в формуле можно использовать все математические функции, поддерживаемые в MQL5, кроме MathSrand, MathRand и MathIsValidNumber. Для всех функций используются только короткие имена: fabs(), acos(), asin() и т.д.
Функция CustomTicksAdd позволяет транслировать тики так, как если бы они приходили от сервера брокера. Данные записываются не напрямую в базу тиков, а отправляются в окно "Обзор рынка". И уже из него терминал сохраняет тики в своей базе. При большом объеме данных, передаваемых за один вызов, функция меняет свое поведение для экономии ресурсов. Если передается более 256 тиков, данные делятся на две части. Первая часть (большая) сразу напрямую записывается в базу тиков (как это делает CustomTicksReplace). Вторая часть, состоящая из последних 128 тиков, передается в окно "Обзор рынка" и после этого сохраняется терминалом в базе.
Теперь использовать защиту как в Маркете может каждый. Достаточно выполнить команду Сервис — MQL5 Cloud Protector в MetaEditor. Единственное отличие этой защиты от Маркета заключается в том, что файл не привязывается к компьютеру пользователя. Файлы, защищенные через MQL5 Cloud Protector, можно запускать на любых компьютерах как обычные EX5-файлы.
Для инструментов, чьи графики строятся по ценам Bid (указано в спецификации), показываются цены Bid High и Bid Low. Для инструментов, чьи графики строятся по ценам Last, показываются Last High и Last Low.
Вместе с колонками High/Low автоматически включается колонка Last, если в Обзоре рынка есть хотя бы один инструмент, чьи графики строятся по ценам Last.
Для удобства измененные записи подсвечиваются:Для сохранения изменений нажмите "Применить изменения" в нижней части окна.
Трейдеры могут отправлять брокеру запросы на открытие реальных счетов прямо из десктопных терминалов. Для этого достаточно заполнить простую форму с контактными данными как при открытии демо-счета. После этого для трейдера создается специальный предварительный счет. Далее брокер связывается с трейдером для оформления взаимоотношений и создает из предварительного счета реальный.
MQL5: В Стандартную библиотеку добавлены Шаблонные коллекции данных, которые содержат классы и интерфейсы для определения коллекций на основе шаблонов. Новые строго типизированные коллекции обеспечивают большее удобство в разработке программ и высокую производительность работы с данными.
Библиотека размещается в рабочем каталоге терминала в папке Include\Generic.
Функция принимает динамические массивы одинакового типа и одинаковых размерностей. Для многомерных массивов количество элементов во всех измерениях кроме первого должно совпадать.
Терминал не рассчитывает этот показатель, он запрашивается раз в минуту из операционной системы. Он не является показателем качества подключения конкретного терминала к конкретному торговому серверу, так как считается для всей сетевой активности, включая системную и фоновую.
Свойство TERMINAL_RETRANSMISSION добавлено в перечисление ENUM_TERMINAL_INFO_DOUBLE, для его получения используется функция TerminalInfoDouble.
При помощи этого же меню в код программы можно легко добавить файлы в виде бинарного или текстового массива. Например, вы можете переносить шаблоны графиков вместе с экспертами/индикаторами: включите свой шаблон в код программы в виде массива, затем при помощи функции FileSave сохраните его на диск. После этого шаблон можно применить к графику прямо из эксперта при помощи функции ChartApplyTemplate.Обновление будет доступно через систему Live Update.