Что нового в MetaTrader 5?

История обновлений десктопной, мобильной и веб-платформ

15 июля 2016
MetaTrader 5 build 1375: Лента сделок и доступ к тикам при тестировании

Terminal

  1. Добавлена лента сделок в стакане цен.




    Что такое лента сделок
    В ленте сделок в режиме реального времени отображается список всех сделок, заключаемых на бирже. По каждой сделке показывается время ее заключения, направление (покупка или продажа), цена и объем. Для удобного визуального анализа каждое направление сделки показывается отдельным цветом: синим - покупки, розовым - продажи, зеленым - неопределенное направление. Объемы сделки дополнительно показываются в виде гистограммы.

    Как лента сделок помогает понять рынок
    Лента сделок позволит анализировать рынки более детально. Направление сделки в ленте сообщает трейдеру, кто был инициатором ее заключения: покупатель или продавец. Объем заключаемых сделок позволит понять поведение участников рынка: крупные это игроки или мелкие, какова их активность. Скорость совершения сделок и их объем на определенных ценовых уровнях позволит сделать вывод о значимости этих уровней.

    Как использовать данные
    Помимо визуального анализа таблицы, вы можете выгрузить данные по сделкам в CSV файл. Далее их можно изучать в любом другом приложении, например MS Excel. В файле все данные разделены запятой:
    Time,Bid,Ask,Last,Volume,Type
    2016.07.06 16:05:04.305,89360,89370,89370,4,Buy
    2016.07.06 16:05:04.422,89360,89370,89370,2,Buy
    2016.07.06 16:05:04.422,89360,89370,89370,10,Buy
    2016.07.06 16:05:04.669,89360,89370,89370,1,Buy
    2016.07.06 16:05:05.968,89360,89370,89360,7,Sell
    Для сохранения данных в файл откройте контекстное меню:



    Для точного определения направления сделок торговая платформа брокера должна быть обновлена до версии 1375.
  2. Значительно уменьшено время между приходом тика/изменения стакана цен и вызовом точек входа OnTick и OnCalculate. Также уменьшено время между приходом события изменения торгового состояния и вызовом точек входа OnTrade и OnTradeTransaction. Таким образом, MQL5-программы теперь будут быстрее реагировать на рыночные события.
  3.  Ускорена отправка торговых запросов при использовании расширенной аутентификации с помощью SSL-сертификатов.
  4.  Обновлен перевод пользовательского интерфейса на персидский язык.
  5. Исправлено отображение команд установки SL/TP в контекстном меню графика при работе в режиме хеджинга.

Tester

  1. Добавлена возможность запрашивать тиковую историю при тестировании с помощью функции CopyTicks. Ранее данная функция не работала в тестере стратегий.

    • В режиме "Все тики" функция вернет историю сгенерированных тиков. Запросить можно не более 128 000 последних тиков.
    • В режиме "Каждый тик на основе реальных тиков" функция вернет историю реальных тиков. Глубина запрашиваемых данных ограничена только доступностью этих данных. Однако учитывайте, что последние 128 000 тиков кэшируются тестером стратегий, и запрос этих данных будет выполнен достаточно быстро. Более глубокая история запрашивается непосредственно с жесткого диска, а соответственно выполнение запроса займет значительно больше времени.
    • В режимах "Только цены открытия" и "M1 на OHLC" функция по-прежнему не будет работать, поскольку тиковая история фактически не создается.

  2. Добавлена поддержка времени с точностью до миллисекунд. Ранее в тестере стратегий квантом времени являлась одна секунда.

    • Теперь функции EventSetMillisecondTimer и Sleep работают более точно в тестере стратегий.
    • Повысилась точность подачи тиков при тестировании мультивалютных экспертов. Раньше, если в одну секунду укладывалось несколько тиков (тиковый объем минутного бара больше 60), всем им проставлялось одно и то же время. При тестировании моновалютных экспертов это не имеет большого значения, поскольку тики просто последовательно передаются эксперту. Однако при тестировании на нескольких парах важно знать, тик с какой пары пришел первым. Раньше тики по каждому символу передавались эксперту последовательно: сначала все тики за секунду по одному символу, затем - все тики по другому. Теперь они передаются с учетом миллисекунд.

      При тестировании на реальных тиках миллисекунды берутся из исходных тиковых данных. При генерации тиков проставление миллисекунд происходит в соответствии с тиковым объемом. Например, если в одной секунде умещается 3 тика, то им будет проставлено время 000, 333 и 666 миллисекунды.

  3. В режимах "По ценам открытия" и "M1 на OHLC" исполнение отложенных и SL/TP ордеров теперь осуществляется по заявленной, а не по текущей цене на момент исполнения. Алгоритм исполнения по рыночным ценам, используемый в точных режимах (все тики и реальные тики), не подходит для грубых режимов. В последних, промежуточные тики не генерируются, и разница между заявленной в ордере ценой и рыночной ценой на момент исполнения (Open или OHLC), может быть значительной. Исполнение ордеров по заявленной цене в режимах "По ценам открытия" и "M1 на OHLC" дает более точные результаты тестирования.

  4. Добавлена поддержка форвардного тестирования в визуальном режиме. Теперь для бэктеста и форвард-теста будут открываться два отдельных окна визуального тестирования, что позволит удобно сравнивать результаты работы советников на разных периодах.




    Окно форвард-тестирования появляется только после завершения тестирования на основном промежутке времени.

  5. На графике тестирования теперь вместо уровня маржи выводится нагрузка на депозит, которая вычисляется как отношение маржи к средствам (margin/equity).


  6. Tester: Исправлен расчет комиссии в годовых процентах при тестировании.

  7. Tester: Исправлен пересчет и отображение баланса на графике, формируемом в процессе тестирования.

MQL5

  1. Изменено поведение функции OrderSend при выставлении, модификации и снятии ордеров. Поведение изменяется только при выводе ордеров во внешние торговые системы. Ранее управление функции OrderSend возвращалось после успешного размещения (обработки) ордера на сервере брокера. Теперь управление возвращается только после того, как сервер брокера получит уведомление от внешней торговой системы, что ордер в ней успешно размещен.

    Ниже схематично изображено предыдущее (красная стрелка) и текущее поведение функции:




  2. В структуру торгового результата MqlTradeResult добавлено поле retcode_external - код ошибки во внешней торговой системе. Проставление и виды этих ошибок зависят от брокера и внешней торговой системы, в которую выводятся торговые операции. Например, значения retcode_external, заполняемые Московской Биржей будут отличаться от DGCX.

  3. В перечисление ENUM_CHART_PROPERTY_STRING добавлены свойства CHART_EXPERT_NAME и CHART_SCRIPT_NAME. Теперь при помощи функции ChartGetString можно выяснить имена эксперта и/или скрипта, прикрепленного к графику, определенного параметром chart_id.

Signals

  1. Исправлена ошибка, из-за которой в некоторых случаях операции закрытия позиции встречной (close by) не копировались.
  2. Доработано автоматическое сопоставление валютных пар, содержащих RUB и RUR.

Market

  1. Исправлена сортировка по категории продукта.

MetaEditor

  1. Исправлена установка фокуса в поле текста замены при открытии диалога замены.
  2. Исправлена массовая замена текста при поиске вверх от текущей позиции.


Обновлена документация.
5 июля 2016
Веб-платформа MetaTrader 5: Состоялся официальный релиз

После 2 месяцев публичного тестирования состоялся официальный выпуск веб-версии мультирыночной платформы MetaTrader 5. Она позволяет торговать на финансовых рынках в любом браузере и любой операционной системе. При этом не требуется устанавливать программу на компьютер, достаточно доступа в интернет и любого веб-браузера.

Приложение сочетает в себе ключевые преимущества десктопной платформы (скорость, мультирыночность и расширенные торговые функции) с удобством и кроссплатформенностью веб-решения. Важным новшеством релизной версии является стакан, который позволяет видеть глубину рынка, а также выставлять одним кликом рыночные и отложенные ордера.

Веб-платформа позволяет проводить технический анализ и совершать торговые операции точно так же, как в десктопной версии. В приложении доступны:

  • неттинговая и хеджинговая системы учета позиций,
  • 31 технический индикатор,
  • 23 аналитических объекта,
  • one-click trading и полный набор торговых ордеров,
  • интерфейс программы на 41 языке мира.
13 мая 2016
MetaTrader 5 build 1340: Удобный перенос сертификатов в мобильные и улучшения в тестере

Terminal

  1. Теперь сертификаты для подключения в режиме повышенной безопасности можно удобно переносить из десктопного терминала в мобильные.

    В торговой платформе поддерживается расширенная авторизация — в дополнение к паролю счет защищается специальным SSL-сертификатом. Сертификат представляет собой файл, сгенерированный для счета на торговом сервере. Файл уникален и без него подключение к счету невозможно.

    Ранее если сертификат был запрошен и сгенерирован через десктопный терминал, то для использования счета в MetaTrader 5 для iPhone/iPad или Android было необходимо переносить его файл на устройство вручную и затем устанавливать. Теперь сертификат переносится удобно.

    Как происходит перенос
    Перенос сертификата осуществляется через торговый сервер:

    • Сначала сертификат шифруется в десктопном терминале: владелец счета указывает пароль, которым сертификат будет зашифрован с использованием надежного алгоритма AES-256. Этот пароль знает только пользователь, на сервер пароль не отправляется.
    • Далее зашифрованный сертификат отправляется на торговый сервер, где он будет храниться до получения через мобильный терминал, но не более одного часа.
    • Для получения сертификата пользователь должен подключиться к счету через мобильный терминал. Сразу после подключения предлагается импортировать сертификат. Для этого необходимо указать пароль, которым он был зашифрован в десктопном терминале.

    Перенос сертификата происходит безопасно: торговый сервер используется лишь как промежуточное звено для хранения, шифрация происходит на стороне клиента, пароль сертификата не передается и не хранится на торговом сервере.

    Как перенести сертификат
    Подключитесь к счету в десктопном терминале и выберите "Перенести сертификат" в его контекстном меню:



    Укажите главный пароль счета для подтверждения того, что он принадлежит вам. Далее задайте пароль, которым будет защищен сертификат перед отправкой на сервер. Пароль должен состоять не менее чем из 8 цифр.

    После успешной отправки сертификата на сервер откройте мобильный терминал и подключитесь к счету. Вам сразу будет предложено импортировать сертификат. Согласитесь и введите пароль, который указывали в десктопном терминале.



    Посмотреть импортированный сертификат можно в разделе "О программе — Сертификаты".
    Обновленные мобильные терминалы MetaTrader 5 для iPhone/iPad и Android с поддержкой переноса сертификатов будут выпущены в ближайшее время.

Tester

  1.  Изменен алгоритм срабатывания и исполнения отложенных и SL/TP ордеров для более корректного тестирования. Расширены возможности визуального тестирования.

    Что изменилось для биржевых инструментов
    На реальном рынке для биржевых инструментов построение графиков и срабатывание стоп-ордеров осуществляется по ценам последней сделки (Last). Срабатывание лимитных ордеров осуществляется по ценам Bid/Ask. При этом исполнение всех видов ордеров всегда осуществляется по текущим рыночным ценам Bid/Ask. В тестер стратегий внесены изменения для более точного соответствия реальным условиям:
      Было
    Стало
    Срабатывание Все виды отложенных ордеров и SL/TP по Bid/Ask
    Лимитные ордера по Bid/Ask
    Стоп, стоп-лимитные и SL/TP ордера по Last
    Исполнение Все виды отложенных ордеров и SL/TP по цене, заявленной в ордере
    Все виды отложенных ордеров и SL/TP по рыночным ценам Bid/Ask на момент срабатывания

    Рассмотрим пример на инструменте Si-6.16. При текущих ценах Bid=72570, Ask=72572, Last=72552 был выставлен ордер Buy Stop с ценой срабатывания 72580. В ценовом потоке мы получили новые текущие цены:

    • Bid=72588
    • Ask=72590
    • Last=72580


    На биржевых инструментах триггером для срабатывания стоп-ордеров является цена Last. Поэтому, поступление в потоке цены Last=72580 привело к активации ордера Buy Stop. Ранее именно эта цена 72580 была бы использована для исполнения данного ордера. Такое поведение было некорректным, поскольку цены Ask=72580 для исполнения операции на покупку на рынке нет.


    В обновленном тестере используется текущая цена покупки Ask=72590, и ордер Buy Stop будет исполнен именно ней. Таким образом, новый алгоритм исполнения сделок в тестере более точно соответствует реальному рынку. При старом же алгоритме торговая операция была бы совершена по нерыночной цене, что привело бы к некорректным результатам тестирования.

    Что изменилось для небиржевых инструментов
    Для небиржевых инструментов алгоритм срабатывания остался прежним: для всех видов отложенных ордеров и SL/TP используются цены Bid и Ask. Изменился режим исполнения: ранее оно происходило по заявленной в ордере цене, теперь же используются текущие рыночные цены Bid и Ask на момент срабатывания.

    Новое в визуальном тестировании
    При визуальном тестировании теперь показываются линии максимальной цены Ask и минимальной цены Bid за бар. На таком графике легче тестировать советников на биржевых инструментах, где построение баров и срабатывание ордеров осуществляется по ценам Last, а исполнение рыночных операций — по Bid и Ask.



    На графике визуального тестирования появилась возможность навигации к указанной дате. Дважды кликните на графике и укажите нужную дату и время. Помимо этого график можно переместить к любому ордеру или сделке: дважды кликните на торговой операции на вкладке "Торговля", "История" или "Операции".
  2. Расширено журналирование загрузки ценовой и тиковой истории перед запуском тестирования. Теперь в журнале отражается факт окончания загрузки истории, объем загруженных данных и затраченное на загрузку время:
    2016.05.10 12:47:53    Core 1    5.10 Mb of history processed in 0:00.842
    2016.05.10 12:47:53    Core 1    GBPUSD: history synchronization completed [5225 Kb]

MQL5

  1. Исправлена ошибка, в результате которой в некоторых случаях функция CopyTicks возвращала меньше тиков, чем запрошено.
  2. Исправлены ошибки генерации шаблонных функций.
  3. Обновлена документация.

Исправления по крешлогам.

12 мая 2016
Веб-платформа MetaTrader 5: Бета-версия доступна для тестирования

По многочисленным просьбам трейдеров разработана веб-версия торговой платформы MetaTrader 5. Новинка сочетает в себе удобство и кроссплатформенность веб-терминала с преимуществами десктопной "пятерки" — скоростью, мультирыночностью, расширенными торговыми функциями.

Веб-платформа MetaTrader 5 стала доступной на сайте MQL5.community и позволяет торговать на финансовых рынках через любой браузер в любой операционной системе (Windows, Mac, Linux). Для этого не нужно устанавливать никаких программ, достаточно иметь доступ в интернет.

В бета-версии трейдерам сразу же доступны:

  • хеджинговая система учета позиций,
  • 30 технических индикаторов,
  • 23 аналитических объекта,
  • полный набор торговых ордеров MetaTrader 5,
  • интерфейс на 41 языке.
Выпуск бета-версии призван обеспечить широкое публичное тестирование и позволить трейдерам оценить новые возможности.
22 апреля 2016
MetaTrader 5 build 1325: Торговля с хеджированием и тестирование по реальным тикам

Terminal

  1. Для расширения возможностей ритейл-форекса в платформу добавлена вторая система учета — хеджинг. Теперь по инструменту можно иметь множество позиций, в том числе — разнонаправленных. Это позволяет реализовывать торговые стратегии с так называемым локированием — если цена пошла против трейдера, он имеет возможность открыть позицию в противоположном направлении.

    Новая система учета аналогична используемой в MetaTrader 4, она будет привычна трейдерам. При этом они смогут использовать все преимущества пятой версии платформы — исполнение ордеров несколькими сделками (в том числе — частичное), мультивалютный и многопоточный тестер с поддержкой вычислительной сети MQL5 Cloud Network и многое другое.

    Теперь на одном счете можно торговать на бирже, где используется неттинг и по одному инструменту можно иметь только одну позицию. При этом в той же платформе, но на другом счете можно торговать на форексе и использовать хеджирование.

    Как открыть счет с хеджированием и где посмотреть тип учета позиций
    Тип учета позиций задается на уровне счета, он показывается в заголовке окна терминала, а также в журнале:



    Чтобы открыть демо-счет с хеджингом, включите соответствующую опцию:




    Неттинговая система
    Эта система учета подразумевает, что в один момент времени на счете может быть только одна открытая позиция по одному и тому же символу:

    • Если по инструменту существует позиция, при совершении сделки в том же направлении происходит наращивание объема этой позиции.
    • При совершении сделки в обратном направлении происходит уменьшение объема существующей позиции, ее закрытие (при совершении сделки в объеме, равном объему текущей позиции) либо разворот (если объем противоположной сделки больше текущей позиции).


    При этом не имеет значения, в результате какого действия совершается сделка в противоположном направлении — в результате исполнения рыночного ордера или срабатывания отложенного.

    Ниже приведен пример совершения двух сделок на покупку EURUSD объемом 0.5 лота каждая:


    Результатом исполнения этих сделок стала одна общая позиция объемом 1 лот.

    Хеджинговая система
    Эта система учета позволяет иметь на счету множество торговых позиций по одному и тому же инструменту, в том числе — разнонаправленных.

    Если по торговому инструменту есть открытая позиция и трейдер совершает новую сделку (или срабатывает отложенный ордер), происходит открытие новой позиции. Существующая позиция не изменяется.

    Ниже приведен пример совершения двух сделок на покупку EURUSD объемом 0.5 лота каждая:


    Результатом исполнения этих сделок стало открытие двух отдельных позиций.

    Новый тип торговой операции Close By
    Для счетов с хеджинговым учетом позиций добавлен новый вид торговых операций — закрытие позиции встречной. Эта операция позволяет одновременно закрыть две разнонаправленные позиции по одному и тому же инструменту. Если встречные позиции имеют разное количество лотов, то открытым останется только один ордер из двух. Его объем будет равен разности лотов двух закрытых позиций, а направление позиции и цена открытия — большей (по объему) из закрываемых позиций.

    По сравнению с одиночным закрытием двух позиций, закрытие встречной позволяет сэкономить трейдеру один спред:

    • При одиночном закрытии трейдер дважды платит спред: закрывает покупку по меньшей цене (Bid), а продажу — по большей (Ask).
    • При встречном закрытии для закрытия первой позиции используется цена открытия второй позиции, а для второй позиции — цена открытия первой.


    При закрытии позиции встречной выставляется ордер типа "close by". В комментарии к нему указываются тикеты закрываемых позиций. Закрытие пары встречных позиций происходит двумя сделками типа "out by". Размер итоговой прибыли/убытка, полученного в результате закрытия обеих позиций, указывается только в одной сделке.


  2. В дополнение к поддержке хеджинга в платформе расширились возможности переноса счетов из MetaTrader 4. Теперь брокеры могут в автоматическом режиме переносить счета в MetaTrader 5 вместе со всеми операциями: открытыми и отложенными ордерами, а также всей торговой историей.

    При первом подключении счету, перенесенному из MetaTrader 4, вы увидите приветственное окно. Перенос осуществляется безопасно. Для начала работы укажите пароль от счета, который ранее использовался в MetaTrader 4, а затем задайте новый пароль.



    После подключения вы сможете работать в обычном режиме, как если бы счет был изначально открыт в MetaTrader 5, при этом вся история сделок из MetaTrader 4 автоматически сохранится на новом счете.

    При импорте тикеты ордеров и позиций (в том числе ордеров истории) не сохраняются, поскольку одной записи в торговой истории MetaTrader 4 может соответствовать до 4 записей в истории MetaTrader 5. Всем торговым записям проставляются новые тикеты.

    Номера счетов могут быть сохранены или заменены новыми в зависимости от того, как брокер произведет импорт.


  3. Добавлен Чат. Теперь прямо в торговой платформе можно общаться с друзьями и коллегами на MQL5.community. В чате показываются все личные сообщения из MQL5-аккаунта. Для начала общения войдите в свой аккаунт прямо из окна чата или через настройки платформы: Сервис -> Настройки -> Сообщество.




  4. Упрощен диалог открытия демо-счета, добавлена возможность открытия счетов с хеджированием. Теперь не нужно заполнять большую анкету, достаточно указать основные данные и выбрать торговые параметры: тип счета, депозит, плечо и возможность хеджирования.



  5. Для быстрого начала работы с платформой добавлено автоматическое выделение демо-счета. Если в платформе еще нет ни одного счета, то при запуске выделяется демо-счет на первом доступном торговом сервере. После успешного открытия счет сразу же будет подключен.

  6. Теперь у каждой позиции есть тикет — уникальный номер. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Всем ранее открытым позициям тикет будет назначен автоматически после обновления на новую версию терминала.




  7. Исправлена установка уровней Стоп Лосс и Тейк Профит при выставлении рыночного ордера, приводящего к изменению направления позиции. Ранее соответствующие уровни у новой позиции не устанавливались.
  8. Исправлено отображение цен с четырьмя и более знаками после запятой на элементах управления панели торговли одним кликом.
  9. Исправлена ошибка отображения новости в окне предварительного просмотра перед печатью.
  10. Исправлены ошибки отображения тикового графика.
  11. Исправлено открытие стакана цен после аварийного завершения работы терминала.
  12. Добавлены проверки на разрешенность рыночных ордеров при отображении элементов управления панели торговли одним кликом.
  13. Оптимизирован расчет прибыли и маржи при большом количестве открытых ордеров и позиций.
  14. Добавлен перевод пользовательского интерфейса на малайский язык.
  15. Полностью обновлено руководство пользователя. Свежий дизайн, интерактивные скриншоты и встроенные видеоролики — все, чтобы сделать обучение торговли при помощи MetaTrader 5 максимально простым и удобным:




  16. Исправлено отображение графических объектов в режиме "График сверху".

Tester

  1. Добавлена возможность тестирования торговых роботов и технических индикаторов по реальной тиковой истории.

    Тестирование и оптимизация на реальных тиках являются максимально приближенными к реальным условиям. Вместо сгенерированных на основе минутных данных используются реальные тики, накопленные брокером по финансовым инструментам. Это тики с бирж и от поставщиков ликвидности.

    Чтобы начать тестирование или оптимизацию по реальным тикам, выберите соответствующий режим в тестере стратегий:



    Тиковые данные имеют значительно больший размер, чем минутные. При первом запуске тестирования их скачивание может занять продолжительное время. Скачанные тиковые данные хранятся по месяцам в TKC-файлах в каталоге \bases\[имя торгового сервера]\ticks\[имя символа]\.

    Особенности тестирования по реальным тикам
    При тестировании на реальных тиках спред в пределах минутного бара может меняться, тогда как при генерации тиков внутри минуты используется спред, зафиксированный в соответствующем баре.

    Если по инструменту транслируется биржевой стакан цен, бары строятся строго по ценам исполнения последней сделки — Last. В ином случае, тестер сначала пытается строить бары по ценам Last, и только если их нет, использует цены Bid. Событие прихода тика OnTick срабатывает на всех тиках, независимо от того, была ли в них цена Last или нет.

    Обратите внимание, что торговые операции всегда совершаются по ценам Bid и Ask, даже если график строится по ценам Last. Например, эксперт, использующий для торговли только цены открытия бара (в частности, встроенный Moving Average), получит сигнал по одной цене (Last), но сделку совершит уже по другой (Bid или Ask в зависимости от направления). При использовании режима генерации "Все тики", бары строятся по ценам Bid, а сделки совершаются по Bid и Ask. При этом Ask рассчитывается как Bid + фиксированный спред соответствующего минутного бара.

    Если в истории символа есть минутный бар, но тиковых данных за эту минуту нет, тестер сгенерирует тики в режиме "Все тики". Это позволяет протестировать советника на запланированном периоде в случае неполных тиковых данных у брокера. Если в истории символа нет минутного бара, но тиковые данные за эту минуту есть, то эти тики игнорируются. Минутные данные считаются более достоверными.

    Тестирование по реальным тикам в сети облачных вычислений MQL5 Cloud Network
    Тестирование по реальным тикам доступно не только на локальных и удаленных агентах, но и через облачную сеть MQL5 Cloud Network. Оптимизацию стратегии, которая могла бы занять месяцы, можно выполнить за несколько часов, используя вычислительную мощность тысяч компьютеров.

    Для тестирования через сеть включите использование облачных агентов:



    При тестировании на реальных тиках через MQL5 Cloud Network может передаваться большой объем интернет-трафика. Это может существенно повлиять на итоговую стоимость использования вычислительной сети.

  2. Исправлена ошибка, в результате которой не рассчитывалась комиссия на некоторых типах торговых инструментов.
  3. Исправлено заполнение поля Expert у торговых ордеров, возникших в результате срабатывания SL/TP, в соответствии со значением поля Expert у соответствующей позиции. Ранее оно не заполнялось.
  4. Исправлено переключение на вкладки результатов обычной и форвардной оптимизации.
  5. Исправлен расчет и отображение индикатора "Envelopes".
  6. Оптимизировано выполнение визуального тестирования.
  7. Оптимизирован расчет прибыли и маржи при большом количестве открытых ордеров и позиций.
  8. Оптимизировано выполнение торговых операций при высокочастотной торговле.
  9. Теперь синхронизация истории не производится при запросе свойств неосновного символа, не требующих текущих котировок. Например,  SYMBOL_SELECT, SYMBOL_DIGITS, SYMBOL_SPREAD_FLOAT, SYMBOL_TRADE_CALC_MODE, SYMBOL_TRADE_MODE, SYMBOL_TRADE_STOPS_LEVEL, SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_EXEMODE и т.п. Раньше при любом запросе свойства неосновного символа производилась синхронизация истории по данному символу.
  10. Исправлен расчет свопов в процентах годовых.

MQL5

  1. Изменился формат исполняемых EX5-файлов в связи с добавлением новых возможностей в язык MQL5 и появлением хеджинга в платформе MetaTrader 5. Все старые EX5-программы, скомпилированные в MetaEditor предыдущих билдов, будут после обновления работать корректно - таким образом, совместимость снизу вверх сохранена полностью.

    В то же время, EX5-программы, скомпилированные на билдах 1325 и выше, не будут работать в терминалах старых билдов - обратной совместимости нет.

  2. Добавлена поддержка абстрактных классов и чисто виртуальных функций.

    Абстрактные классы предназначены для создания обобщенных сущностей, на основе которых в дальнейшем предполагается создавать более конкретные производные классы. Абстрактный класс – это класс, который может использоваться лишь в качестве базового класса для некоторого другого класса, поэтому невозможно создать объект типа абстрактного класса.

    Класс, содержащий хотя бы одну чисто виртуальную функцию, является абстрактным. Поэтому классы, производные от абстрактного класса, должны реализовать все его чисто виртуальные функции, иначе они также будут абстрактными классами.

    Виртуальная функция объявляется как "чистая" с помощью синтаксиса спецификатора чистоты. Рассмотрим в качестве примера класс CAnimal, который создается только для того, чтобы предоставлять общие функции – сами объекты типа CAnimal имеют слишком общий характер для практического применения. Таким образом, класс CAnimal является хорошим кандидатом в абстрактный класс:
    class CAnimal
      {
    public:
                          CAnimal();     // конструктор
       virtual void       Sound() = 0;   // чисто виртуальная функция
    private:
       double             m_legs_count;  // количество ног животного
      };
    Здесь функция Sound() является чисто виртуальной, потому что она объявлена со спецификатором чисто виртуальной функции PURE (=0).

    Чисто виртуальными функциями являются только такие виртуальные функции, для которых указан спецификатор чистоты  PURE, а  именно: (=NULL) или (=0). Пример объявления и использования абстрактного класса:
    class CAnimal
      {
    public:
       virtual void       Sound()=NULL;   // PURE method, должен быть переопределен в потомке, сам класс CAnimal стал абстрактным и не может быть создан
      };
    //--- потомок от абстрактного класса
    class CCat : public CAnimal
     {
    public:
      virtual void        Sound() { Print("Myau"); } // PURE переопределен, класс CCat не абстрактный и может быть создан
     };
    
    //--- примеры неправильного использования
    new CAnimal;         // ошибка 'CAnimal' - компилятор выдаст ошибку "cannot instantiate abstract class"
    CAnimal some_animal; // ошибка 'CAnimal' - компилятор выдаст ошибку "cannot instantiate abstract class"
    
    //--- примеры правильного использования
    new CCat;  // ошибки нет - класс CCat не абстрактный
    CCat cat;  // ошибки нет - класс CCat не абстрактный
    Ограничения на использование абстрактных классов
    При вызове конструктором абстрактного класса чистой виртуальной функции (прямо или косвенно) результат будет неопределенным.
    //+------------------------------------------------------------------+
    //| Абстрактный базовый класс                                        |
    //+------------------------------------------------------------------+
    class CAnimal
      {
    public:
       //--- чисто виртуальная функция
       virtual void      Sound(void)=NULL;
       //--- функция
       void              CallSound(void) { Sound(); }
       //--- конструктор
       CAnimal()
        {
         //--- явный вызов виртуального метода
         Sound();
         //--- неявный вызов (через третью функцию)
         CallSound();
         //--- в конструкторе и/или деструкторе всегда вызываются свои функции,
         //--- несмотря на виртуальность и переопределение вызываемой функции в потомке
         //--- если вызываемая функция чисто виртуальная, то
         //--- вызов приведет к критической ошибке выполнения: "pure virtual function call"
        }
      };
    Однако конструкторы и деструкторы абстрактных классов могут вызывать другие функции-члены.

  3. Для облегчения организации событийных моделей добавлена поддержка указателей на функции.

    Чтобы объявить указатель на функцию, определите тип "указатель на функцию", например:
    typedef int (*TFunc)(int,int);
    Теперь TFunc является типом и можно объявить переменную-указатель на функцию:
    TFunc func_ptr;
    В переменную func_ptr можно сохранить адрес функции, чтобы в дальнейшем ее вызывать:
    int sub(int x,int y) { return(x-y); }
    int add(int x,int y) { return(x+y); }
    int neg(int x)       { return(~x);  }
    
    func_ptr=sub;
    Print(func_ptr(10,5));
    
    func_ptr=add;
    Print(func_ptr(10,5));
    
    func_ptr=neg;           // ошибка: neg не имеет тип  int (int,int)
    Print(func_ptr(10));    // ошибка: должно быть два параметра
    Указатели на функции можно хранить и передавать в качестве параметра. Нельзя получить указатель на нестатический метод класса.

  4. В структуру торгового запроса MqlTradeRequest добавлены два новых поля:

    • position — тикет позиции. Следует заполнять при торговле с хеджированием при изменении и закрытии позиции для ее однозначной идентификации. При торговле с неттинговой системой учета заполнение этого поля ни на что не влияет, поскольку идентификация позиции происходит по имени торгового инструмента.
    • position_by — тикет встречной позиции. Используется при закрытии позиции встречной — открытой по тому же инструменту, но в противоположном направлении. Используется только при хеджинговом учете позиций.

  5. В перечисление типов торговых операций ENUM_TRADE_REQUEST_ACTIONS добавлено значение TRADE_ACTION_CLOSE_BY — закрытие позиции встречной. Используется только при хеджинговом учете позиций.

  6. В перечисления свойств ордеров, сделок и позиций добавлены тикеты соответствующих торговых операций:

    • В ENUM_ORDER_PROPERTY_INTEGER добавлено свойство ORDER_TICKET — тикет ордера. Уникальное число, которое присваивается каждому ордеру.
    • В ENUM_DEAL_PROPERTY_INTEGER добавлено свойство DEAL_TICKET — тикет сделки. Уникальное число, которое присваивается каждой сделке.
    • В ENUM_POSITION_PROPERTY_INTEGER добавлено свойство POSITION_TICKET — тикет позиции. Уникальное число, которое присваивается каждой вновь открытой позиции. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Для нахождения ордера, которым была открыта позиция, следует использовать свойство POSITION_IDENTIFIER. Значение POSITION_TICKET соответствует MqlTradeRequest::position.

  7. В перечисление типов ордеров ENUM_ORDER_TYPE добавлено значение ORDER_TYPE_CLOSE_BY — ордер на закрытие позиции встречной позицией.
  8. В перечисление свойств ордеров ENUM_ORDER_PROPERTY_INTEGER добавлено значение ORDER_POSITION_BY_ID — идентификатор встречной позиции для ордеров типа ORDER_TYPE_CLOSE_BY.
  9. В перечисление направлений сделки ENUM_DEAL_ENTRY добавлено значение DEAL_ENTRY_OUT_BY — сделка произошла в результате закрытия позиции встречной.
  10. В структуру торговой транзакции MqlTradeTransaction добавлены два аналогичных поля:

    • position — тикет позиции, на которую повлияла транзакция. Заполняется для транзакций, касающихся обработки рыночных ордеров (TRADE_TRANSACTION_ORDER_* кроме TRADE_TRANSACTION_ORDER_ADD, где тикет позиции еще не присвоен) и истории ордеров (TRADE_TRANSACTION_HISTORY_*).
    • position_by — тикет встречной позиции. Используется при закрытии позиции встречной — открытой по тому же инструменту, но в противоположном направлении. Заполняется только для ордеров на закрытие позиции встречной (close by) и сделок на закрытие встречной (out by).

  11. Добавлена функция PositionGetTicket — возвращает тикет позиции по индексу в списке открытых позиций и автоматически выбирает эту позицию для дальнейшей работы с ней при помощи функций PositionGetDouble, PositionGetInteger, PositionGetString.
    ulong  PositionGetTicket(
       int  index      // номер в списке позиций
       );

  12. Добавлена функция PositionSelectByTicket — выбирает открытую позицию для дальнейшей работы с ней по указанному тикету.
    bool  PositionSelectByTicket(
       ulong   ticket     // тикет позиции
       );

  13. В перечисление свойств торговых инструментов ENUM_SYMBOL_INFO_DOUBLE добавлено значение SYMBOL_MARGIN_HEDGED — размер контракта или маржи для одного лота перекрытых позиций (разнонаправленные позиции по одному символу).

    • Если для инструмента задана первоначальная маржа (SYMBOL_MARGIN_INITIAL), то хеджированная маржа указывается как абсолютное значение (в деньгах).
    • Если первоначальная маржа не задана (равна 0), то в SYMBOL_MARGIN_HEDGED указывается размер контракта, который будет использован при расчете маржи по формуле, соответствующей типу торгового инструмента (SYMBOL_TRADE_CALC_MODE).

    Особенности расчета маржи для захеджированных позиций описаны в руководстве пользователя торговой платформы MetaTrader 5.

  14. В перечисление свойств счета ENUM_ACCOUNT_INFO_INTEGER добавлено значение ACCOUNT_MARGIN_MODE — режим расчета маржи для текущего торгового счета:

    • ACCOUNT_MARGIN_MODE_RETAIL_NETTING — используется для внебиржевого рынка при учете позиций в режиме "неттинг" (по одному символу может быть только одна позиция). Расчет маржи осуществляется на основе типа инструмента (SYMBOL_TRADE_CALC_MODE).
    • ACCOUNT_MARGIN_MODE_EXCHANGE — используется для биржевого рынка. Расчет маржи осуществляется на основе дисконтов, указанных в настройках инструментов. Дисконты устанавливаются брокером, однако не могут быть ниже значений, определенных биржей.
    • ACCOUNT_MARGIN_MODE_RETAIL_HEDGING — используется для внебиржевого рынка при независимом учете позиций ("хеджинг", по одному символу может быть несколько позиций). Расчет маржи осуществляется на основе типа инструмента (SYMBOL_TRADE_CALC_MODE) и с учетом размера захеджированной маржи (SYMBOL_MARGIN_HEDGED).

  15. В перечисление свойств клиентского терминала ENUM_TERMINAL_INFO_INTEGER добавлено значение TERMINAL_SCREEN_DPI — разрешающая способность вывода информации на экран измеряется в количестве точек на линейный дюйм поверхности (DPI). Знание этого параметра позволяет задавать размеры графических объектов таким образом, чтобы они выглядели одинаково на мониторах с различной разрешающей способностью.

  16. В перечисление свойств клиентского терминала ENUM_TERMINAL_INFO_INTEGER добавлено значение TERMINAL_PING_LAST — последнее известное значение пинга до торгового сервера в микросекундах. В одной секунде миллион микросекунд.

  17. Исправлен возврат результата вызова функции SendFTP. Ранее при удачной отсылке возвращалось значение FALSE вместо TRUE.
  18. Исправлена ошибка в функции StringConcatenate, в некоторых случаях приводившая к ошибке выполнения "Access violation".
  19. Исправлен ряд ошибок при работе с функциями-шаблонами.
  20. Теперь функции Print, Alert и Comment могут выводить строки размером более 4000 символов.
  21. Исправлена ошибка в функции ArrayCompare, возникавшая при сравнении массива с самим собой, но с разным смещением стартовой позиции от начала.
  22. В стандартную библиотеку добавлена поддержка торговли с хеджированием:

    CPosition
    Добавлены методы:

    • SelectByMagic — выбирает позицию по магическому номеру и символу для дальнейшей работы.
    • SelectByTicket — выбирает позицию по тикету для дальнейшей работы.

    CTrade
    Добавлены методы:

    • RequestPosition — получает тикет позиции.
    • RequestPositionBy — получает тикет встречной позиции.
    • PositionCloseBy — закрывает позицию с указанным тикетом позицией встречного направления.
    • SetMarginMode — устанавливает режим расчета маржи в соответствии с настройками текущего счета.

    Добавлена перегрузка для методов:

    • PositionClose — закрывает позицию по тикету.
    • PositionModify — модифицирует позицию по тикету.

    CAccountInfo
    Изменены методы:

    • MarginMode — теперь получает режим расчета маржи. Ранее работал аналогично новому методу StopoutMode.
    • MarginDescription — теперь получает режим расчета маржи как строку. Ранее работал аналогично новому методу StopoutModeDescription.

    Добавлены методы:

    • StopoutMode — получает режим задания минимального уровня залога.
    • StopoutModeDescription — получает режим задания минимального уровня залога как строку.

    CExpert
    Добавлены методы:

    • SelectPosition — выбирает позицию для последующей работы с ней.

  23. Внесен ряд исправлений в стандартную библиотеку.
  24. Исправлена ошибка выгрузки DLL-библиотек.
  25. Добавлена поддержка шаблонных конструкторов классов.

Сигналы

  1. Исправлен ряд ошибок отображения витрины торговых сигналов.

MetaEditor

  1. Исправлен поиск слова по файлам в режиме "Только слово целиком".
  2. Добавлен переход к файлу по двойному клику на строке результата компиляции соответствующего файла.
  3. Исправлено отображение некоторых элементов управления в Windows XP.
  4. Обновлена документация.

1 апреля 2016
MetaTrader 5 build 1295

Terminal

  1. Чтобы расширить возможности трейдеров ритейл-форекса, в платформу добавлена вторая система учета — хеджинг. Теперь по инструменту можно иметь множество позиций, в том числе — разнонаправленных. Это позволяет реализовывать торговые стратегии с так называемым локированием — если цена пошла против трейдера, он имеет возможность открыть позицию в противоположном направлении.

    Новая система учета аналогична используемой в MetaTrader 4, она будет привычна трейдерам. При этом они смогут использовать все преимущества пятой версии платформы — исполнение ордеров несколькими сделками (в том числе — частичное), мультивалютный и многопоточный тестер с поддержкой вычислительной сети MQL5 Cloud Network и многое другое.

    Теперь на одном счете можно торговать на бирже, где используется неттинг и по одному инструменту можно иметь только одну позицию. При этом в той же платформе, но на другом счете можно торговать на форексе и использовать хеджирование.

    Как открыть счет с хеджированием и где посмотреть тип учета позиций
    Тип учета позиций задается на уровне счета, он показывается в заголовке окна терминала, а также в журнале:



    Чтобы открыть демо-счет с хеджингом, включите соответствующую опцию:




    Неттинговая система
    Эта система учета подразумевает, что в один момент времени на счете может быть только одна открытая позиция по одному и тому же символу:

    • Если по инструменту существует позиция, при совершении сделки в том же направлении происходит наращивание объема этой позиции.
    • При совершении сделки в обратном направлении происходит уменьшение объема существующей позиции, ее закрытие (при совершении сделки в объеме, равном объему текущей позиции) либо разворот (если объем противоположной сделки больше текущей позиции).


    При этом не имеет значения, в результате какого действия совершается сделка в противоположном направлении — в результате исполнения рыночного ордера или срабатывания отложенного.

    Ниже приведен пример совершения двух сделок на покупку EURUSD объемом 0.5 лота каждая:


    Результатом исполнения этих сделок стала одна общая позиция объемом 1 лот.

    Хеджинговая система
    Эта система учета позволяет иметь на счету множество торговых позиций по одному и тому же инструменту, в том числе — разнонаправленных.

    Если по торговому инструменту есть открытая позиция и трейдер совершает новую сделку (или срабатывает отложенный ордер), происходит открытие новой позиции. Существующая позиция не изменяется.

    Ниже приведен пример совершения двух сделок на покупку EURUSD объемом 0.5 лота каждая:


    Результатом исполнения этих сделок стало открытие двух отдельных позиций.

    Новый тип торговой операции Close By
    Для счетов с хеджинговым учетом позиций добавлен новый вид торговых операций — закрытие позиции встречной. Эта операция позволяет одновременно закрыть две разнонаправленные позиции по одному и тому же инструменту. Если встречные позиции имеют разное количество лотов, то открытым останется только один ордер из двух. Его объем будет равен разности лотов двух закрытых позиций, а направление позиции и цена открытия — большей (по объему) из закрываемых позиций.

    По сравнению с одиночным закрытием двух позиций, закрытие встречной позволяет сэкономить трейдеру один спред:

    • При одиночном закрытии трейдер дважды платит спред: закрывает покупку по меньшей цене (Bid), а продажу — по большей (Ask).
    • При встречном закрытии для закрытия первой позиции используется цена открытия второй позиции, а для второй позиции — цена открытия первой.


    При закрытии позиции встречной выставляется ордер типа "close by". В комментарии к нему указываются тикеты закрываемых позиций. Закрытие пары встречных позиций происходит двумя сделками типа "out by". Размер итоговой прибыли/убытка, полученного в результате закрытия обеих позиций, указывается только в одной сделке.



  2. Добавлена возможность тестирования торговых роботов и технических индикаторов по реальной тиковой истории.

    Тестирование и оптимизация на реальных тиках являются максимально приближенными к реальным условиям. Вместо сгенерированных на основе минутных данных используются реальные тики, накопленные брокером по финансовым инструментам. Это тики с бирж и от поставщиков ликвидности.

    Чтобы начать тестирование или оптимизацию по реальным тикам, выберите соответствующий режим в тестере стратегий:



    Тиковые данные имеют значительно больший размер, чем минутные. При первом запуске тестирования их скачивание может занять продолжительное время. Скачанные тиковые данные хранятся по месяцам в TKC-файлах в каталоге \bases\[имя торгового сервера]\ticks\[имя символа]\.

    Особенности тестирования по реальным тикам
    При тестировании на реальных тиках спред в пределах минутного бара может меняться, тогда как при генерации тиков внутри минуты используется спред, зафиксированный в соответствующем баре.

    Если по инструменту транслируется биржевой стакан цен, бары строятся строго по ценам исполнения последней сделки — Last. В ином случае, тестер сначала пытается строить бары по ценам Last, и только если их нет, использует цены Bid. Событие прихода тика OnTick срабатывает на всех тиках, независимо от того, была ли в них цена Last или нет.

    Обратите внимание, что торговые операции всегда совершаются по ценам Bid и Ask, даже если график строится по ценам Last. Например, эксперт, использующий для торговли только цены открытия бара (в частности, встроенный Moving Average), получит сигнал по одной цене (Last), но сделку совершит уже по другой (Bid или Ask в зависимости от направления). При использовании режима генерации "Все тики", бары строятся по ценам Bid, а сделки совершаются по Bid и Ask. При этом Ask рассчитывается как Bid + фиксированный спред соответствующего минутного бара.

    Если в истории символа есть минутный бар, но тиковых данных за эту минуту нет, тестер сгенерирует тики в режиме "Все тики". Это позволяет протестировать советника на запланированном периоде в случае неполных тиковых данных у брокера. Если в истории символа нет минутного бара, но тиковые данные за эту минуту есть, то эти тики игнорируются. Минутные данные считаются более достоверными.
    В данный момент тестирование и оптимизация по реальным тикам возможны только на локальных и удаленных агентах. Поддержка сети облачных вычислений MQL5 Cloud Network будет добавлена в ближайшее время.

  3. Добавлен Чат. Теперь прямо в торговой платформе можно общаться с друзьями и коллегами на MQL5.community. В чате показываются все личные сообщения из MQL5-аккаунта. Для начала общения войдите в свой аккаунт прямо из окна чата или через настройки платформы: Сервис -> Настройки -> Сообщество.




  4. Упрощен диалог открытия демо-счета, добавлена возможность открытия счетов с хеджированием. Теперь не нужно заполнять большую анкету, достаточно указать основные данные и выбрать торговые параметры: тип счета, депозит, плечо и возможность хеджирования.



  5. Для быстрого начала работы с платформой добавлено автоматическое выделение демо-счета. Если в платформе еще нет ни одного счета, то при запуске выделяется демо-счет на первом доступном торговом сервере. После успешного открытия счет сразу же будет подключен.

  6. Теперь у каждой позиции есть тикет — уникальный номер. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Всем ранее открытым позициям тикет будет назначен автоматически после обновления на новую версию терминала.




  7. Исправлена установка уровней Стоп Лосс и Тейк Профит при выставлении рыночного ордера, приводящего к изменению направления позиции. Ранее соответствующие уровни у новой позиции не устанавливались.
  8. Исправлено отображение цен с четырьмя и более знаками после запятой на элементах управления панели торговли одним кликом.
  9. Исправлена ошибка отображения новости в окне предварительного просмотра перед печатью.
  10. Исправлены ошибки отображения тикового графика.
  11. Исправлено открытие стакана цен после аварийного завершения работы терминала.
  12. Добавлены проверки на разрешенность рыночных ордеров при отображении элементов управления панели торговли одним кликом.
  13. Оптимизирован расчет прибыли и маржи при большом количестве открытых ордеров и позиций.
  14. Добавлен перевод пользовательского интерфейса на малайский язык.
  15. Полностью обновлено руководство пользователя. Свежий дизайн, интерактивный скриншоты и встроенные видеоролики — все, чтобы сделать обучение торговли при помощи MetaTrader 5 максимально простым и удобным:




MQL5

  1. Добавлена поддержка абстрактных классов и чисто виртуальных функций.

    Абстрактные классы предназначены для создания обобщенных сущностей, на основе которых в дальнейшем предполагается создавать более конкретные производные классы. Абстрактный класс – это класс, который может использоваться лишь в качестве базового класса для некоторого другого класса, поэтому невозможно создать объект типа абстрактного класса.

    Класс, содержащий хотя бы одну чисто виртуальную функцию, является абстрактным. Поэтому классы, производные от абстрактного класса, должны реализовать все его чисто виртуальные функции, иначе они также будут абстрактными классами.

    Виртуальная функция объявляется как "чистая" с помощью синтаксиса спецификатора чистоты. Рассмотрим в качестве примера класс CAnimal, который создается только для того, чтобы предоставлять общие функции – сами объекты типа CAnimal имеют слишком общий характер для практического применения. Таким образом, класс CAnimal является хорошим кандидатом в абстрактный класс:
    class CAnimal
      {
    public:
                          CAnimal();     // конструктор
       virtual void       Sound() = 0;   // чисто виртуальная функция
    private:
       double             m_legs_count;  // количество ног животного
      };
    
    Здесь функция Sound() является чисто виртуальной, потому что она объявлена со спецификатором чисто виртуальной функции PURE (=0).

    Чисто виртуальными функциями являются только такие виртуальные функции, для которых указан спецификатор чистоты  PURE, а  именно: (=NULL) или (=0). Пример объявления и использования абстрактного класса:
    class CAnimal
      {
    public:
       virtual void       Sound()=NULL;   // PURE method, должен быть переопределен в потомке, сам класс CAnimal стал абстрактным и не может быть создан
      };
    //--- потомок от абстрактного класса
    class CCat : public CAnimal
     {
    public:
      virtual void        Sound() { Print("Myau"); } // PURE переопределен, класс CCat не абстрактный и может быть создан
     };
    
    //--- примеры неправильного использования
    new CAnimal;         // ошибка 'CAnimal' - компилятор выдаст ошибку "cannot instantiate abstract class"
    CAnimal some_animal; // ошибка 'CAnimal' - компилятор выдаст ошибку "cannot instantiate abstract class"
    
    //--- примеры правильного использования
    new CCat;  // ошибки нет - класс CCat не абстрактный
    CCat cat;  // ошибки нет - класс CCat не абстрактный
    
    Ограничения на использование абстрактных классов
    При вызове конструктором абстрактного класса чистой виртуальной функции (прямо или косвенно) результат будет неопределенным.
    //+------------------------------------------------------------------+
    //| Абстрактный базовый класс                                        |
    //+------------------------------------------------------------------+
    class CAnimal
      {
    public:
       //--- чисто виртуальная функция
       virtual void      Sound(void)=NULL;
       //--- функция
       void              CallSound(void) { Sound(); }
       //--- конструктор
       CAnimal()
        {
         //--- явный вызов виртуального метода
         Sound();
         //--- неявный вызов (через третью функцию)
         CallSound();
         //--- в конструкторе и/или деструкторе всегда вызываются свои функции,
         //--- несмотря на виртуальность и переопределение вызываемой функции в потомке
         //--- если вызываемая функция чисто виртуальная, то
         //--- вызов приведет к критической ошибке выполнения: "pure virtual function call"
        }
      };
    
    Однако конструкторы и деструкторы абстрактных классов могут вызывать другие функции-члены.

  2. Для облегчения организации событийных моделей добавлена поддержка указателей на функции.

    Чтобы объявить указатель на функцию, определите тип "указатель на функцию", например:
    typedef int (*TFunc)(int,int);
    Теперь TFunc является типом и можно объявить переменную-указатель на функцию:
    TFunc func_ptr;
    В переменную func_ptr можно сохранить адрес функции, чтобы в дальнейшем ее вызывать:
    int sub(int x,int y) { return(x-y); }
    int add(int x,int y) { return(x+y); }
    int neg(int x)       { return(~x);  }
    
    func_ptr=sub;
    Print(func_ptr(10,5));
    
    func_ptr=add;
    Print(func_ptr(10,5));
    
    func_ptr=neg;           // ошибка: neg не имеет тип  int (int,int)
    Print(func_ptr(10));    // ошибка: должно быть два параметра
    
    Указатели на функции можно хранить и передавать в качестве параметра. Нельзя получить указатель на нестатический метод класса.

  3. В структуру торгового запроса MqlTradeRequest добавлены два новых поля:

    • position — тикет позиции. Следует заполнять при торговле с хеджированием при изменении и закрытии позиции для ее однозначной идентификации. При торговле с неттинговой системой учета заполнение этого поля ни на что не влияет, поскольку идентификация позиции происходит по имени торгового инструмента.
    • position_by — тикет встречной позиции. Используется при закрытии позиции встречной — открытой по тому же инструменту, но в противоположном направлении. Используется только при хеджинговом учете позиций.

  4. В перечисление типов торговых операций ENUM_TRADE_REQUEST_ACTIONS добавлено значение TRADE_ACTION_CLOSE_BY — закрытие позиции встречной. Используется только при хеджинговом учете позиций.

  5. В перечисления свойств ордеров, сделок и позиций добавлены тикеты соответствующих торговых операций:

    • В ENUM_ORDER_PROPERTY_INTEGER добавлено свойство ORDER_TICKET — тикет ордера. Уникальное число, которое присваивается каждому ордеру.
    • В ENUM_DEAL_PROPERTY_INTEGER добавлено свойство DEAL_TICKET — тикет сделки. Уникальное число, которое присваивается каждой сделке.
    • В ENUM_POSITION_PROPERTY_INTEGER добавлено свойство POSITION_TICKET — тикет позиции. Уникальное число, которое присваивается каждой вновь открытой позиции. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Для нахождения ордера, которым была открыта позиция, следует использовать свойство POSITION_IDENTIFIER. Значение POSITION_TICKET соответствует MqlTradeRequest::position.

  6. В перечисление типов ордеров ENUM_ORDER_TYPE добавлено значение ORDER_TYPE_CLOSE_BY — ордер на закрытие позиции встречной позицией.
  7. В перечисление свойств ордеров ENUM_ORDER_PROPERTY_INTEGER добавлено значение ORDER_POSITION_BY_ID — идентификатор встречной позиции для ордеров типа ORDER_TYPE_CLOSE_BY.
  8. В перечисление направлений сделки ENUM_DEAL_ENTRY добавлено значение DEAL_ENTRY_OUT_BY — сделка произошла в результате закрытия позиции встречной.
  9. В структуру торговой транзакции MqlTradeTransaction добавлены два аналогичных поля:

    • position — тикет позиции, на которую повлияла транзакция. Заполняется для транзакций, касающихся обработки рыночных ордеров (TRADE_TRANSACTION_ORDER_* кроме TRADE_TRANSACTION_ORDER_ADD, где тикет позиции еще не присвоен) и истории ордеров (TRADE_TRANSACTION_HISTORY_*).
    • position_by — тикет встречной позиции. Используется при закрытии позиции встречной — открытой по тому же инструменту, но в противоположном направлении. Заполняется только для ордеров на закрытие позиции встречной (close by) и сделок на закрытие встречной (out by).

  10. Добавлена функция PositionGetTicket — возвращает тикет позиции по индексу в списке открытых позиций и автоматически выбирает эту позицию для дальнейшей работы с ней при помощи функций PositionGetDouble, PositionGetInteger, PositionGetString.
    ulong  PositionGetTicket(
       int  index      // номер в списке позиций
       );
    

  11. Добавлена функция PositionSelectByTicket — выбирает открытую позицию для дальнейшей работы с ней по указанному тикету.
    bool  PositionSelectByTicket(
       ulong   ticket     // тикет позиции
       );
    

  12. В перечисление свойств торговых инструментов ENUM_SYMBOL_INFO_DOUBLE добавлено значение SYMBOL_MARGIN_HEDGED — размер контракта или маржи для одного лота перекрытых позиций (разнонаправленные позиции по одному символу).

    • Если для инструмента задана первоначальная маржа (SYMBOL_MARGIN_INITIAL), то хеджированная маржа указывается как абсолютное значение (в деньгах).
    • Если первоначальная маржа не задана (равна 0), то в SYMBOL_MARGIN_HEDGED указывается размер контракта, который будет использован при расчете маржи по формуле, соответствующей типу торгового инструмента (SYMBOL_TRADE_CALC_MODE).

    Особенности расчета маржи для захеджированных позиций описаны в руководстве пользователя торговой платформы MetaTrader 5.

  13. В перечисление свойств счета ENUM_ACCOUNT_INFO_INTEGER добавлено значение ACCOUNT_MARGIN_MODE — режим расчета маржи для текущего торгового счета:

    • ACCOUNT_MARGIN_MODE_RETAIL_NETTING — используется для внебиржевого рынка при учете позиций в режиме "неттинг" (по одному символу может быть только одна позиция). Расчет маржи осуществляется на основе типа инструмента (SYMBOL_TRADE_CALC_MODE).
    • ACCOUNT_MARGIN_MODE_EXCHANGE — используется для биржевого рынка. Расчет маржи осуществляется на основе дисконтов, указанных в настройках инструментов. Дисконты устанавливаются брокером, однако не могут быть ниже значений, определенных биржей.
    • ACCOUNT_MARGIN_MODE_RETAIL_HEDGING — используется для внебиржевого рынка при независимом учете позиций ("хеджинг", по одному символу может быть несколько позиций). Расчет маржи осуществляется на основе типа инструмента (SYMBOL_TRADE_CALC_MODE) и с учетом размера захеджированной маржи (SYMBOL_MARGIN_HEDGED).

  14. В перечисление свойств клиентского терминала ENUM_TERMINAL_INFO_INTEGER добавлено значение TERMINAL_SCREEN_DPI — разрешающая способность вывода информации на экран измеряется в количестве точек на линейный дюйм поверхности (DPI). Знание этого параметра позволяет задавать размеры графических объектов таким образом, чтобы они выглядели одинаково на мониторах с различной разрешающей способностью.

  15. В перечисление свойств клиентского терминала ENUM_TERMINAL_INFO_INTEGER добавлено значение TERMINAL_PING_LAST — последнее известное значение пинга до торгового сервера в микросекундах. В одной секунде миллион микросекунд.

  16. Исправлен возврат результата вызова функции SendFTP. Ранее при удачной отсылке возвращалось значение FALSE вместо TRUE.
  17. Исправлена ошибка в функции StringConcatenate, в некоторых случаях приводившая к ошибке выполнения "Access violation".
  18. Исправлен ряд ошибок при работе с функциями-шаблонами.
  19. Теперь функции Print, Alert и Comment могут выводить строки размером более 4000 символов.
  20. Исправлена ошибка в функции ArrayCompare, возникавшая при сравнении массива с самим собой, но с разным смещением стартовой позиции от начала.
  21. В стандартную библиотеку добавлена поддержка торговли с хеджированием:

    CPosition
    Добавлены методы:

    • SelectByMagic — выбирает позицию по магическому номеру и символу для дальнейшей работы.
    • SelectByTicket — выбирает позицию по тикету для дальнейшей работы.

    CTrade
    Добавлены методы:

    • RequestPosition — получает тикет позиции.
    • RequestPositionBy — получает тикет встречной позиции.
    • PositionCloseBy — закрывает позицию с указанным тикетом позицией встречного направления.
    • SetMarginMode — устанавливает режим расчета маржи в соответствии с настройками текущего счета.

    Добавлена перегрузка для методов:

    • PositionClose — закрывает позицию по тикету.
    • PositionModify — модифицирует позицию по тикету.

    CAccountInfo
    Изменены методы:

    • MarginMode — теперь получает режим расчета маржи. Ранее работал аналогично новому методу StopoutMode.
    • MarginDescription — теперь получает режим расчета маржи как строку. Ранее работал аналогично новому методу StopoutModeDescription.

    Добавлены методы:

    • StopoutMode — получает режим задания минимального уровня залога.
    • StopoutModeDescription — получает режим задания минимального уровня залога как строку.

    CExpert
    Добавлены методы:

    • SelectPosition — выбирает позиции для последующей работы с ней.

  22. Внесен ряд исправлений в стандартную библиотеку.

Сигналы

  1. Исправлен ряд ошибок отображения витрины торговых сигналов.

Tester

  1. Исправлена ошибка, в результате которой не рассчитывалась комиссия на некоторых типах торговых инструментов.
  2. Исправлено заполнение поля Expert у торговых ордеров, возникших в результате срабатывания SL/TP, в соответствии со значением поля Expert у соответствующей позиции. Ранее оно не заполнялось.
  3. Исправлено переключение на вкладки результатов обычной и форвардной оптимизации.
  4. Исправлен расчет и отображение индикатора "Envelopes".
  5. Оптимизировано выполнение визуального тестирования.
  6. Оптимизирован расчет прибыли и маржи при большом количестве открытых ордеров и позиций.
  7. Оптимизировано выполнение торговых операций при высокочастотной торговле.
  8. Теперь синхронизация истории не производится при запросе свойств неосновного символа, не требующих текущих котировок. Например,  SYMBOL_SELECT, SYMBOL_DIGITS, SYMBOL_SPREAD_FLOAT, SYMBOL_TRADE_CALC_MODE, SYMBOL_TRADE_MODE, SYMBOL_TRADE_STOPS_LEVEL, SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_EXEMODE и т.п. Раньше при любом запросе свойства неосновного символа производилась синхронизация истории по данному символу.

MetaEditor

  1. Исправлен поиск слова по файлам в режиме "Только слово целиком".
  2. Добавлен переход к файлу по двойному клику на строке результата компиляции соответствующего файла.
  3. Исправлено отображение некоторых элементов управления в Windows XP.
Обновлена документация.




17 декабря 2015
MetaTrader 5 build 1240: Ускорение работы и встроенные видеоролики

Виртуальный хостинг

  1. В диалог выделения виртуального сервера добавлена ссылка на обучающий видеоролик "Как арендовать виртуальную платформу". Посмотрите 2-минутное видео и узнайте, как просто запустить в работу торгового робота или копирование сигналов в режиме 24/7.


    Этот и многие другие видеоролики доступны на официальном канале MetaQuotes Software Corp. на YouTube.
  2. Исправлена ошибка миграции на хостинг при наличии вызова кастомного индикатора или EX5-библиотеки в кастомном индикаторе, который вызывается из эксперта.

Торговый терминал

  1. Ускорено обновление списка открытых ордеров и позиций при совершении торговых операций с высокой частотой (50 операций в секунду и более).
  2. Оптимизирована и значительно ускорена начальная синхронизация терминала с торговым сервером при большом (десятки тысяч) количестве торговых инструментов. Теперь после подключения вы можете начать работать быстрее.
  3. Оптимизировано и значительно уменьшено потребление памяти терминалом.
  4. Добавлено сохранение и восстановление настроек стакана цен при закрытии/открытии терминала.
  5. Исправлены артефакты, возникавшие в Windows 10 при перетаскивании окон терминала.
  6. Terminal: Исправлена работа контекстной справки для ряда команд и диалогов. Для вызова справки по конкретному элементу наведите на него курсор и нажмите F1.
  7. Продолжены работы по адаптации интерфейса к работе на экранах высокого разрешения (4К).

MQL5

  1. Для функций получения информации об ордерах и сделках OrderGetString, HistoryOrderGetString и HistoryDealGetString добавлены новые свойства:

    • ORDER_EXTERNAL_ID - идентификатор ордера во внешней торговой системе (на бирже).
    • DEAL_EXTERNAL_ID - идентификатор сделки во внешней торговой системе.

  2. Исправлена работа функции ZeroMemory при работе со структурами и классами. В некоторых случаях очистка памяти не производилась.
  3. Добавлены коды ошибки при работе функции SendFTP. Функция посылает файл по адресу, указанному в окне настроек на закладке "FTP".

    • ERR_FTP_NOSERVER - не задан ftp-сервер в настройках
    • ERR_FTP_NOLOGIN - не задан ftp-логин в настройках
    • ERR_FTP_FILE_ERROR - файл не существует
    • ERR_FTP_CONNECT_FAILED - не удалось подключиться к ftp-серверу
    • ERR_FTP_CHANGEDIR - на ftp-сервере не найдена директория для выгрузки файла
    • ERR_FTP_CLOSED - подключение к ftp-серверу закрыто

  4. Исправлена проверка доступности приведения объектов по наследованию от потомка к предкам.
  5. Исправлен ряд ошибок в шаблонах классов.
  6. Исправлена ошибка при запросе тиков функцией CopyTicks. При указании параметра COPY_TICKS_TRADE (копировать только торговые тики) для последовательно идущих одинаковых торговых тиков (с одним объемом и одной ценой last) отдавался только первый из них.
  7. Исправлена ошибка в определении размера переменной пользовательского типа.
  8. Исправлена ошибка использования ZLib в функции CryptDecode, приводившая к бесконечному циклу распаковки.

Tester

  1. Исправлена ошибка синхронизации ценовой истории по торговому инструменту, отличному от основного инструмента тестирования.
  2. Исправлено дублирование торговой транзакции TRADE_TRANSACTION_DEAL_ADD (добавление сделки в историю) в обработчике событий OnTradeTransaction.
  3. Изменено поведение форвард-тестирования при генетической оптимизации. Теперь в форвард-проходах участвуют все уникальные результаты, полученные после генетической оптимизации. Ранее использовалась только 1/4 результатов.

MetaEditor

  1. MetaEditor: В Мастер MQL5 добавлена ссылка на обучающий видеоролик "Как собрать торгового робота в Мастере MQL5". Посмотрите 3-минутное видео и создайте торгового робота, не написав ни одной строчки кода.


    Этот и многие другие видеоролики доступны на официальном канале MetaQuotes Software Corp. на YouTube.
  2. Исправлена работа команд упорядочивания открытых окон, если одно из окон полностью развернуто. Через меню "Окно" открытые файлы можно расположить мозаикой, вертикально, горизонтально и каскадом.
  3. Продолжены работы по адаптации интерфейса к работе на экранах высокого разрешения (4К).
Обновлена документация.
30 октября 2015
MetaTrader 5 build 1210: Доработка стакана цен и общие исправления

Торговый терминал

  1. Добавлена возможность выставления лимитных ордеров хуже рынка в стакане цен. Это позволяет получить гарантированное исполнение ордера по указанной цене на биржевых рынках.

    Если перетащить лимитный ордер через границу заявок на покупку и продажу, он изменится на стоп-ордер (Buy Limit заменяется на Buy Stop, а Sell Limit заменяется на Sell Stop). Теперь чтобы лимитный ордер не заменялся на стоп-ордер, удерживайте клавишу Crtl при перетаскивании.




  2. В настройки графика добавлена опция "Показывать кнопки быстрой торговли". С ее помощью можно скрыть кнопки вызова панели быстрой торговли и стакан цен с графика.




  3. Исправлена ошибка, в некоторых случаях приводившая к конфликтам всплывающих подсказок с другими приложениями.

MQL5

  1. Исправлена работа функций копирования исторических данных Copy* с динамическими массивами с флагом AS_SERIES. Флаг выставляется функцией ArraySetAsSeries и указывает, что индексация элементов массива будет производиться как в таймсериях.
  2. Изменено свойство CHART_SHOW_ONE_CLICK, для работы с которым используются ChartSetInteger и ChartGetInteger. Ранее оно позволяло показать/скрыть панель быстрой торговли на графике. Теперь это свойство дополнительно показывает и скрывает кнопки вызова панели быстрой торговли и стакана цен на графике (аналогично опции "Показывать кнопки быстрой торговли" в настройках графика).
  3. Исправлен ряд ошибок в работе шаблонов.
Обновлена документация.
23 октября 2015
MetaTrader 5 build 1200: тиковая история и оплата сервисов напрямую

