Бета-версия платформы MetaTrader 5 build 1625: Пользовательские финансовые инструменты

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes
Модератор
216137
MetaQuotes  

Бета-версия платформы MetaTrader 5 build 1625: Пользовательские финансовые инструменты

30 июня 2017 года будет выпущена обновленная версия платформы MetaTrader 5 в бета-режиме. Мы обновим наш публичный демо-сервер MetaQuotes-Demo, находящийся по адресу access.metatrader5.com:443. Призываем всех трейдеров присоединиться к тестированию новой версии платформы, чтобы самостоятельно опробовать все ее возможности и помочь разработчикам в исправлении найденных ошибок.

Для обновления на новый 1625 билд платформы MetaTrader 5 достаточно подключиться к серверу access.metatrader5.com:443.

После окончания данного этапа бета-тестирования будет выпущен финальный билд новой платформы MetaTrader 5.

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

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


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

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



    Импорт ценовой истории
    Вы можете импортировать ценовые данные в собственный символ из любого текстового файла, а также из файлов истории MetaTrader: HST и HCC. Выберите символ, а затем перейдите на вкладку "Бары". Импорт тиков пока не поддерживается.



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

    • Разделитель — разделитель элементов в текстовом файле.
    • Пропуск столбцов и строк — количество колонок (слева направо) и строк (сверху вниз), которое необходимо пропустить при импорте.
    • Сдвиг — сдвиг времени по часам. Эта опция используется при импортировании данных, сохраненных в другом часовом поясе.
    • Только выделенные — эта опция позволяет импортировать только выделенные в окне просмотра строки. Строки можно выделить с помощью мыши, удерживая клавиши "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

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

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

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

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

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


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

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




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

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




  7. MQL5: Добавлена поддержка Объединения (union). Это особый тип данных, который состоит из нескольких переменных, разделяющих одну и ту же область памяти. Следовательно, объединение обеспечивает возможность интерпретации одной и той же последовательности битов двумя (или более) различными способами. Объявление объединения начинается с ключевого слова union.
    union LongDouble
    {
      long   long_value;
      double double_value;
    };
    В отличие от структуры, разные члены объединения относятся к одному и тому же участку памяти. В данном примере объявлено объединение LongDouble, в котором значение типа long и значение типа double разделяют одну и ту же область памяти. Важно понимать — невозможно сделать так, чтобы это объединение хранило одновременно целочисленное значение long и вещественное double (как это было бы в структуре), поскольку переменные long_value и double_value накладываются (в памяти) друг на друга. Но зато MQL5-программа в любой момент может обрабатывать информацию, содержащуюся в этом объединении, как целочисленное значение (long) или как вещественное (double). Следовательно, объединение позволяет получить два (или больше) варианта представления одной и той же последовательности данных.

    При объявлении объединения компилятор автоматически выделяет область памяти, достаточную для хранения в объединении переменных самого большого по объему типа. Для доступа к элементу объединения используется тот же синтаксис, как и для структур — оператор "точка".
    union LongDouble
    {
      long   long_value;
      double double_value;
    };
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //---
       LongDouble lb;
    //--- получим недействительное число -nan(ind) и выведем его
       lb.double_value=MathArcsin(2.0);
       printf("1.  double=%f                integer=%I64X",lb.double_value,lb.long_value);
    //--- наибольшее нормализованное число (DBL_MAX)
       lb.long_value=0x7FEFFFFFFFFFFFFF;
       printf("2.  double=%.16e  integer=%I64X",lb.double_value,lb.long_value);
    //--- наименьшее положительное нормализованное (DBL_MIN)
       lb.long_value=0x0010000000000000;    
       printf("3.  double=%.16e  integer=%.16I64X",lb.double_value,lb.long_value);
      }
    /*  Результат выполнения
        1.  double=-nan(ind)                integer=FFF8000000000000
        2.  double=1.7976931348623157e+308  integer=7FEFFFFFFFFFFFFF
        3.  double=2.2250738585072014e-308  integer=0010000000000000
    */

  8. MQL5: Добавлена автоматическая генерация неявного оператора копирования для объектов структур и классов. Теперь компилятор автоматически создает операторы копирования, что позволяет писать для объектов простые записи вида b=a:
    class Foo
      {
       int               value;
    public:
       string Description(void){return IntegerToString(value);};
       //--- конструктор по умолчанию
                         Foo(void){value=-1;};
       //--- конструктор с параметрами   
                         Foo(int v){value=v;};
      };
    //+------------------------------------------------------------------+
    //|  структура, содержащая объекты типа Foo                          |
    //+------------------------------------------------------------------+
    struct MyStruct
      {
       string            s;
       Foo               foo;
      };
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //---
       MyStruct a,b;
       Foo an_foo(5);
       a.s="test";
       a.foo=an_foo;
       Print("a.s=",a.s," a.foo.Description()=",a.foo.Description());
       Print("b.s=",b.s," b.foo.Description()=",b.foo.Description());
    //---
       Print("b=a");
       b=a;
    //---
       Print("a.s=",a.s," a.foo.Description()=",a.foo.Description());
       Print("b.s=",b.s," b.foo.Description()=",b.foo.Description());
    /*
       Результат выполнения;
       a.s=test a.foo.Description()=5
       b.s= b.foo.Description()=-1
       b=a
       a.s=test a.foo.Description()=5
       b.s=test b.foo.Description()=5
    */
      }
    В неявном операторе осуществляется почленное копирование объектов.

    • Если член является объектом, вызывается соответствующий для этого объекта оператор копирования.
    • Если член является массивом объектов, то перед вызовом соответствующего оператора копирования для каждого элемента принимающий массив увеличивается или уменьшается до нужного размера через 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: Добавлена возможность получения причины создания ордера, сделки и позиции.

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


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

    ENUM_POSITION_REASON ENUM_DEAL_REASON ENUM_ORDER_REASON Описание причины
    POSITION_REASON_CLIENT DEAL_REASON_CLIENT ORDER_REASON_CLIENT Операция совершена в результате срабатывания ордера, выставленного из десктопного терминала
    POSITION_REASON_MOBILE DEAL_REASON_MOBILE ORDER_REASON_MOBILE Операция совершена в результате ордера, выставленного из мобильного приложения
    POSITION_REASON_WEB DEAL_REASON_WEB ORDER_REASON_WEB Операция совершена в результате срабатывания ордера, выставленного из веб-платформы
    POSITION_REASON_EXPERT DEAL_REASON_EXPERT ORDER_REASON_EXPERT Операция совершена в результате срабатывания ордера, выставленного из MQL5-программы – советником или скриптом
    - DEAL_REASON_SL ORDER_REASON_SL Операция совершена в результате срабатывания Stop Loss
    - DEAL_REASON_TP ORDER_REASON_TP Операция совершена в результате срабатывания Take Profit
    - DEAL_REASON_SO ORDER_REASON_SO Операция совершена в результате наступления события Stop Out
    - DEAL_REASON_ROLLOVER - Сделка совершена по причине переноса позиции
    - DEAL_REASON_VMARGIN - Сделка совершена по причине начисления/списания вариационной маржи
    - DEAL_REASON_SPLIT - Сделка совершена по причине сплита (понижения цены) акции или иного актива, по которому имелась позиция на момент объявления сплита

  16. MQL5: Оптимизирована синхронизация и доступ к тиковой истории.
  17. MQL5: Исправлена ошибка отдачи тиков в статический массив в функции CopyTicksRange. Ранее в этом случае всегда возвращалось 0 тиков.
  18. MQL5: Внесены различные исправления в библиотеку нечеткой логики Fuzzy.
  19. Signals: Исправлено открытие сигнала с сайта при отсутствии подключения торговым счетом.
  20. Tester: Оптимизирована и значительно ускорена работа с историей ордеров и сделок. При работе с большим объемом данных (десятки тысяч записей в истории и более) скорость работы увеличится многократно.
  21. Tester: Исправлено вычисление времени удержания позиции в отчёте тестирования.
  22. MetaEditor: В отладчике исправлено отображение содержимого статических массивов-членов класса.
  23. MetaEditor: Добавлен список точек останова в отлаживаемой программе. Для перехода к нему используйте контекстное меню вкладки "Отладка":


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

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

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

MetaQuotes Software Corp.:

Файл с минутными барами должен иметь формат: Дата Время Open High Low Close ТиковыйОбъем Объем Спред. Например:

  1. 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 ценовая история хранится в виде минутных баров. Все остальные таймфреймы создаются на их основе. При импорте вы можете использовать данные и с более высоких таймфреймов, но следует учитывать, что графики более низких таймфреймов при этом будут иметь пропуски. Например, при импорте часовых данных на минутном графике вы увидите по одному бару на каждый час.
Несмотря на отсутствие Ask-баров, желающие смогут для канальных стратегий загонять историю HighBid и LowAsk. Это хорошо!

    Использование собственных символов

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

В тестере торговать по кастомным тоже нельзя будет в этом билде?
  1. Terminal: Исправлено формирование торговой истории позиций при пересечении тикетов сделок и позиций.
Что имеется в виду? Пример, пожалуйста.
MQL5: Добавлена возможность профилирования MQL5-программ на ценовой истории. Это позволит быстро проверять производительность программ без ожидания новых тиков.
Спасибо!
  1. MQL5: Добавлена автоматическая генерация неявного оператора копирования для объектов структур и классов. Теперь компилятор автоматически создает операторы копирования, что позволяет писать для объектов простые записи вида b=a:
Наконец-то, можно будет какой-нибудь MqlTradeRequest присваивать по-человечески и не плодить из string-содержащих структур uchar[]-структуры для придания простоты. Огромное Спасибо!
  1. MQL5: Добавлена возможность получения причины создания ордера, сделки и позиции.
Это очень хорошо!
  1. Tester: Оптимизирована и значительно ускорена работа с историей ордеров и сделок. При работе с большим объемом данных (десятки тысяч записей в истории и более) скорость работы увеличится многократно.

Имеет смысл кэшировать историю после такой оптимизации?

  1. MetaEditor: Добавлен список точек останова в отлаживаемой программе. Для перехода к нему используйте контекстное меню вкладки "Отладка":
Удобно! Благодарность за все пункты.
threat
83
threat  

точка


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


Можно реализовать вместо "пропуск", т.к. "только выделенные" вполне реализует тоже самое.

MetaQuotes
Админ
27474
Renat Fatkhullin  

В числах принимается только точка и это менять не будем.

threat
83
threat  
Renat Fatkhullin:

В числах принимается только точка и это менять не будем.

терминал для программистов :)  Перфекционизм и внутренняя красота программы имеет приоритет выше, чем необходимости потребителя. Ну, что ж, ответ принимается.
Vitalii Ananev
10560
Vitalii Ananev  
threat:
терминал для программистов :)  Перфекционизм и внутренняя красота программы имеет приоритет выше, чем необходимости потребителя. Ну, что ж, ответ принимается.

Вопрос с excel решается довольно просто. Достаточно в настройках ОС в региональных стандартах  запятую заменить на точку.


threat
83
threat  
Vitalii Ananev:

Вопрос с excel решается довольно просто. Достаточно в настройках ОС в региональных стандартах  запятую заменить на точку.


Еще проще - для содержимого прописывается одна строка:

StringReplace(str,",",".");   

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

Alexey Volchanskiy
27264
Alexey Volchanskiy  

А чем финансовые инструменты отличаются от символов? Об этом написано в самом начале первого поста. Биржа и Форекс?

Rashid Umarov
Админ
16664
Rashid Umarov  
Alexey Volchanskiy:

А чем финансовые инструменты отличаются от символов? Об этом написано в самом начале первого поста. Биржа и Форекс?

Никакой разницы, оба названия в ходу

fxsaber
16737
fxsaber  

Компиляция на 30% дольше стала. (1616)

fxsaber
16737
fxsaber  
Импорт из hcc-файлов не пашет. Зачем-то еще hst-файлы предлагаются, а не hcc.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий