MetaQuotes Software
MetaQuotes Software Блог компании MetaQuotes Software
24 июля 2017, 13:53

Создание и тестирование кастомных инструментов в MetaTrader 5 build 1640

Мы выпустили очень большое обновление платформы MetaTrader 5 и приглашаем всех попробовать ее.

Скачать бесплатный терминал можно по с https://www.metatrader5.com, обновиться с сервера брокера или MetaQuotes-Demo.

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

    Создание пользовательского символа
    Откройте окно управления символами через контекстное меню «Обзора рынка» и нажмите «Создать символ»:


    Создание и тестирование кастомных инструментов в MetaTrader 5 build 1640


    Для настройки доступно множество параметров. Их список и описание можно посмотреть в документации. Вы можете быстро настроить собственный инструмент — скопируйте параметры из любого схожего инструмента, а затем измените то, что вам нужно. Для этого выберите имеющийся инструмент в поле «Скопировать из».

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

    Здесь же присутствуют команды импорта и экспорта настроек. Вы можете легко обмениваться пользовательскими символами друг с другом или переносить символы между своими терминалами. Настройки экспортируются в текстовые файлы формата JSON.

    Управление пользовательскими символами
    Все символы отображаются в отдельной группе Custom. Чтобы изменить или удалить символ, воспользуйтесь контекстным меню в списке:

    Создание и тестирование кастомных инструментов в MetaTrader 5 build 1640


    Импорт ценовой истории
    Вы можете импортировать ценовые данные в собственный символ из любого текстового файла. Выберите символ, а затем перейдите на вкладку «Бары».

    Создание и тестирование кастомных инструментов в MetaTrader 5 build 1640

    В диалоге импорта укажите путь к файлу с данными и задайте настройки:

    • Разделитель — разделитель элементов в текстовом файле.
    • Пропуск столбцов и строк — количество колонок (слева направо) и строк (сверху вниз), которое необходимо пропустить при импорте.
    • Сдвиг — сдвиг времени по часам. Эта опция используется при импортировании данных, сохраненных в другом часовом поясе.
    • Только выделенные — эта опция позволяет импортировать только выделенные в окне просмотра строки. Строки можно выделить с помощью мыши, удерживая клавиши «Ctrl» или «Shift».

    Файл с минутными барами должен иметь формат: Дата Время Open High Low Close ТиковыйОбъем Объем Спред. Например:
    2016.06.27    00:01:00    1.10024    1.10136    1.10024    1.10070    18    54000000    44
    2016.06.27    00:02:00    1.10070    1.10165    1.10070    1.10165    32    55575000    46
    2016.06.27    00:03:00    1.10166    1.10166    1.10136    1.10163    13    13000000    46
    2016.06.27    00:04:00    1.10163    1.10204    1.10155    1.10160    23    51000000    41Для собственного символа вы можете использовать данные любого существующего инструмента. Экспортируйте их (эта возможность была добавлена в предыдущей версии платформы), при необходимости модифицируйте, а затем импортируйте обратно.

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

    Ценовые данные пользовательских символов сохраняются в отдельном каталоге Custom (вне каталогов данных конкретных торговых серверов): C:\Users\[windows account]\AppData\Roaming\MetaQuotes\Terminal\[instance id]\bases\Custom

    Использование собственных символов
    Использование собственных символов практически не отличается от тех, что предоставляет брокер. Они также показываются в окне «Обзор рынка», по ним можно открывать графики, на которые можно накладывать индикаторы и аналитические объекты. При этом по пользовательским символам нельзя торговать.

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

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

    Создание и тестирование кастомных инструментов в MetaTrader 5 build 1640

    При расчете маржи и прибыли тестер стратегий автоматически использует доступные кросс-курсы. Например, мы создали собственный символ AUDCAD.custom с типом расчета маржи Forex, и валюта нашего счета — USD.

    Тогда на основе имени форексного инструмента тестер ищет необходимые символы в следующем порядке:
    1. сначала ищутся символы вида AUDUSD.custom (для расчёта маржи) и USDCAD.custom (для расчёта прибыли по сделкам)
    2. затем, если какого-то из этих инструментов нет, ищется первый символ, который соответствует по имени необходимым валютным парам  — AUDUSD и USDCAD соответственно. Например, найдены AUDUSD.b и NZDUSD.b — значит, именно курсы этих инструментов будут использоваться при расчетах маржи и прибыли.
    Для инструментов с остальными типами расчета маржи (CFD, Futures, Stock Exchange) необходимо наличие валютной пары для пересчета валюты инструмента в валюту депозита. Например, мы создали собственный символ с валютой прибыли и валютой маржи, выраженными в британских функтах (GBP), а валютой депозита является швейцарский франк (CHF).

    Тогда поиск инструментов для тестирования ведется в следующем порядке:
    1. Проверяется наличие торгового инструмента, соответствующего валютной паре GBPCHF (GBP vs CHF).
    2. Если он отсутствует, то ищется первый торговый инструмент, который соответствует по имени валютной паре GBPCHF, например GBPCHF.b или GBPCHF.def.
    При тестировании на собственных инструментах убедитесь, что на торговом счете доступны все необходимые валютные пары для расчетов. В противном случае расчет финансовых результатов и залоговых требований при тестировании будет невозможен.

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

  2. Terminal: Добавлена фильтрация ленты сделок по объему.

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

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

    Создание и тестирование кастомных инструментов в MetaTrader 5 build 1640

    Задать минимальный объем можно также через контекстное меню ленты сделок.

  3. Terminal: Добавлена возможность привязки стакана цен к активному графику. Каждый раз, когда вы будете переключаться к просмотру графика какого-либо финансового инструмента, в стакане цен будет автоматически включаться точно такой же инструмент.

    Вам не придется отдельно открывать стакан цен для каждого нового символа.

    Создание и тестирование кастомных инструментов в MetaTrader 5 build 1640

  4. Terminal: Исправлено обновление панелей инструментов после сворачивания и разворачивания окна терминала.

  5. Terminal: Исправлено формирование торговой истории позиций при пересечении тикетов сделок и позиций.

  6. MQL5: Добавлена возможность профилирования MQL5-программ на ценовой истории. Это позволит быстро проверять производительность программ без ожидания новых тиков.

    При профилировании на реальных данных программа запускается на обычном графике в терминале. Многие программы, в особенности индикаторы, осуществляют какие-либо расчеты только при приходе нового тика (OnTick, OnCalculate).

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

    Создание и тестирование кастомных инструментов в MetaTrader 5 build 1640

  7. MQL5: Добавлена поддержка Объединения (union). Это особый тип данных, который состоит из нескольких переменных, разделяющих одну и ту же область памяти. Следовательно, объединение обеспечивает возможность интерпретации одной и той же последовательности битов двумя (или более) различными способами.

    Объявление объединения начинается с ключевого слова union.
    union LongDouble
    {
      long   long_value;
      double double_value;
    };
    
    В отличие от структуры, разные члены объединения относятся к одному и тому же участку памяти. В данном примере объявлено объединение LongDouble, в котором значение типа long и значение типа double разделяют одну и ту же область памяти.

    Важно понимать — невозможно сделать так, чтобы это объединение хранило одновременно целочисленное значение long и вещественное double (как это было бы в структуре), поскольку переменные long_value и double_value накладываются (в памяти) друг на друга.

    Но зато MQL5-программа в любой момент может обрабатывать информацию, содержащуюся в этом объединении, как целочисленное значение (long) или как вещественное (double). Следовательно, объединение позволяет получить два (или больше) варианта представления одной и той же последовательности данных.

    При объявлении объединения компилятор автоматически выделяет область памяти, достаточную для хранения в объединении переменных самого большого по объему типа. Для доступа к элементу объединения используется тот же синтаксис, как и для структур – оператор «точка».

  8. MQL5: Добавлена автоматическая генерация неявного оператора копирования для объектов структур и классов. Теперь компилятор автоматически создает операторы копирования, что позволяет писать для объектов простые записи вида b=a.

    В неявном операторе осуществляется почленное копирование объектов.

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

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

  9. MQL5: Оптимизировано использование памяти при обращении к ценовой истории из экспертов при помощи Copy* функций. При работе с большими объемами данных потребление памяти будет снижено многократно.

  10. MQL5: Теперь функция TimeToStruct возвращает булево значение, позволяя проверять успешность конвертации datetime в
    MqlDateTime.

  11. MQL5: Добавлен запрет на использование функций FileWriteStruct и FileReadStruct для структур, содержащих строки, динамические массивы, объекты и указатели.

  12. MQL5: Добавлены коды ответа:

    • TRADE_RETCODE_REJECT_CANCEL — запрос на активацию отложенного ордера отклонен, а сам ордер отменен
    • TRADE_RETCODE_LONG_ONLY — запрос отклонен, так как на символе установлено правило «Разрешены только длинные позиции»
    • TRADE_RETCODE_SHORT_ONLY — запрос отклонен, так как на символе установлено правило «Разрешены только короткие позиции»
    • TRADE_RETCODE_CLOSE_ONLY — запрос отклонен, так как на символе установлено правило «Разрешено только закрывать существующие позиции»
  13. MQL5: Добавлено новое значение, возвращаемое функцией SymbolInfoInteger c параметром SYMBOL_ORDER_MODE. SYMBOL_ORDER_CLOSEBY — флаг возможности выставления ордеров на закрытие позиции встречной (Close By).

  14. MQL5: В перечисление ENUM_SYMBOL_INFO_INTEGER добавлено булево свойство SYMBOL_CUSTOM. Оно позволяет узнать, является ли символ пользовательским. Для получения свойства используйте функцию SymbolInfoInteger.

  15. MQL5: Добавлена возможность получения причины создания ордера, сделки и позиции.

    Новые свойства

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

  16. MQL5: Оптимизирована синхронизация и доступ к тиковой истории.

  17. MQL5: Исправлена ошибка отдачи тиков в статический массив в функции CopyTicksRange. Ранее в этом случае всегда возвращалось 0 тиков.

  18. MQL5: Внесены различные исправления в библиотеку нечеткой логики Fuzzy.

  19. Signals: Исправлено открытие сигнала с сайта при отсутствии подключения торговым счетом.

  20. Tester: Оптимизирована и значительно ускорена работа с историей ордеров и сделок. При работе с большим объемом данных (десятки тысяч записей в истории и более) скорость работы увеличится многократно.

  21. Tester: Исправлено вычисление времени удержания позиции в отчёте тестирования.

  22. MetaEditor: В отладчике исправлено отображение содержимого статических массивов-членов класса.

  23. MetaEditor: Добавлен список точек останова в отлаживаемой программе. Для перехода к нему используйте контекстное меню вкладки «Отладка»:

    Создание и тестирование кастомных инструментов в MetaTrader 5 build 1640

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

  24. Обновлена документация.