Торговый терминал

  1. В обзор рынка добавлена работа с тиковой историей. Если раньше тиковый график показывал только ту историю, что накопилась в терминале за время его работы, то теперь появился доступ ко всей тиковой истории на торговом сервере. Отключите автоскрол и начните прокручивать тиковый график мышкой назад в прошлое, чтобы загрузить с торгового сервера недостающую историю, как это сделано для обычных ценовых графиков. Новый функционал будет полезен трейдерам, которые хотят получать максимально детальные графики изменения цены.


    Для автоматического получения более глубокой тиковой истории используйте функцию CopyTicks(), ее работа изменена таким образом, что запрашивает и загружает отсутствующую историю при ее наличии на торговом сервере.

  2. На графике рядом с панелью "Торговля одним кликом" добавлена иконка для быстрого включения/выключения стакана цен.  Вы можете также пользоваться новым хоткеем Alt+B, который  работает не только на самом графике, но и в окне Market Watch - в этом случае открывается стакан цен по тому символу, который выделен в Обзоре рынка.



  3. Добавлена запись в журнал о характеристиках компьютера и операционной системы на старте клиентского терминала. Пример:
    2015.10.14 14:48:18.486	Data Folder: C:\Program Files\MetaTrader 5
    2015.10.14 14:48:18.486	Windows 7 Professional (x64 based PC), IE 11.00, UAC, 8 x Intel Core i7  920 @ 2.67GHz, RAM: 8116 / 12277 Mb, HDD: 534262 / 753865 Mb, GMT+03:00
    2015.10.14 14:48:18.486	MetaTrader 5 build 1190 started (MetaQuotes Software Corp.)
  4. Улучшена работа с символами в "Обзоре рынка" (Market Watch):

    • Добавлен показ количества символов в Market Watch и общего доступного числа символов на торговом сервере
    • Добавлена строка добавления нового символа с интеллектуальным списком вариантов на выбор
    • В строке добавления поиск производится не только по имени символа, но также по его описанию и международному имени.


  5. Добавлена поддержка календаря экономических событий на нескольких языках.
  6. Добавлены недостающие пиктограммы стран в экономическом календаре.
  7. Добавлены горячие клавиши для вызова окна управления символами в Обзоре рынка - Ctrl+U.
  8. Исправлено упорядочивание открытых окон графиков командами в меню "Window".
  9. Исправлена ошибка, когда терминал в некоторых случаях не мог найти файл сертификата при использовании расширенной аутентификации.
  10. Исправлена ошибка, приводившая в некоторых случаях к зацикливанию синхронизации ценовой истории.
  11. Исправлена ошибка, приводившая к занулению уровней StopLoss/TakeProfit у ранее открытой позиции при увеличении ее объема, если инструмент торгуется в режиме Request Execution.
  12. В стакане цен исправлена проверка возможности выставления ордеров на продажу при наличии длинной позиции по инструментам с режимом торговли "Long only".
  13. Исправлена работа функции Trailing Stop. В некоторых редких случаях защитный Stop Loss мог неправильно подтягиваться для открытой позиции.
  14. Продолжены работы по адаптации интерфейса к работе на экранах высокого разрешения (4К).
  15. Исправлена ошибка, приводившая к выгрузке исторических данных как неиспользуемых, несмотря на регулярные обращения к данным из MQL5 программ.
  16. Исправлено отображения ряда элементов пользовательского интерфейса при работе в Windows 10.
  17. Обновлены переводы пользовательского интерфейса.

Маркет

  1. Переработана и оптимизирована работа с базой продуктов MQL5 Market.
  2. Добавлен запрет на покупку без MQL5.community аккаунта при использовании терминала в среде виртуальной машины. Теперь для покупки необходимо указать аккаунт MQL5.community в настройках терминала: Сервис - Настройки - Сообщество.
  3. Добавлена прямая покупка продуктов с помощью платежной системы UnionPay.
  4. Добавлено расширенное журналирование при покупке продуктов в MQL5 Market.

Виртуальный хостинг и Сигналы

  1. Теперь виртуальный хостинг и подписку на торговые сигналы можно оплатить напрямую через платежные системы.
    Для оплаты хостинга не обязательно заходить на MQL5.community и пополнять аккаунт. Теперь вы можете сразу оплатить услугу в одной из платежных систем прямо в платформе.


    Выберите подходящую систему и проведите платеж:


    Точно так же прямо из терминала вы можете напрямую оформить платную подписку на торговые сигналы, просто выберите удобную для вас систему оплаты.


    Нужная сумма будет сначала зачислена на ваш MQL5.community аккаунт, а затем с него будет произведена оплата. Таким образом, вы всегда сможете иметь прозрачную и понятную историю арендованных хостингов и подписок на сигналы, а также видеть все свои платежи за сервисы MQL5.community.
  2. Добавлено управление виртуальным хостингом (кроме миграции) при работе в 32-х битной версии клиентского терминала.
  3. Исправлена миграция настроек FTP-экспорта на виртуальный хостинг, независимо от разрешения публикации по FTP.

MQL5

  1. Включен новый оптимизирующий компилятор. В 64-битных платформах исполнение программ ускорено до 5 раз. MQL5-программы необходимо перекомпилировать в последней версии MetaEditor.
  2. Расширен формат структуры MqlTick. Теперь в ней передается время прихода тика в миллисекундах, а также флаги, позволяющие определить, какой именно параметр тика изменился.
    struct MqlTick
      {
       datetime     time;          // Время последнего обновления цен
       double       bid;           // Текущая цена Bid
       double       ask;           // Текущая цена Ask
       double       last;          // Текущая цена последней сделки (Last)
       ulong        volume;        // Объем для текущей цены Last
       long         time_msc;      // Время последнего обновления цен в миллисекундах
       uint         flags;         // Флаги тиков
      };
    У каждого тика всегда заполняются все параметры, независимо от того, изменились ли данные по сравнению с предыдущим тиком. Это позволяет всегда иметь актуальное состояние цен на любой момент времени без поиска предыдущих значений по тиковой истории. Например, с тиком могла измениться только цена бид, но в структуре помимо новой цены будут указаны и остальные параметры: предыдущая цена аск, объем и т.д. Чтобы узнать, какие именно данные изменились с текущим тиком, анализируйте его флаги:

    • TICK_FLAG_BID - тик изменил цену бид
    • TICK_FLAG_ASK  - тик изменил цену аск
    • TICK_FLAG_LAST - тик изменил цену последней сделки
    • TICK_FLAG_VOLUME - тик изменил объем
    • TICK_FLAG_BUY - тик возник в результате сделки на покупку
    • TICK_FLAG_SELL - тик возник в результате сделки на продажу

    Структура MqlTick используется в двух методах:

    • CopyTicks - метод не поддерживает старый формат структуры. Скомпилированные ранее файлы EX5, использующие старый формат тика, при вызове функции CopyTicks будут возвращать ошибку 4006 (ERR_MQL_INVALID_ARRAY).
    • SymbolInfoTick - метод поддерживает и старый, и новый формат структуры.

  3. Добавлены шаблоны классов, что позволяет создавать параметризованные классы как в C++. Это позволяет добиться еще большего абстрагирования и использовать один и тот же код для работы с объектами разных классов единообразно. Пример использования:
    //+------------------------------------------------------------------+
    //|                                                    TemplTest.mq5 |
    //|                        Copyright 2015, MetaQuotes Software Corp. |
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2015, MetaQuotes Software Corp."
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    //+------------------------------------------------------------------+
    //| Объявляем шаблонный класс                                        |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArray
      {
    protected:
       T                 m_data[];
    
    public:
    
       bool              Append(T item)
         {
          int new_size=ArraySize(m_data)+1;
          int reserve =(new_size/2+15)&~15;
          //---
          if(ArrayResize(m_data,new_size,reserve)!=new_size)
             return(false);
          //---
          m_data[new_size-1]=item;
          return(true);
         }
       T                 operator[](int index)
         {
          static T invalid_index;
          //---
          if(index<0 || index>=ArraySize(m_data))
             return(invalid_index);
          //---
          return(m_data[index]);
         }   
      };
    //+------------------------------------------------------------------+
    //| Шаблонный класс массива указателей, в деструкторе он удаляет     |
    //| объекты, указатели на которые хранились в нём.                   |
    //|                                                                  |
    //| Обратите внимание на наследование от шаблонного класса TArray    |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArrayPtr : public TArray<T *>
      {
    public:
       void             ~TArrayPtr()
         {
          for(int n=0,count=ArraySize(m_data);n<count;n++)
             if(CheckPointer(m_data[n])==POINTER_DYNAMIC)
                delete m_data[n];
         }
      };
    //+------------------------------------------------------------------+
    //| Объявим класс, указатели на его объекты будем хранить в массиве  |
    //+------------------------------------------------------------------+
    class CFoo
      {
       int               m_x;
    public:
                         CFoo(int x):m_x(x) { }
       int               X(void) const { return(m_x); }
      };
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    TArray<int>     ExtIntArray;   // инстанцируем шаблон TArray (специализируем шаблон TArray типом int)
    TArray<double>  ExtDblArray;   // инстанцируем шаблон TArray (специализируем шаблон TArray типом double)
    TArrayPtr<CFoo> ExtPtrArray;   // инстанцируем шаблон TArrayPtr (специализируем шаблон TArrayPtr типом CFoo)
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //--- наполняем массивы данными
       for(int i=0;i<10;i++)
         {
          int integer=i+10;
          ExtIntArray.Append(integer);
          
          double dbl=i+20.0;
          ExtDblArray.Append(dbl);
          
          CFoo *ptr=new CFoo(i+30);
          ExtPtrArray.Append(ptr);
         }
    //--- выведем содержимое массивов
       string str="Int:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtIntArray[i];      
       Print(str);   
       str="Dbl:";
       for(int i=0;i<10;i++)
          str+=" "+DoubleToString(ExtDblArray[i],1);
       Print(str);   
       str="Ptr:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtPtrArray[i].X();      
       Print(str);
    //--- созданные через new объекты CFoo удалять не нужно, они удалятся в деструкторе объекта TArrayPtr<CFoo>  
      }
    Результат выполнения:
    TemplTest (EURUSD,H1)    Int: 10 11 12 13 14 15 16 17 18 19
    TemplTest (EURUSD,H1)    Dbl: 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0
    TemplTest (EURUSD,H1)    Ptr: 30 31 32 33 34 35 36 37 38 39

  4. Добавлены новые операции * и & - соответственно, появилось получение переменной по ссылке и получение ссылки на переменную.
  5. Добавлена перегруженная форма функции ObjectsDeleteAll - удаление по префиксу имени в подокне графика всех объектов указанного типа.
    int  ObjectsDeleteAll(
       long           chart_id,   // идентификатор графика
       const string     prefix,   // префикс имени объекта
       int       sub_window=-1,   // индекс окна
       int      object_type=-1    // тип объекта для удаления
       );
  6. Исправлена работа функции ObjectGetValueByTime. Ранее в некоторых случаях (например, для горизонтальной трендовой линии) некорректно возвращалось значение цены по времени на чарте.
  7. Исправлена работа Copy* функций при отсутствии исторических данных на сервере. Ранее при отсутствии данных на сервере вызов этих функций приводил к задержке на 30-50 секунд, прежде чем вернуть управление.
  8. Внесен ряд исправлений в стандартную библиотеку MQL5.
  9. Документация по Стандартной библиотеке переведена на немецкий, французский, китайский, турецкий, испанский и португальский языки.
  10. Добавлена документация MQL5 на японском языке.

Tester

  1. Теперь выбирать программы для запуска в тестере стратегий стало гораздо удобнее. Список показывается в виде дерева в соответствии с каталогами, в которых находятся советники и индикаторы.


  2. Отображение некоторых индикаторов при визуальном тестировании приведено в соответствие с клиентским терминалом.
  3. Исправлена ошибка выставления плеча и таймфрейма графика при отладке MQL5-программ через тестер стратегий.
  4. Исправлена отладка индикаторов при тестировании на исторических данных.

Исправления по крешлогам.

Обновлена документация.
3 июня 2015
MetaTrader 5 build 622: Купить роботов в Маркете стало проще и быстрее!

Теперь любое приложение в Маркете можно купить в один шаг без регистрации прямо в платформах MetaTrader 4/5. Для этого нужно лишь нажать кнопку "Купить" и выбрать подходящую платежную систему.


После этого вы будете перенаправлены на страницу платежной системы, где сможете завершить покупку. PayPal, WebMoney, Neteller или банковская карта - оплачивайте свои покупки в магазине готовых роботов и индикаторов привычным для себя способом.


После покупки мы все же рекомендуем зарегистрировать аккаунт MQL5.community - ваша покупка будет автоматически привязана к нему. Так вы получите возможность обновлять продукт и устанавливать его на других компьютерах. Кроме того, аккаунт MQL5.community откроет вам доступ к множеству других сервисов для платформ MetaTrader - торговым сигналам для копирования сделок успешных трейдеров, виртуальному хостингу для бесперебойной работы ваших приложений и фриланс-сервису для заказа эксклюзивных роботов у разработчиков.

Теперь вы точно знаете самый простой и быстрый способ получить торгового робота. Более 5 000 различных приложений для MetaTrader уже ждут вас в Маркете - выбирайте и покупайте!


22 мая 2015
MetaTrader 5 build 1150: Простые покупки в Маркете, отладка на истории и лента сделок

Маркет

  1. Представляем новый механизм покупок "напрямую". Приобрести торгового робота или индикатор в Маркете теперь еще легче, и для этого даже не обязательно иметь аккаунт MQL5.community.

    Покупка за один шаг
    Для совершения покупки не обязательно заходить на MQL5.community и пополнять аккаунт. Теперь вы можете сразу оплатить продукт в одной из платежных систем прямо в платформе. Чтобы вы всегда имели прозрачную и понятную историю покупок в Маркете, а не искали их по разным платежным системам, нужная сумма будет сначала зачислена на ваш MQL5.community аккаунт, а затем с него будет оплачен продукт.

    Таким образом, вы всегда сможете посмотреть все свои платежи через профиль MQL5.community.




    Покупка без регистрации
    Теперь совершить покупку в Маркете можно без аккаунта MQL5.community. Просто нажмите "Купить" и оплатите продукт через одну из платежных систем.



    После этого вы будете перенаправлены на страницу платежной системы, где сможете завершить покупку.



    После покупки мы настоятельно рекомендуем зарегистрировать аккаунт MQL5.community, и ваша покупка будет автоматически привязана к нему. Так вы получите возможность обновлять продукт и устанавливать его на других компьютерах.

MetaEditor

  1. Добавлена возможность отладки экспертов и индикаторов на исторических данных. Ранее отладка осуществлялась только на графиках, обновляющихся в режиме реального времени.

    Теперь работу программы можно проверить на интересующем участке истории. Отладка происходит в режиме визуального тестирования в тестере стратегий. Программа запускается на графике, который строится по смоделированной в тестере последовательности тиков.

    Задайте нужные параметры для отладки в настройках MetaEditor: символ, таймфрейм, интервал, режимы исполнения и генерации тиков, а также начальный депозит и плечо. Именно с этими параметрами будет запущено визуальное тестирование.



    Расставьте точки останова в коде программы, а затем запустите отладку на исторических данных.



    После этого будет запущено визуальное тестирование и начнется процесс отладки.




Виртуальный хостинг

  1. В работу сервиса "Виртуальный Хостинг" внесено множество улучшений и исправлений.

    Значительная часть изменений коснулась работы в Wine на компьютерах с ОС Linux и Mac OS. Теперь виртуальный сервер успешно выделяется, и с ним можно работать в обычном режиме: производить миграцию, следить за потреблением ресурсов и просматривать логи.


    Изменения также коснулись работы с журналом. Если запрашивается слишком большое количество записей, то загружается только часть первых записей за указанный период. Это предотвращает снижение производительности при слишком объемных логах. Теперь, чтобы загрузить более поздние записи журнала, не нужно изменять даты запроса, а достаточно в окне просмотра выделить последнюю строку и нажать клавишу PgDn.




Торговый терминал

  1. Добавлена поддержка специального вида неторгуемых инструментов, которые можно использовать в качестве активов для обеспечения открытых позиций по другим инструментам. Например, трейдер может иметь на депозите некий объем золота в физическом виде и использовать его в качестве залога по открытым позициям.

    Такие активы отображаются в виде открытых позиций, а стоимость определяется по формуле: Contract size * Lots * Market Price * Liquidity Rate, где:

    • Contract size - размер контракта
    • Lots - объем в лотах
    • Market Price - текущая рыночная цена инструмента
    • Liquidity Rate - коэффициент ликвидности - доля от стоимости актива, которую брокер разрешает использовать в качестве залога


    Активы (Assets) прибавляются к собственным средствам (Equity) и увеличивают размер свободной маржи (Free Margin), что позволяет увеличить объемы торговых операций на счете.

    Таким образом, появилась возможность создавать счета с различными типами обеспечения.


    В приведенном примере трейдер имеет 1 унцию золота, которая по текущей рыночной стоимости оценивается в 1 210.56 USD. Это значение прибавлено к собственным средствам и к свободной марже. Таким образом, трейдер может продолжать торговлю даже при нулевом балансе.

  2. Новый стакан цен с тиковым графиком и отображением ленты сделок Time&Sales на графике.

    Теперь для биржевых инструментов, по которым транслируются реальные цены сделок, в стакане цен показывается тиковый график. На данном графике отмечаются все сделки, заключенные на бирже:

    • Красные круги - сделки на продажу
    • Синие круги - сделки на покупку
    • Зеленые круги - направление сделки не определено. Используются, когда биржа не транслирует направление сделок. В этом случае направление определяется по цене сделки относительно цен аск и бид. Покупка - если сделка совершена по цене аск или выше, продажа - если по цене бид или ниже. Направление считается неопределенным, если цена сделки находится между бид и аск.

    Чем больше размер круга, тем больше объем совершенной сделки. Объемы сделок также показываются в виде гистограммы под тиковым графиком.



    В верхней и нижней части показываются общие объемы текущих предложений на покупку и на продажу.

  3. В диалоге выбора инструментов добавлена колонка, показывающая дату истечения торгового инструмента, а также опция для скрытия истекших символов. Также добавлена автоматическая замена истекших контрактов на актуальные.



    Для более компактного отображения из списка скрываются все инструменты с истекшим сроком действия. Это особенно удобно при работе на срочном рынке. Неактуальным считается инструмент с истекшим сроком действия, который определяется по параметру "Последний день обращения". Эта дата указывается в списке символов в колонке "Истечение". Чтобы увидеть все символы, включите опцию "Показывать истекшие контракты".

    Для удобства список символов автоматически сортируется:

    • сначала инструменты без даты истечения
    • затем с датой истечения, начиная с ближайшей даты
    • затем истекшие, начиная с последнего истекшего
    • далее в алфавитном порядке

    Для автоматической замены истекших символов на актуальные в окне "Обзор рынка" используется опция "Автоудаление истекших" в контекстном меню.



    При перезапуске терминала символы с истекшим сроком действия скрываются, а на их место добавляются наиболее актуальные. Например, истекший фьючерсный контракт LKOH 3.15 будет заменен следующим контрактом на тот же базовый актив LKOH 6.15.

    При этом также происходит замена символов в соответствующих открытых графиках, но только если на них не запущены эксперты.

  4. Исправлено обновление состояний кнопок торговли в стакане цен в зависимости от наличия/отсутствия позиции и разрешения на открытие только длинных позиции. При отсутствии позиций кнопка Close становится неактивной. При запрете открытия коротких позиций неактивной становится кнопка Sell.

  5. Продолжены работы по адаптации интерфейса к работе на экранах высокого разрешения (4К).
  6. Исправлены ошибки при проверке объема закрываемой позиции в режиме Request Execution, когда объем сделки меньше минимально допустимого.
  7. Исправлена ошибка, в результате которой в некоторых случаях можно было запускать несколько экземпляров терминала из одного каталога.
  8. Добавлена поддержка и автоматическая фильтрация календаря экономических событий на разных языках. Фильтрация осуществляется по языку интерфейса терминала.
  9. В просмотрщик журнала добавлена возможность поиска по выведенным записям журнала.



    Поиск слова/фразы осуществляется только по выведенным записям журнала.
  10. Добавлен перевод клиентского терминала на тайский язык.
  11. Обновлен перевод клиентского терминала на хинди.

MQL5

  1. Добавлена новая функция GetMicrosecondCount - возвращает количество микросекунд, прошедших с момента начала работы MQL5-программы:
    ulong  GetMicrosecondCount();
    Данная функция может быть использована для дополнительной профилировки исполнения программы и выявления "узких мест".

  2. В перечисление ENUM_OPENCL_PROPERTY_INTEGER добавлено свойство графика CL_BUFFER_SIZE, которое возвращает реальный размер буфера OpenCL в байтах. Свойство можно получить при помощи функции CLGetInfoInteger.
  3. Модифицировано уведомление об ошибках в функции WebRequest. В случае ошибки использования функции массив result будет содержать описание ошибки.
  4. Исправлен ряд ошибок при компиляции макросов.
  5. Функции сортировки и поиска в массиве ArraySort, ArrayBsearch, ArrayMinimum и ArrayMaximum теперь работают и с многомерными массивами. Сортировка и поиск происходят только по первому (нулевому) индексу массива. Ранее эти функции работали только с одномерными массивами.

Tester

  1. Внесен ряд исправлений и улучшений в работу визуального тестирования. Теперь регулировка скорости тестирования через панель инструментов происходит более плавно.

Исправления по крешлогам.

Обновлена документация.

Обновление доступно через систему LiveUpdate.

20 марта 2015
Обновление платформы MetaTrader 5 build 1100: Ускорение тестирования и оптимизации экспертов

Tester

  1. В менеджере агентов добавлен показ состояния подключения к MQL5 Cloud Network. Установив агентов, пользователи смогут легко удостовериться, что они могут получать задания из сети облачных вычислений.


    Добавлен показ состояния подключения к MQL5 Cloud Network


  2. Произведен ряд улучшений и исправлений в работе тестера стратегий. Значительно уменьшены потери времени на промежуточные подготовительные операции и сетевые задержки. Ускорено тестирование и оптимизация во всех режимах: при работе с локальными агентами тестирования, с фермой агентов в локальной сети и при использовании MQL5 Cloud Network.

Торговый терминал

  1. Добавлен показ числа непрочитанных писем на вкладке "Почта" в окне "Инструменты".


    Добавлен показ непрочитанных писем


  2. В окне "Навигатор" для активного торгового счета добавлен показ списка запущенных экспертов. Для каждого советника указывается график, на котором он запущен. Иконкой показывается, разрешена ли советнику авто-торговля.


    Добавлен показ списка запущенных экспертов


    При помощи команд контекстного меню конкретному советнику можно разрешить или запретить авто-торговлю, можно удалить его с графика или посмотреть его свойства.
  3. Повышена точность алгоритма определения доступных точек для подключения к торговому серверу.
  4. Исправлена ошибка, в некоторых случаях приводившая к очистке базы клиентских счетов при переустановке терминала поверх уже имеющегося.
  5. Продолжены работы по адаптации интерфейса к работе на экранах высокого разрешения (4К).

Market

  1. Исправлены ошибки обновления баланса MQL5-аккаунта после покупки или аренды продукта.

Virtual Hosting

  1. Исправлены ошибки миграции пользовательских индикаторов в окружение виртуального хостинга.
  2. Исправлена ошибка обновления статуса виртуального хостинга в окне "Навигатор".

MQL5

  1. Исправлены ошибки, в некоторых случаях приводившие к невозможности оптимизации экспертов в MQL5 Cloud Network.
  2. Исправлен вызов OnDeinit при удалении эксперта с помощью функции ExpertRemove во время тестирования. Ранее при описанных условиях событие OnDeinit не вызывалось.
  3. Исправлены ошибки при работе с ресурсами в EX5 библиотеках.
  4. Исправлены ошибки при анализе макросов.

Исправления по крешлогам.

Обновлена документация.

Обновление доступно через систему LiveUpdate.

16 февраля 2015
Обновление платформы MetaTrader 5 build 1085

Опубликовано обновление платформы MetaTrader 5. Обновление содержит следующие изменения:

MetaTrader 5 Client Terminal build 1085

  1. Terminal: Стал доступен сервис Virtual Hosting. Теперь прямо из клиентского терминала можно взять в аренду виртуальный сервер для своего торгового счета. Обеспечивать постоянное подключение к торговому серверу и бесперебойное питания компьютера для работы советников и копирования сигналов стало еще проще.

    Хостинг виртуальных серверов осуществляется компаниями-партнерами MetaQuotes Software Corp.

    Выделение виртуального сервера
    Чтобы получить в пользование терминал на виртуальном сервере, подключитесь необходимым торговым счетом и выполните в контекстном меню команду "Выделить виртуальный сервер".



    Появится диалоговое окно "Мастер виртуального хостинга", которое покажет, как работает сеть виртуального хостинга. Процесс получения виртуального сервера состоит из трех шагов, где вам подскажут, как подготовиться к миграции, и предложат выбрать ближайший виртуальный сервер с минимальной сетевой задержкой до торгового сервера вашего брокера.


    Вы можете использовать 1 сутки бесплатного хостинга, которые выдаются каждому зарегистрированному пользователю MQL5.community или выбрать один из предложенных тарифных планов. На последнем этапе вам необходимо выбрать режим миграции данных, который зависит от цели:

    • полный вариант миграции потребуется в том случае, если вы хотите одновременно запустить в терминале советники/индикаторы и копирование сделок по подписке;
    • только эксперты и индикаторы, если подписка на сигналы не требуется;
    • только копирование сделок по подписке - в этом случае переносятся только настройки копирования Сигнала, никаких графиков и программ.

    После выбора режима миграции вы можете запустить виртуальный сервер сразу же по кнопке "Мигрировать прямо сейчас" или сделать это позже в любое удобное для вас время.

    Подготовка к миграции
    Перед запуском виртуального терминала необходимо подготовить для него активное окружение - графики, запущенные индикаторы и советники, параметры копирования сделок по подписке и настройки терминала.

    • Графики и обзор рынка - скройте из обзора рынка все ненужные для работы торговые инструменты, чтобы уменьшить трафик. Закройте все ненужные графики. В настройках терминала задайте нужное значение "Макс. баров в окне" - после этого требуется перезагрузка терминала.
    • Индикаторы и советники - набросьте на графики все необходимые советники и индикаторы. Купленные в Маркете продукты, запущенные на графике, также переносятся при миграции. При этом они работают в полноценном режиме, но лицензии для активации не тратятся. Все внешние параметры экспертов и индикаторов должны быть заданы правильно.
    • Почта, FTP и Сигналы - если советник должен отправлять почту, выкладывать данные по FTP или копировать сделки по подписке, то необходимо прописать все нужные настройки. Обязательно укажите правильные логин и пароль вашего аккаунта в MQL5.community в закладке Сообщество. Это необходимо для копирования сигналов.
    • Разрешение на торговлю и копирование сигналов - на виртуальном терминале всегда стоит разрешение на автоматическую торговлю. Для работы с сигналами следует задать параметры копирования в разделе Сигналы.
    • Запросы WebRequest - если программа, предназначенная для работы в виртуальном терминале, использует функцию WebRequest для отправки HTTP-запросов, то необходимо в разделе Советники поставить разрешение и перечислить все доверенные URL.


    Миграция
    Миграцией называется процесс переноса текущего активного окружения с клиентского терминала на виртуальный.

    Миграция производится при каждой синхронизации клиентского терминала, синхронизация всегда работает в одну сторону - окружение клиентского терминала доставляется на виртуальный, но никогда наоборот. Состояние виртуального терминала мы можем контролировать с помощью запросов логов терминала и экспертов, а также данных мониторинга виртуального сервера.

    Для проведения синхронизации вызовите контекстное меню счета и выберите тип миграции.



    Таким образом вы можете в любой момент изменить количество графиков и список символов, состав запущенных программ и их входные параметры, настройки терминала и подписку на Сигналы.

    При выполнении миграции вся информация записывается в лог клиентского терминала.

    После выполнения синхронизации откройте основной журнал виртуального терминала для просмотра выполненных на нем действий.


    Работа с виртуальным терминалом
    Контроль состояния арендованного виртуального сервера легко осуществляется также из клиентского терминала. В контекстном меню необходимо вызвать команду "Подробности".

    Информация представлена на четырех вкладках:

    • Details - данные о виртуальном сервере и активном окружении терминала на нем.
    • CPU Usage - график загрузки центрального процессора в %.
    • Memory Usage - график использования оперативной памяти в MB.
    • Hard Disk Usage - график использования жесткого диска в MB.
    Более подробная информация о сервисе представлена в статье "Подготовка торгового счета к миграции на виртуальный хостинг", а также в "Правилах пользования сервисом Виртуальный хостинг".

  2. Market: Теперь в MetaTrader Маркет стала возможна аренда продуктов на срок 1, 3, 6 или 12 месяцев. Это дает неоспоримые преимущества и разработчикам, и покупателям. Авторы смогут значительно повысить доверие пользователей к своим продуктам, дав им возможность полноценно проверить работу за небольшую стоимость. Для покупателей аренда это еще одна возможность удостовериться в правильности выбора программы. В отличие от демо-версий, арендованные продукты не обладают никакими ограничениям в работе кроме срока действия.

    Любой разработчик в Маркете может выбрать, будет ли его продукт предоставляться в аренду и какова будет стоимость этой аренды.



    По желанию, разработчик может не предоставлять продукты в аренду, продавая только полные лицензии, не ограниченные по сроку действия.

    Если для продукта разрешена аренда, на его странице показываются возможные ее варианты: сроки и стоимость. Нажмите "Арендовать" и выберите срок аренды.

    После окончания срока можно либо продлить аренду, либо приобрести неограниченную версию продукта.

  3. Terminal: Теперь при сохранении скриншота графика через терминал функцией "Сохранить как...", а также через MQL5 функцией Screenshot() на изображение не накладывается копирайт "MetaTrader 5, @ 2001-2015 MetaQuotes-Software Corp." Это облегчит распространение скриншотов.

  4. Terminal: Исправлены ошибки в расчете и управлении настройками встроенного технического индикатора Gator Oscillator.
  5. Terminal: Улучшено сканирование точек подключения к торговому серверу.
  6. Terminal: Исправлены ошибки при работе LiveUpdate, проявлявшиеся в некоторых случаях.
  7. MQL5: В перечисление ENUM_SIGNAL_BASE_STRING добавлено свойство сигнала SIGNAL_BASE_CURRENCY - валюта депозита поставщика сигнала. Свойство можно получить при помощи функции SignalBaseGetString.
  8. MQL5: Исправлены ошибки компиляции при определении прав доступа к членам родительского класса при наследовании.
  9. MQL5: Исправлена ошибка компиляции при перегрузки методов класса по константности параметров.
  10. Tester: Оптимизирована работа агентов сети облачных вычислений MQL5 Cloud Network. Теперь агенты не затрачивают время на так называемый "разогрев" - подключение к серверам облачной сети, распределяющим задания. Теперь агенты постоянно находятся в состоянии готовности получить и выполнить задание. Это позволяет ускорить время оптимизации через MQL5 Cloud Network.
  11. Tester: Улучшено представление локальных, удаленных и облачных агентов в тестере стратегий.
  12. Исправления по крешлогам.
  13. Обновлена документация.

MetaTrader 5 Android build 1052

В Google Play стала доступна новая версия мобильного терминала MetaTrader 5 для Android. В ней исправлены некоторые ошибки и улучшена стабильность работы. В ближайших версиях планируется добавление аналитических объектов и системы обмена сообщениями.

Загрузить приложение можно по ссылке: https://download.mql5.com/cdn/mobile/mt5/android?hl=ru&utm_source=www.metatrader5.com


Обновление будет доступно через систему LiveUpdate.

16 января 2015
MetaTrader 5 Trading Terminal build 1045: Новый WebRequest

Торговый терминал

  1. Подготовительные работы по поддержке виртуального хостинга в терминале MetaTrader 5. Сервис виртуального хостинга - это возможность получить в аренду терминал, работающий круглосуточно и без перебоев, не выходя из MetaTrader 5. Одной из основных особенностей является подбор сервера, расположенного наиболее близко к серверу брокера, что позволяет минимизировать сетевые задержки.




  2. Агенты тестирования переведены на работу только в 64-разрядных системах. Данное решение обусловлено необходимостью следовать развитию IT-индустрии. Отказ от старых технологий в пользу новых позволит увеличить производительность вычислений и даст возможность дальнейшему развитию сети облачных вычислений MQL5 Cloud Network.


    Изменения в компонентах платформы:

    • В 32-битных версиях терминалов станет недоступно использование удаленных агентов и агентов сети MQL5 Cloud Network. Вместо списка этих агентов будет отображаться сообщение "Доступно только в 64-х битной версии".
    • Менеджер агентов MetaTester 5 Agents Manager будет доступен только в 64-битной версии. Соответственно установку агентов можно будет производить только на 64-битных системах.


  3. Исправлена фильтрация новостей по языку при ручном указании списка языков в настройках терминала.
  4. Оптимизирована работа с большим количеством открытых ордеров.
  5. Ускорена отправка торговых запросов.
  6. Произведена дополнительная адаптация интерфейса для экранов с высоким разрешением - Full HD и выше.

Язык MQL5

  1. Добавлена новая форма функции WebRequest:
    int WebRequest (string method, string url,string headers,int timeout, const char &data[], int data_size,char &result[], string &result_headers)

    Данная функция позволяет явно формировать содержимое заголовка HTTP-запроса, предоставляя более гибкий механизм взаимодействия с различными Web-сервисами. Пример - Автоматическая публикация с WebRequest()

  2. Добавлены новые свойства торгового счета. Свойства доступны с помощью функции AccountInfoDouble.

    • ACCOUNT_MARGIN_INITIAL - текущая начальная маржа счета.
    • ACCOUNT_MARGIN_MAINTENANCE - текущая поддерживающая маржа счета.
    • ACCOUNT_ASSETS - текущие активы на счете.
    • ACCOUNT_LIABILITIES - текущие обязательства на счете.
    • ACCOUNT_COMMISSION_BLOCKED - текущая заблокированная комиссия по счету.

  3. Добавлены новые свойства торгового инструмента:

    • SYMBOL_OPTION_STRIKE - цена страйк опционного контракта. Свойство получается функцией SymbolInfoDouble.
    • SYMBOL_BASIS - имя базисного актива торгового инструмента. Свойство получается функцией SymbolInfoString.
    • SYMBOL_OPTION_MODE - тип опциона, значение задается при помощи перечисления ENUM_SYMBOL_OPTION_MODE. 
    • SYMBOL_OPTION_RIGHT - право опциона, значение задается при помощи перечисления ENUM_SYMBOL_OPTION_RIGHT. Свойство получается функцией SymbolInfoInteger.

  4. Добавлена функция SymbolInfoMarginRate - получение значения коэффициента взимания начальной и поддерживающей маржи в зависимости от типа и направления торгового ордера.
  5. Исправлена работа функции ChartIndicatorName в тестере стратегий.
  6. Исправлена ошибка компиляции макросов, содержащих подстановку имени с помощью ##.
  7. Исправлена ошибка сброса признака конца файла при открытии нового файла.

Исправления по крешлогам.

Обновлена документация.

Обновление доступно через систему LiveUpdate.

12 декабря 2014
MetaTrader 5 Trading Terminal build 1035: Построитель опционных стратегий и доступ к тикам

Торговый терминал:

  1. Продолжаются работы по внедрению возможности торговли опционами. Добавлен построитель опционных стратегий. Он призван помочь скомбинировать различные опционы в инвестиционном портфеле, оценить потенциал и риски.



    Построитель прост в обращении: трейдер выбирает опцион по дате истечения и базовом активу, а затем выбирает одну из более 30 доступных стратегий. Построитель отобразит соответствующую комбинацию опционов и рассчитает по ним параметры для оценки - так называемые "греки" (Greeks). В нижней части окна при этом можно посмотреть график прибыли/убытка, а также графики по грекам.

    В дополнение к большому количеству встроенных стратегий, трейдер может создавать и сохранять для последующего использования собственные стратегии.

  2. Добавлен показ количества новостей, полученных за последние 24 часа.




  3. Оптимизирована и ускорена синхронизация больших объемов истории торговых ордеров и сделок.
  4. Исправлена вставка нескольких пользовательских индикаторов в одно подокно графика.
  5. Исправлен пересчет индикатора "Bill Williams Market Facilitation Index" при смене периода графика.
  6. Исправлена минимизация окна "Инструменты".
  7. Исправлено формирование отчета о состоянии торгового счета, публикуемого по FTP.
  8. Обновлен перевод интерфейса на немецкий язык.
  9. Добавлен перевод интерфейса на греческий и узбекский языки.

Язык MQL5

  1. Добавлена функция работы с тиковой историей CopyTicks. Функция позволяет получить массив тиков, накопленных терминалом за текущую рабочую сессию. Глубина получаемых тиков ограничена последними 2 000.

    Новая функция расширяет возможности написания скальперских торговых роботов. Функция OnTick не является обработчиком каждого тика, она уведомляет эксперта об изменениях на рынке. Изменения могут быть пакетными: в терминал может одновременно прийти несколько тиков, но функция OnTick будет вызвана лишь один раз для уведомления эксперта о последнем состоянии рынка. Функция CopyTicks позволяет получать и анализировать все пришедшие тики.
    int  CopyTicks(
       const string      symbol_name,           // имя символа
       MqlTick           &ticks_array[],        // массив, в который будут помещены тики
       uint              flags=COPY_TICKS_ALL,  // флаг, определяющий тип получаемых тиков
       ulong             from=0,                // дата, начиная с которой получаются тики, указывается в миллисекундах с 01.01.1970
       uint              count=0                // количество последних тиков, которые необходимо получить
       );
    Тики можно запросить по дате, указав значение from, или по количеству, указав значение count. Если ни один из параметров не указан, передаются все доступных тики, но не более 2000. Также тики можно запрашивать по типу при помощи параметра flags. Доступные значения:

    • COPY_TICKS_ALL - все тики.
    • COPY_TICKS_INFO - только информационные тики (Bid и Ask).
    • COPY_TICKS_TRADE - только торговые тики (Last и Volume).

  2. Добавлена возможность перегрузки шаблонных функций с помощью параметров-массивов.
  3. Добавлена возможность перегрузки метода по его константности.
  4. Добавлена генерация события CHARTEVENT_MOUSE_MOVE (в точке входа OnChartEvent) по нажатию правой кнопки мыши на графике.
  5. Исправлена работа оператора Switch при наличии в case-условии отрицательного значения.
  6. Повышена точность расчетов в функциях ObjectGetValueByTime() и ObjectGetTimeByValue(), позволяющих получить значение цены для указанного времени объекта и наоборот - значение времени для значения цены.

Тестер стратегий

  1. TДобавлена возможность тестирования и оптимизации MQL5-программ, купленных в магазине MetaTrader AppStore, на агентах облачной сети MQL5 Cloud Network и удаленных агентах.
  2. Исправлен расчет свопов в пунктах для позиций с объемом менее 1 лота.
  3. Исправлена проверка и нормализация уровней SL-TP при открытии позиции по торговому инструменту с режимом исполнения "Market Execution".
  4. Исправлено поведение функции ObjectGetValueByTime. В некоторых случаях поведение функции в тестере отличалось от поведения в терминале.

MetaEditor

  1. Исправлено зависание MetaEditor при отладке и профилировании зацикленных программ.
  2. Добавлен перевод интерфейса на греческий и узбекский языки.

Исправления по крешлогам.

Обновлена документация.

Обновление доступно через систему LiveUpdate.

31 октября 2014
MetaTrader 5 Trading Terminal build 1010: Новые сигналы, маркет и опционы

Торговые сигналы

  1. Полностью переработана витрина сигналов. Добавлены новые функции, улучшен дизайн и повышено удобство работы с сигналами.


    Новые функции списка сигналов:

    • В списке сигналов появились графики прироста, аналогичные отображаемым на сайте MQL5.community. Зеленая иконка в левом нижнем углу графика означает, что сигнал создан на основе реального счета.
    • Теперь подписаться на сигнал можно прямо из списка. Для этого необходимо нажать кнопку с изображением цены (или надписью Free, если сигнал бесплатный). Сразу после этого будет показан диалог подтверждения подписки.
    • Теперь сигналы можно добавить в избранные. Нажмите кнопку с изображением звезды в конце строки сигнала. После этого сигнал можно будет легко найти на вкладке "Избранное".
    • Убрано контекстное меню. Сейчас чтобы найти сигнал, на который вы подписаны, зайдите в любой сигнал. На верхней панели будет указан сигнал, на который вы подписаны, и ссылка на него.

    Обновилась страница просмотра сигналов. Появилась возможность добавить сигнал в избранные. Общее состояние счета сигнала показывается при наведении курсора мыши на показатель "Прирост".

    Расширилась статистика по сигналу:

    • Общий объем средств подписчиков.
    • Срок жизни торгового счета с момента первой торговой операции.
    • Среднее время удержания позиции.



    Также добавились новые вкладки:

    • Риски - информация о наилучших и наихудших торговых операциях и сериях операций, а также о просадках.
    • Отзывы - отзывы подписчиков сигнала.
    • Новости - через данную вкладку провайдер может информировать подписчиков о любых изменениях в работе сигнала и публиковать другую полезную информацию.

Маркет

  1. Переработано представление продуктов в MetaTrader AppStore. Программы, журналы и книги получили новый дизайн. Появилась возможность добавления продуктов в Избранное. Нажмите кнопку с изображением звезды при просмотре продукта. После этого вы легко сможете его найти на вкладке "Избранное".




Торговый терминал

  1. Добавлена доска опционов и график волатильности. Продолжаются работы по внедрению инструментов торговли опционами. В следующей версии планируется включить инструменты анализа опционных стратегий.




    Доска опционов
    На доске отображается серия опционов по дате истечения на базовый актив (класс опционов), выбранный в поле "Underlying". Для опционов отображаются следующие параметры:

    • Bid CALL - цена продажи опциона колл.
    • Ask CALL - цена покупки опциона колл.
    • Theo CALL - теоретическая (справедливая) цена опциона колл, рассчитанная для указанного страйка по историческим данным.
    • Strike - цена исполнения опциона (страйк).
    • Volatility -  подразумеваемая (implied) волатильность. Она указывается в процентах и характеризует ожидания участников рынка по поводу стоимости базового актива опциона.
    • Theo PUT - теоретическая (справедливая) цена опциона пут, рассчитанная для указанного страйка по историческим данным.
    • Bid PUT - цена продажи опциона пут.
    • Ask PUT - цена покупки опциона пут.

    График волатильности
    По горизонтальной оси данного графика откладываются страйки опциона, а по вертикальной - подразумеваемая волатильность.




  2. Добавлен показ значений пинга в списке точек доступа.




  3. Произведена адаптация интерфейса терминала для экранов с высоким разрешением - Full HD и выше. Меню, панели инструментов, заголовки окон и статусная строка теперь имеют достаточный размер для удобного просмотра и работы на сенсорных дисплеях Windows-планшетов.

  4. Добавлена команда управления торговыми символами в меню "Вид" и на панели инструментов. Теперь настройки символов всегда под рукой:




MQL5 Language

  1. Добавлено преобразование параметра макроса в строку и конкатенация параметра макроса. Ниже приведен пример, в котором конкатенация макросов позволяет организовать автоматическое удаление экземпляров класса.
    //+------------------------------------------------------------------+
    //|                                                     MacroExample |
    //|                        Copyright 2014, MetaQuotes Software Corp. |
    //|                                       https://www.metaquotes.net  |
    //+------------------------------------------------------------------+
    #property script_show_inputs
    input bool InpSecond=true;
    
    #define DEFCLASS(class_name) class class_name:public CBase{public:class_name(string name):CBase(name){}};
    #define TOSTR(x) #x
    #define AUTODEL(obj) CAutoDelete auto_##obj(obj)
    #define NEWOBJ(type,ptr) do { ptr=new type(TOSTR(ptr)); \
                             Print("Create object '",TOSTR(type)," ",TOSTR(ptr),"' by macro NEWOBJ"); } \
                             while(0)
    //+------------------------------------------------------------------+
    //| Базовый класс, необходим для автоудаления объектов               |
    //+------------------------------------------------------------------+
    class CBase
      {
    protected:
       string            m_name;
    
    public:
                         CBase(string name):m_name(name) { }
       string            Name(void) const{ return(m_name); }
    
      };
    //+------------------------------------------------------------------+
    //| Класс автоудаления объектов позволяет не следить за созданными   |
    //| объектами. Он удаляет их в своем деструкторе                     |
    //+------------------------------------------------------------------+
    class CAutoDelete
      {
       CBase            *m_obj;
    
    public:
                         CAutoDelete(CBase *obj):m_obj(obj) { }
                        ~CAutoDelete()
         {
          if(CheckPointer(m_obj)==POINTER_DYNAMIC)
            {
             Print("Delete object '",m_obj.Name(),"' by CAutoDelete class");
             delete m_obj;
            }
         }
      };
    //+------------------------------------------------------------------+
    //| Объявим два новых класса CFoo и CBar                             |
    //+------------------------------------------------------------------+
    DEFCLASS(CFoo);
    DEFCLASS(CBar);
    //+------------------------------------------------------------------+
    //| Основная функция скрипта                                         |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       CFoo *foo;
    //--- создадим объект класса CFoo
       NEWOBJ(CFoo,foo);
    //--- создадим экземпляр класса автоудаления объекта CFoo foo
       AUTODEL(foo);
    //---
       if(InpSecond)
         {
          CBar *bar;
          //---
          NEWOBJ(CBar,bar);
          AUTODEL(bar);
         }
    //--- Удалять foo не нужно, он будет удален автоматически
      }
    //+------------------------------------------------------------------+
    
  2. Добавлено свойство OBJPROP_ANCHOR для графических объектов "Bitmap" и "Bitmap Label". Свойство определяет точку привязки графического объекта на графике: левый верхний угол, слева по центру, левый нижний угол, снизу по центру и т.д.
  3. Добавлено чтение свойства графика CHART_BRING_TO_TOP (график показан поверх всех остальных) в функции ChartGetInteger.
  4. Исправлены ошибки компиляции и генерации тернарного оператора "?".
  5. Исправлена ошибка передачи статического массива - члена класса
  6. Исправлено применение шаблона к списку инициализации членов класса шаблонного конструктора.

Торговые сигналы

  1. Существенно смягчены ограничения при подписке на сигналы:

    Если в торговой истории сигнала есть символы, которых нет у подписчика, то подписка разрешается (ранее запрещалась). Действия с позициями, по которым у подписчика отсутствуют символы, игнорируются. При этом в журнал выводится информирующее сообщение:
    2014.08.26 16:44:29.036    '2620818': Signal - symbol GBPNZD not found
    Если у подписчика есть позиции и/или отложенные ордера, то показывается диалог предупреждения с предложением их закрыть/удалить (как и ранее). Однако теперь это не является обязательным условием продолжения работы с сигналами.



    Синхронизация с провайдером сигналов будет осуществлена. Позиции и ордера, открытые не по сигналу, на который осуществляется подписка, будут оставлены без изменения. Пользователь может проводить любые операции с ними.

    Теперь пользователи могут осуществлять торговые операции вручную (или советником), будучи подписанными на сигнал. Сервис сигналов будет игнорировать позиции и ордера, открытые трейдером.
    Следует учитывать, что выставление ордеров вручную влияет на объем доступной маржи на торговом счета. При открытии позиций вручную общая нагрузка на счет увеличивается по сравнению со счетом провайдера сигналов.
  2. Добавлена поддержка процента копирования объемов с плавающей точкой. Снижен минимальный процент копирования объемов у сигналов с 1% до 0.001%.

Тестер стратегий

  1. Исправлены зависания агента тестирования при работе с облачной сетью MQL5 Cloud Network.
  2. Исправлен расчет свопов в пунктах при минимальных объемах торговой позиции.

MetaEditor

  1. Исправлена работа горячих клавиш для команд "Navigate Forward" и "Navigate Backward".

MetaViewer

  1. Исправлена навигация по страницам на панели инструментов.
  2. Исправлен поиск текста с учетом текущего языка интерфейса.

Исправления по крешлогам.

Обновлена документация.

Обновление доступно через систему LiveUpdate.

1 августа 2014
MetaTrader 5 Trading Terminal build 975: Показ Expert ID

Торговый терминал

  1. Добавлено отображение идентификатора торговой операции (магический номер), установленного экспертом. Идентификатор показывается в виде всплывающей подсказки в списке открытых позиций и ордеров, а также в истории торговли.


    Показ Expert ID


  2. Оптимизирована работа с большим количеством торговых инструментов (тысячи и десятки тысяч).
  3. Исправлено отображение алертов на ценовом графике. В некоторых случаях ценовой уровень алерта отображался в подокне индикатора.
  4. Обновлены переводы интерфейса на китайский, турецкий и японский языки.
  5. Исправлено отображение списка шаблонов графиков в основном меню приложения.
  6. Исправлено отображение списка наборов торговых инструментов в контекстном меню окна "Обзор рынка".

Язык MQL5

  1. Исправлены ошибки работы со встроенными структурами, приводившие к нарушению работы методов IndicatorParameters и MarketBookGet.
  2. Исправлена ошибка преобразования типа из bool в string.
  3. Исправлены ошибки работы с виртуальными функциями.
  4. Исправлена ошибка в работе функций FileReadStruct и FileWriteStruct внутри библиотек EX5.
  5. Исправлена ошибка компилятора, возникавшая при наличии ключевого слова в комментарии.

Тестер стратегий

  1. Исправлен расчет свопов в пунктах при тестировании.
  2. Исправлена передача файла, определенного в #property tester_file. Ошибка возникала, если описанный файл находился в общей папке клиентских терминалов.
  3. У агентов тестирования, работающих в составе сети распределенных вычислений MQL5 Cloud Network, кардинально улучшен выбор ближайшего облачного сервера, что значительно ускоряет их работу.

MetaEditor

  1. Исправлена замена текста при сворачивании списка подсказок MetaAssist.

Исправления по крешлогам.

Обновлена документация.

Обновление доступно через систему LiveUpdate.

27 июня 2014
MetaTrader 5 Trading Terminal build 965: Умный поиск, OTP и перевод денег между счетами

Торговый терминал

  1. Полностью обновлен встроенный поиск. Новый поиск - интеллектуальная и высокопроизводительная система. Результаты запросов теперь удобно структурируются по категориям.

    По мере набора искомой фразы поисковая система моментально предлагает возможные варианты:



    Для поиска по одному из предыдущих запросов установите курсор в строку и нажмите клавишу "Стрелка вниз", будет показана история запросов. В строке поиска теперь отсутствует возможность выбора области поиска, система самостоятельно выбирает наиболее релевантные результаты и удобно показывает их по категориям:



    Для улучшения восприятия теперь в результатах поиска отображается не только текст, но и аватары статей, книг и программ. Используйте верхнюю панель для просмотра результатов поиска по продуктам в MetaTrader AppStore, библиотеке исходных кодов, сигналам, форуму MQL5.community и документации. Если в каком-либо из разделов результаты отсутствуют, он подсвечивается серым цветом.

  2. Добавлена возможность OTP-аутентификации. Использование OTP (one-time password, одноразовый пароль) - это дополнительный уровень безопасности при работе с торговыми счетами. При каждом подключении к счету пользователю требуется ввести уникальный одноразовый пароль.

    В качестве генератора одноразовых паролей выступает мобильный терминал MetaTrader 5 для iPhone. Позже будет добавлена возможность использовать также мобильный терминал для Android.

    Включение OTP
    Чтобы начать использовать одноразовые пароли, необходимо связать свой торговый счет с генератором паролей, в качестве которого выступает мобильный терминал MetaTrader 5 для iPhone.
    Возможность использования OTP также должна быть включена на торговом сервере.
    Зайдите в раздел "Настройки" мобильного терминала и выберите пункт OTP. При первом открытии данного раздела для дополнительной безопасности требуется установить пароль из четырех цифр. Пароль потребуется вводить каждый раз для доступа к генератору паролей.



    В открывшемся окне выберите пункт "Привязать к счету".



    Далее укажите имя сервера, на котором открыт торговый счет, номер счета и главный пароль к нему. Опцию "Привязать" следует оставить включенной. Ее необходимо выключать, если вы собираетесь отвязать указанный счет от генератора и больше не использовать одноразовые пароли.

    После нажатия кнопки "Привязать", расположенной в верхней части окна, торговый счет будет связан с генератором, появится соответствующее сообщение.



    Аналогичным образом вы можете привязать неограниченное количество торговых счетов к генератору.

    Одноразовый пароль показывается в верхней части раздела OTP. Под ним в виде синей полоски отображается индикатор времени действия данного пароля. Как только время действия истечет, пароль станет недействительным и будет сгенерирован новый.

    Дополнительные команды:

    • Изменить пароль - изменить пароль для доступа к генератору.
    • Синхронизировать время - синхронизировать время мобильного устройства с эталонным сервером. Требование к точности обусловлено тем, что одноразовый пароль привязан к текущему интервалу времени, и это время должно совпадать на стороне клиентского терминала и сервера.

    Использование OTP в десктопном терминале
    После привязки к генератору, при попытке подключения через десктопный терминал при помощи торгового счета будет дополнительно запрашиваться одноразовый пароль:




  3. Добавлена возможность перевода денег между счетами внутри одного торгового сервера. Перевод может быть осуществлен только с того счета, к которому вы в данный момент подключены. Выберите его в окне "Навигатор" и в контекстном меню нажмите "Перевести средства".



    В появившемся диалоге выберите счет, на который необходимо перевести средства. Сумма перевода указывается в валюте депозита текущего счета. Она не может превышать текущий баланс и текущий объем свободной маржи на счете. В поле "Комментарий" укажите комментарий, который будет добавлен к соответствующим балансовым операциям.

    Для перевода средств требуется указать мастер-пароль для обоих счетов. Если для счета, с которого осуществляется перевод, используется OTP-аутентификация, для него дополнительно требуется указать одноразовый пароль.

    Перевод средств осуществляется в виде балансовых сделок: сделка снятия на текущем счете и сделка пополнения на счете-получателе.
    • Возможность перевода средств должна быть включена на торговом сервере. В зависимости от настроек налагается ряд ограничений на то, между какими счетами можно осуществлять перевод средств. В частности, переводы могут быть ограничены только для счетов с совпадающими именами и почтовыми ящиками.

    • Перевод может быть осуществлен только в пределах одного торгового сервера и только при совпадении типа счетов. С реального счета можно перевести только на реальный, с демо-счета - только на демо.
    • Счета, между которыми осуществляется перевод, должны иметь одинаковую валюту депозита.
  4. Добавлена возможность смены пароля у любого торгового счета в окне "Навигатор". Раньше изменить пароль можно было только для счета, который в настоящий момент подключен.

    Сейчас можно выбрать любой счет в окне "Навигатор" и изменить пароли к нему, нажав соответствующую команду в контекстном меню:




  5. Добавлена возможность установки уровней SL и TP на чарте c помощью перетаcкивания (drag'n'drop) торгового уровня соответствующей позиции. Наведите курсор мыши на уровень позиции на графике. Нажмите левую кнопку мыши и, удерживая ее, переместите уровень вверх или вниз.



    Для длинных позиций перетаскивание вниз позволит выставить стоп лосс, вверх - тейк профит. Для коротких позиций - наоборот. При перетаскивании показывается прибыль/убыток в пипсах и валюте, которые могут быть получены при срабатывании данного уровня.

  6.  Изменено расположение команд в меню "Окно". Теперь команда "Мозаикой" отображается первой, для нее добавлено сочетание горячих клавиш Alt+R. Данная команда также добавлена на стандартную панель инструментов.




  7. В окне "Навигатор" объединены категории "Индикаторы" и "Пользовательские Индикаторы" в одну категорию "Индикаторы".



    Все пользовательские индикаторы, примеры, а также индикаторы, приобретенные в MetaTrader AppStore, теперь показываются вместе со встроенными техническими индикаторами. Четыре категории встроенных индикаторов всегда показываются первыми.

  8. Переработано контекстное меню навигатора.

    Пункт "Логин" был переименован в "Подключиться к торговому счету". Авторизоваться в MQL5.community стало возможным не только через настройки терминала, но и с помощью контекстных меню раздела "Счета" и его подразделов.



    В контекстном меню счета также были произведены следующие изменения:
    • Перенесен на первое место пункт "Открыть счет".
    • Добавлен функционал "Изменить пароль".
    • Добавился пункт "Выделить виртуальный сервер".

  9. Исправлено отображение графических объектов типа "Label" и "Bitmap Label" с точкой привязки, расположенной в одном из нижних углов графика.

Язык MQL5

  1. Добавлена функция WebRequest() для работы с HTTP-запросами, благодаря которой MQL5-программы теперь могут взаимодействовать с различными сайтами и веб-службами.

    С помощью этой новой функции любой робот может обмениваться данными со сторонними сайтами, совершать сделки исходя из свежих новостей и записей экономического календаря, реализовывать аналитику, формировать и публиковать автоматические отчеты, считывать свежие котировки и многое другое, что раньше было доступно только с помощью сомнительных сторонних DLL. При этом для трейдеров все абсолютно безопасно, так как они сами могут контролировать список доверенных веб-сайтов, к которым разрешено обращаться программам.

    Функция WebRequest получает и отправляет информацию с веб-сайтов с помощью GET и POST-запросов. Чтобы разрешить MQL5-программе осуществлять такие запросы, необходимо включить опцию "Разрешить WebRequest для следующих URL" в настройках терминала и явным образом вручную прописать URL-адреса доверенных сайтов.




    По соображениям безопасности данная опция по умолчанию отключена.

  2. Добавлены функции доступа к базе сигналов и управление подпиской на сигналы из MQL5-программ.

    Теперь вы можете непосредственно из MQL5-программы получить список сигналов, проанализировать их качество на основе собственных критериев, выбрать лучший и автоматически на него подписаться. Фактически, появился новый класс торговых роботов, которые периодически перебирают доступные сигналы и при необходимости подписываются на лучший в данный момент сигнал.

    Для этого в язык MQL5 были добавлены новые функции управления сигналами:

    • SignalBase*() — функции доступа к базе сигналов.
    • SignalInfo*() — функции получения настроек сигнала.
    • SignalSubscribe() и SignalUnsubscribe() — функции управления подпиской.

    Таким образом, теперь можно не только автоматически копировать сделки, но также автоматически выбирать сигналы для копирования.

    По умолчанию, для обеспечения безопасности, торговому роботу запрещено менять настройки сигнала. Чтобы активировать данную функцию, необходимо в свойствах советника проставить отметку "Разрешить изменение настроек сигналов".




  3. Добавлены новые свойства клиентского терминала, доступные через функции TerminalInfo*:
    • TERMINAL_MQID - признак того, что в настройках терминала указан MetaQuotes ID.
    • TERMINAL_COMMUNITY_ACCOUNT - признак того, что в настройках указан аккаунт MQL5.community.
    • TERMINAL_COMMUNITY_CONNECTION - признак наличия соединения с сайтом MQL5.community.
    • TERMINAL_COMMUNITY_BALANCE - значение баланса на аккаунте MQL5.community.
    • TERMINAL_NOTIFICATIONS_ENABLED - признак разрешенности посылки уведомлений через MetaQuotes ID.

  4. Добавлены функции работы с крипто-алгоритмами: CryptEncode() и CryptDecode(). Функции позволяют шифровать и расшифровывать данные, например, при пересылке данных по сети при помощи функции WebRequest(). Они также позволяют рассчитывать контрольные суммы и производить архивацию данных.

    Сигнатуры функций:
    int CryptEncode(ENUM_CRYPT_METHOD method,const uchar &data[],const uchar &key[],uchar &result[]);
    int CryptDecode(ENUM_CRYPT_METHOD method,const uchar &data[],const uchar &key[],uchar &result[]);
    Для работы с функциями также добавлено новое перечисление ENUM_CRYPT_METHOD:
    CRYPT_BASE64,      // шифрование BASE64 (перекодировка)
    CRYPT_AES128,      // шифрование AES с ключом 128 бит
    CRYPT_AES256,      // шифрование AES с ключом 256 бит
    CRYPT_DES,         // шифрование DES (длина ключа 56 бит - 7 байт)
    CRYPT_HASH_SHA1,   // расчет HASH SHA1
    CRYPT_HASH_SHA256, // расчет HASH SHA256
    CRYPT_HASH_MD5,    // расчет HASH MD5
    CRYPT_ARCH_ZIP,    // ZIP архивирование

  5. Добавлена возможность изменения размера диалога свойств MQL5 программ.




  6. Добавлена возможность отладки шаблонных функций.
  7. Добавлено определение пользовательских индикаторов, исполняемых слишком медленно. Если индикатор работает медленно, в журнал выводится запись "indicator is too slow".
  8. Исправлено значение, возвращаемое функцией IsStopped(). Функция служит для определения принудительной остановки MQL5-программ в пользовательских индикаторах. Ранее эта функция всегда возвращала FALSE.
  9. Исправлены проверки входных параметров MQL5-программ по типу данных. В частности, для параметра типа uchar можно было указать значение более 255.
  10. Исправлена ошибка в функции StringConcatenate().
  11. Исправлена функция FileSize() для файлов, открытых на запись. Раньше функция возвращала размер файла без учета последних операций записи.
  12. Проведена ревизия файловых операций, в результате которой достигнуто ускорение в работе с файлами.

Торговые сигналы

  1. Исправлено копирование значений SL и TP у торговых позиций при различном числе знаков после запятой в цене по торговому инструменту у источника сигнала и подписчика.
  2. Исправлена ошибка при копировании торговых позиций у подписчиков сигнала с некорректными настройками торговых инструментов на стороне торгового сервера.
  3. Исправлено закрытие торговых позиций, открытых торговым сигналам, при падении значения Equity торгового счета ниже значения, указанного в параметрах копирования сигнала. В некоторых случаях закрытие позиций могло привести к зависанию терминала.

MetaEditor

  1. Оптимизирована работа с большими файлами исходного текста (десятки мегабайт). Увеличена скорость работы и снижено потребление памяти.
  2. Исправлена навигация по исходному коду по комбинациям клавиш "Ctrl + -" и "Ctrl + Shift + -".

Исправления по крешлогам.

Обновлена документация.

Обновление будет доступно через систему LiveUpdate.

11 апреля 2014
MetaTrader 5 Build 930

Маркет

  1. Вслед за появлением журналов, посвященных трейдингу и финансам, в MetaTrader AppStore стала доступна еще одна категория товаров - Книги. Теперь наряду с торговыми роботами и индикаторами пользователям стали доступны работы известных трейдеров и аналитиков. Ассортимент книг увеличивается ежедневно.


    Новая категория в MetaTrader Market - Книги


    Как и программы для MetaTrader 5, книги можно купить через раздел Маркет на MQL5.community, а также непосредственно через терминал MetaTrader 5. Все книги сопровождаются аннотациями, а также выдержками в виде скриншотов:


    Аннотация к книге в маркете


    Перед любой покупкой можно скачать превью - первые несколько страниц книги для ознакомления, количество которых определяет продавец.

    Для покупки книги необходимо иметь аккаунт на MQL5.com и достаточную для покупки сумму денег на нем. Данные аккаунта необходимо указать в настройках терминала на вкладке "Сообщество":




    Для покупки книги необходимо нажать кнопку "Купить" на ее странице. После этого будет показан диалог подтверждения покупки:




    Для продолжения покупки необходимо согласиться с правилами использования сервиса Маркет, а затем ввести пароль вашего аккаунта на MQL5.community. После этого с вашего аккаунта будет списана указанная сумма денег и произойдет скачивание книги. Вместо кнопки "Купить" появится кнопка "Открыть".

    Файлы книг скачиваются в папку Мои документы\MQL5 Market\Books\. Скачивание может осуществляться в двух форматах:

    • MQB - данный формат используется для платных книг. Этот формат является защищенным. При покупке и скачивании осуществляется шифрация файла таким образом, чтобы он мог быть открыт только на том компьютере, с которого был скачан. Факт создания такой защищенной копии называется активацией. Каждая книга может быть активирована как минимум 5 раз на различном оборудовании. Продавцы книг могут увеличить количество активаций по своему усмотрению.
    • PDF - данный формат используется для бесплатных книг, а также для ознакомительных версий (превью). После скачивания такой файл можно переносить и просматривать на других устройствах.

    Для просмотра файлов книг в терминале MetaTrader 5 доступен специальный компонент - MetaViewer. MetaViewer представляет собой удобное средство для просмотра журналов и книг в формате MQB и PDF. Для перелистывания используются стрелки на клавиатуре: для постраничного - стрелки вправо и влево, для прокрутки - стрелки вверх и вниз.


    MetaViewer


Торговый терминал

  1. Исправлено отображение уровней графического объекта "Fibonacci Fan" при изменении масштаба. Ранее разметка могла смещаться.
  2. Исправлена ошибка, в некоторых условиях приводившая к тому, что графические объекты не отрисовывались на графике.
  3. Исправлены ошибки и падения терминала при работе в Wine (в Linux и Mac OS), в том числе падение при вызове справочного руководства.
  4. Обновлен перевод интерфейса на арабский язык.

Маркет

  1. Переработано представление продуктов в MetaTrader AppStore. Программы, журналы и книги получили новый дизайн:


    Новый дизайн продуктов в Маркете


  2. Исправлены ошибки докачки больших файлов (в первую очередь журналов и книг) из Маркета.

Язык MQL5

  1. Изменена работа функции StringSplit. Ранее строка ";A;" по разделителю ';' разбивалась на две подстроки: NULL и "A". Теперь она будет разбиваться на подстроки  "","A" и "".
  2. Исправлены проверки и учет константности параметров и операндов.

Торговые сигналы

  1. Добавлены дополнительные проверки на разрешенные режимы торговли по инструменту при копировании сигналов. Если подписчику приходит сигнал, но по данному торговому инструменту разрешено только закрытие позиций, это не приведет к полной остановке копирования сигналов и принудительному закрытию всех позиций, как это было ранее. Теперь, если подписчику приходит сигнал на открытие позиции, данная ситуация будет восприниматься платформой как необходимость провести синхронизацию счетов подписчика и провайдера. Сигнал на закрытие позиции будет обработан в обычном режиме.

Тестер стратегий

  1. Добавлены переводы интерфейса на французский, японский и арабский языки. Обновлены переводы на немецкий, итальянский, польский, португальский, русский, испанский, турецкий и китайский языки.

MetaEditor

  1. Исправлены выделение и навигация по тексту при использовании иероглифов.
  2. Исправлен выбор торгового символа по умолчанию при профилировании MQL5-программы. Символ по умолчанию указывается в настройках MetaEditor на вкладке "Отладка".
  3. Исправлено представление символов табуляции в результатах поиска. Ранее символы табуляции игнорировались и содержимое строки показывалось без пробелов.

Исправления по крешлогам.

Обновлена документация.

Обновление будет доступно через систему LiveUpdate.

Скачать торговый терминал MetaTrader 5 можно по ссылке: https://download.mql5.com/cdn/web/metaquotes.ltd/mt5/mt5setup.exe?utm_source=www.metatrader5.com

7 марта 2014
MetaTrader 5 build 910

Торговый терминал

  1. Исправлены ошибки и падения при работе в Wine (для работы в Linux, Mac).
  2. Исправлено отображение центральной линии графического объекта "Gann Grid" при изменении масштаба.

Язык MQL5

  1. Исправлена ошибка загрузки .ex5 файлов в некоторых случаях.
  2. Исправлена работа функций StringToCharArray и StringToTime.
Исправления по крешлогам.
Обновлена документация.
12345678910111213