Билд 2085 - 3 бага(недостатка) в работе с CustomSymbol через пользовательский интерфейс

 

Поводя летний отпуск в погружении в работу с терминала МТ5 я обнаружил целях 3 бага в работе Custom Symbol , которые и будут представлены в этой ветке пытливым читателям. Баги представлены на суд общественности в целях обсуждения , так как возможно это   где-то и не баги, а мое недопонимание работы МТ5.

В работе использовался  терминал x64 build 2085.

 

  1.  В поле "Формула синтетического инструмента" при создании Custom Symbol не возможно указать базовые активы в названии которых имеется точка (.)

Описание бага/недостатка :

У моего брокера такими активами являются акции на МОЕХ, XETRA и многих других биржах. Например акция Сбербанка имеет код SBRF.MM, а акция BMW имеет код BMW.XETR и т.д. Функционал Custom Symbol не воспринимает такие символы, и не дает возможности использовать их в поле "Формула синтетического инструмента"

Как воспроизвести ошибку:

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

  1. Открывает окно создания пользовательских символов, выбирает в качестве базы SBRF.MM название нового символа "SBRFSpread "
  2. Вводим формулу инструмента: ALLFUTSBRF-SBER.MM (ALLFUTSBRF - склеенный фьючерс   на акцию Сбербанка  и SBER.MM- акция Сбербанка)
  3. При нажатии на кнопку Ок получаем следующее поведение терминала:
  • закрытие формы с сохранением формулы не происходит,
  • внизу формы возникает надпись "неизвестная ошибка парсинга"

Скрин-шорт бага/недостатка :   https://yadi.sk/i/hjJLv-bYakFP0w

Ожидаемое/корректное поведение системы:

Функционал поле "Формула синтетического инструмента" при создании Custom Symbol адекватно воспринимает базовые активы в названии которых имеется точка (.) и работает с ними так же как с другими активами.

Файлы:
 

2. Функционал Custom Symbol  не пересчитывает бары на всю доступную историю базового символа + в интерфейсе нет указания не ошибки в расчетах

Описание бага/недостатка :

После создания синтетического инструмента, он заполоняется барами D1/H/1 b  и т.д. из базового символа. Однако на уровне D1 историческая глубина существенно меньше, чем доступна на сервере брокера по входящим в формулу базовым символам; и ограничена по моим наблюдениям примерно 3 месяцами. Нажатие на кнопку "Запрос" на экранной форме "Бары" с указанием нужного периода не приводит к увеличению глубины истории синтетического инструмента, т.е. там выгружаются бары с урезанной последней датой; при этом что интересно в "Журнале" появляются сообщения об обработке свечей на ТФ М1, а вовсе не Н1 как запрашивалось на экранной форме "Бары"(!).

Как воспроизвести ошибку:

Попробует создать простейший синтетический актив GOLDC на основе склеенного фьючерса FUTGOLDCONT.

  1. Создаем символ GOLDC  с простой формулой: FUTGOLDCONT*1.
  2. Выжидаем 15 мин и открывает графики D1 для GOLDC  и FUTGOLDCONT (FUTGOLDCONT - склеенный фьючерс   на золото на СМЕ).
  3. Убеждаемся воочию, что в GOLDC  на D1 история баров ограничена примерно 3 месяцами.

Скрин-шорт бага/недостатка :   https://yadi.sk/i/LzyHpYV0aDrr0A

Ожидаемое/корректное поведение системы:

Требуются массовые улучшения с целью повышения прозрачности процесса создания синтетических инструментов:

1. В экранной форме  "Бары" при расчетах для синтетических инструментов нужно выводить результаты расчетов по формуле за ВСЕ даты, которые  указаны с полях "С"/"ПО" - если где-то расчеты завершились ошибкой, то необходимо отобразить "N/A" и выводить описание ошибки в доп. поле  "Комментарии" (при этом некоторые поля там можно скрыть, н-р "Спред")

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

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

Файлы:
 

3. Функционал Custom Symbol   не позволяет работать с реальными объемами базовых инструментов

Описание бага/недостатка :

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

При этом объемы это 2я по значимости характеристика бара, после свечи OHLC и важна/необходима так же в синтетических инструментах.

Как воспроизвести ошибку:

Достаточно открыть на экранной форме "Бары" простой синтетический инструмент GOLDC , созданный для визуализации бага в предыдущем пункте и воочию убедиться, что в поле "Объем" пустое (хотя что интересно - поле "Тиковый объем " заполнено!). Так же в форме создания синтетического инструмента нет поля для указания на формулу преобразования объемов.

Скрин-шорт бага/недостатка : https://yadi.sk/i/Jn4ccJZyidW3BQ

Ожидаемое/корректное поведение системы:

В экранной форме создания инструмента создать доп. поле "Формула пересчета объемов", в которой дать возможность пользователям ввести формулу точно так же как в поле "Формула синтетического инструмента".

Файлы:
 

По первому вопросу.

Если символ имеет сложное название (содержит дефисы, точки и т.п.), оно должно быть заключено в кавычки. Например, "RTS-6.17".

Ссылка

 

По второму вопросу.

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

Ссылка

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

 
По третьему вопросу.
Вот тут не понятно, какой тиковый объём подгружается, реальный или нет?
Прошу знающих подсказать.
volume(имя символа) — в формуле будет использован объем тика указанного инструмента. Убедитесь, что информация об объемах транслируется для указанного инструмента.
Ссылка
 
Роман, благодарю за комментарии! 
Тут посмотрел материалы - действительно по 1му и 2му вопросу имеютмя решения. По 2му к сожалению решение типа ‘костыля’ - функционал неполный и непрозрачный, но типа вручную догрузить можно.
 
По 3му - то что вы пишите вообще не то, и не ответ. Т.к. volume(имя символа) помещает значения обьема в расчет ценовых значений OHLC бара, а я пишу про баг/недостаток функционала для работы с полем ‘Обьем’ синтетичского инструмента.
Причем твм 2:1: баг функционала в том, что по-умолчанию обьемы не копируются; недостаток - в том, что нет отдельного поля для формулы обработки иныормации по обьемам.
 
Roman:

По второму вопросу.

Ссылка

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

это не правильный ответ,  "и нажмите клавишу Page Up на клавиатуре" - это подгрузка руками истории для МТ4

в МТ5 терминал сам обеспечивает подгрузку истории, достаточно переключить на месячный ТФ или программно запросить данные - терминал сам все синхронизирует, вот пример программной проверки и загрузки истории он же и в справке MQL5 есть  https://www.mql5.com/ru/code/1251

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

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

 
Sergey Lebedev:
По 3му - то что выпишите вообще не то, и не ответ. Т.к.  volume(имя символа) выпишите помещает значения обьема в расчет ценовых значений OHLC бара, а я пишу про баг/недостаток функционала для работы с полей ‘Обьем’ синтетичского инструмента.
Причем твм 2:1: баг функционала в том, что по-умолчанию обьемы не копируются; недостаток - в том, что нет отдельного поля для формулы обработки иныормации по обьемам.

Если честно не знаю как работает данный метод  volume(имя символа) и как он рассчитывается. В справке не нашёл пояснений.
Для визуального отображения объёма, после того как отобразится синтетический график, ПКМ по чарту и нажать Объёмы.
Для работы из кода, думаю можно получить значение объёма по сивмолу кастомного инструмента. 
Или брать объёмы от обоих символов, и делать что угодно с ними ))
Сходу не нашел нужную функцию. Надо искать.
 

 
Igor Makanu:

это не правильный ответ,  "и нажмите клавишу Page Up на клавиатуре" - это подгрузка руками истории для МТ4

Это так же работает и в мт5, жму  Page Up и подгружается история.
Это хорошо видно по счётчику загрузки, в нижнем правом углу где сервера.
Так что метод рабочий и для мт5