26 Комментариев
  • Павел Самолетов
    24 июля 2017, 13:58
    cool 
  • vladimirc1983
    24 июля 2017, 14:12
    Однако, фильтрация объёмов в ленте это уже вообще отлично! СПАСИБО!
  • Влад Маркин
    24 июля 2017, 14:26
    Приветствую! Когда для фьючерсов будет удалено отображение клиринговых сделок на графике и попадание их в историю сделок? Это захломляет график, сбивает работу робота при переносе в безубыток и т.д. и т.п. В квике все плохо, но это работает как надо.
    Все отсальное устраивает. По сравнению с Квиком — космос. Новые фишки тоже пригодятся.
      • Влад Маркин
        26 июля 2017, 09:46
        MetaQuotes Software, Сегодня все увидел! В версии 1643 на графике перестали отображаться клиринговые сделки. На самом деле уже давно пытаюсь решить этот вопрос через поддержку MQ, пробовал даже «шантажировать» брокеров (БКС и Открытие), что если исправят/не исправят фишки с клиринговыми сделками открою/закрою счет.  Эффекта — ноль! Сюда написал просто так, уехал в командировку, приехал — все (ну не совсем конечно все :)) сделано! Спасибо 3 раза!!! Странно, что кроме меня никто не интересуется вопросом. Либо никто на нашем рынке не торгует фьючерсами через MT5,  либо это им не мешает. Не очень понимаю. Я больше 10 лет пользовался только квиком. Полгода назад открыл экспериментальный счет в Открытии (дают доступ через MT5). Сейчас лишний раз квик даже включать не хочу.
        Теперь парус слов про «не совсем все». С графиком теперь все отлично (еще раз СПАСИБО!!!). Но клиринговые сделки по прежнему попадают в историю сделок. В таблице истории их можно убрать, но если сформировать отчет (отчеты тоже отличные) они там будут. Из-за этого искажается статистика. В моем случае всего реальных сделок было около 26, а в отчете их 126. Кол-во сделок искажает статистику: прибыль на сделку, профит фактор, мат. ожидание, % приб/уб сделок и т.д.
        Также есть подозрение, что если клиринговые сделки попадают в историю, то и эксперт (робот) будет принимать их за реальные сделки и на каждом клиринге будет пересчитывать SL, TP и т.д. Пока не проверял.
        Извиняюсь за хамство, но если это возможно хотелось бы чтобы это тоже поправили :)
        Честно говоря странно, что до сих пор все трейдуны не перешли на MT5. Еще раз повторюсь — по сравнению с квиком это космос!
          • Cloud
            27 июля 2017, 00:58
            MetaQuotes Software, сделайте единый счёт уже в след версии и внедрите финаму)
        • Cloud
          27 июля 2017, 00:57
          Влад Маркин, нет единого счёта потому и не прешли
  • Андрей К
    24 июля 2017, 14:46
    новые символы могут поддерживать микросекунды в тиках?
  • Artemunak
    24 июля 2017, 15:38
    спасибо за хорошие новости.
    Надеюсь что когда допилите датафиды то ещё сделаете нормальные шаблоны в визарде именно для них, для синтетики итд.  
    И вообще хотелось бы больше мощи от визарда, раз уж вы так против кубиков.
  • Jame Bonds
    24 июля 2017, 16:09
    Когда опционы и единый брокерский счет?
  • kofesutra
    24 июля 2017, 16:14
    Не починили ли запуск МТ5 х64 под Wine-ом? А то как сломали несколько месяцев назад, так и обновиться нельзя — не работает :(
      • kofesutra
        24 июля 2017, 19:57
        MetaQuotes Software, попробовал с wine 2.13 (оказывается 21 числа вышел) — обновления МТ5 приходят, но при перезапуске МТ падает с ошибкой :(
        х32 не имею, так что пока жду и надеюсь сидя на старом билде 1495 :(
          • robomakerr
            26 июля 2017, 20:12
            MetaQuotes Software, 
            когда тиковый таймфрейм сделаете?
  • Андрей Инютин
    24 июля 2017, 18:27
    Вопрос к MetaQuotes — у брокера БКС при подключении метатрейдера в квике нельзя выставлять заявки на облигациии. Причем ОФЗ в метатрейдере видны и заявки(которые однако можно выставить по телефону) и сама позиция.
    На мой вопрос — сделают ли возможность в метатрейдере выставлять заявки по облигациям (хотя ОФЗ) или возможность в квике из выставлять — они переадресовывают к разработчику метатрейдера…



  • ___

    Пожалуйста сделайте возможность переименовывать 
    символы прямо в списке, что бы контракт на золото
    можно было просто назвать GOLD для удобности и тд. а не имя контракта… или даже на русском написать ЗОЛОТО — август… и понимать что и где если контрактов много разных ..

    в истории и открытых сделках конечно хранить
    всё как есть на самом деле ...



    __

  • ___
    Обзор рынка -

    разрешите отключать столбы bid\ask
    оставлять лишь «последняя»

    =====
    Торговля -

    разрешите отключать столбик «тикет»(просто номера ордеров не несущие никакой ценной инфы) и цену-2 — т.е. текущую
    цену… — если нужно её я как бы на графике смогу увидеть…или в списке символов... а так лишнее место… (кому нужно для
    скриншотов например — включат)

     

    заранее спасибо !


  • ===

    Добавьте если можно параметр! -


    Прибыль в %ентах от баланса депозита
    (в отображении)

    ----------

    Столбик "ПРИБЫЛЬ при ТП" -

    те общий подсчёт прибыли в случае
    срабатывания у всех открытых
    позиций уровня ТП

  • Миха
    10 августа 2017, 09:25
    Вы почините когда-нибудь поиск на вашем веб-сайте mql5.com?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн