---
title: "MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - Последние обновления"
description: "Теперь вы можете выносить графики финансовых инструментов за пределы окна торгового терминала. Это удобно при работе с несколькими... - Последние обновления"
image: "https://www.metatrader5.com/c/17/0/terminal_1__49.png"
url: "https://www.metatrader5.com/ru/releasenotes/terminal/1898"
---

# MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

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

26 октября 2018

### Terminal

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

   ![](https://www.metatrader5.com/c/17/0/terminal_1__49.png)

    Чтобы вам не приходилось переключаться между мониторами для нанесения аналитических объектов или индикаторов, у открепленных графиков предусмотрена отдельная панель инструментов. Чтобы изменить набор команд или скрыть панель инструментов, воспользуйтесь ее контекстным меню.
2. Полностью обновлены встроенные чаты. Теперь они поддерживают групповые диалоги и каналы. Вы можете вести закрытые обсуждения с группой людей в едином пространстве, не переключаясь между разными диалогами, создавать тематические каналы по интересам и языкам. Общаться с коллегами и друзьями на MQL5.community можно не заходя на сайт. Каждый групповой чат и канал может быть публичным или приватным. Автор сам решает, можно ли к ним присоединяться свободно или только по приглашению. Также в каналы и чаты можно назначать модераторов для дополнительного контроля общения.

   ![](https://www.metatrader5.com/c/17/0/terminal_2__24.png)
3. Добавлена поддержка объемов повышенной точности для торговли криптовалютами. Теперь минимально возможный объем торговых операций составляет 0.00000001 лота. В стакан цен, ленту сделок и другие элементы интерфейса добавлена возможность отображения объемов с точностью до 8 знаков после запятой. Минимальный объем и шаг его изменения зависят от настроек финансового инструмента на стороне брокера.

   ![](https://www.metatrader5.com/c/17/0/terminal_3__21.png)
4. В окно "Инструменты" добавлена вкладка статей, опубликованных на [MQL5.community](https://www.mql5.com/ru/articles). Более 600 подробных материалов о разработке торговых стратегий на MQL5 теперь доступны прямо в терминале. Новые статьи выходят каждую неделю.

   ![](https://www.metatrader5.com/c/17/0/terminal_4__21.png)
5. Добавлена поддержка [расширенной авторизации](https://www.metatrader5.com/ru/terminal/help/start_advanced/extended_authorization) с использованием сертификатов при работе под Wine.
6. Исправлено отображение стакана цен при ограничении его глубины одним уровнем.
7. На панель инструментов "Стандартная" добавлена команда "Сохранить как рисунок". Делать снимки графиков и делиться ими в сообществе стало еще легче.

   ![](https://www.metatrader5.com/c/17/0/terminal_6__5.png)
8. Исправлено применение сдвига времени при импорте баров и тиков. Ранее в некоторых случаях сдвиг не применялся.

   ![](https://www.metatrader5.com/c/17/0/terminal_7__4.png)
9. Исправлено подвисание терминала при большом количестве новостей экономического календаря.

### MQL5

1. Добавлена нативная поддержка .NET библиотек с "умным" импортом функций. Теперь библиотеки .NET можно использовать без написания специальных оберток — MetaEditor берет это на себя. Для работы с функциями .NET библиотеки достаточно импортировать саму DLL без указания конкретных функций. MetaEditor автоматически импортирует все функции, с которыми возможна работа:

     - Простые структуры (POD, plain old data) — структуры, которые содержат только простые типы данных.
     - Публичные статические функции, в параметрах которых используются только простые типы и структуры POD или их массивы

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

   ```
   #import "TestLib.dll" //+------------------------------------------------------------------+ //| Script program start function                                    | //+------------------------------------------------------------------+ void OnStart()   {    int x=41;    TestClass::Inc(x);    Print(x);   }
   ```

    C# код функции Inc класса TestClass выглядит следующим образом:

   ```
   public class TestClass {    public static void Inc(ref int x)    {     x++;    } }
   ```

    В результате выполнения скрипт вернет значение 42.Работа над поддержкой .NET библиотек продолжается, в будущих версиях планируется расширить возможности их использования.
2. В стандартную библиотеку добавлена поддержка работы с функциями WinAPI. Теперь для использования функций операционной системы в MQL5-программе нет необходимости вручную импортировать библиотеки и описывать сигнатуры функций. Достаточно подключить заголовочный файл из каталога MQL5\Include\WinAPI.Функции WinAPI сгруппированы в отдельных файлах по назначению:

     - libloaderapi.mqh — работа с ресурсами
     - memoryapi.mqh — работа с памятью
     - processenv.mqh — работа с окружением
     - processthreadsapi.mqh — работа с процессами
     - securitybaseapi.mqh — работа с системой безопасности ОС
     - sysinfoapi.mqh — получение системной информации
     - winbase.mqh — общие функции
     - windef.mqh — константы, структуры и перечисления
     - wingdi.mqh — работа с графическими объектами
     - winnt.mqh — работа с исключениями
     - winreg.mqh — работа с реестром
     - winuser.mqh — управление окнами и интерфейсом
     - errhandlingapi.mqh — обработка ошибок
     - fileapi.mqh — работа с файлами
     - handleapi.mqh — работа с хэндлами
     - winapi.mqh — подключение всех функций (заголовочных файлов WinAPI)

   Обвязка работает только с 64-битной архитектурой.
3. Добавлена поддержка спецификаторов inline, __inline, __forceinline при синтаксическом анализе кода. Наличие этих спецификаторов в коде не будет вызывать ошибки, но и не будет влиять на компиляцию. На данный момент это позволит легче переносить С++ код в MQL5. Более подробная информация о спецификаторах доступна в [MSDN](https://msdn.microsoft.com/ru-ru/library/bw1hbe6y.aspx).
4. Проведена существенная оптимизация исполнения MQL5-программ. В некоторых случаях прирост производительности может достигать 10%. Чтобы получить прирост скорости, перекомпилируйте ваши программы в новой версии MetaEditor.

   > К сожалению, дополнительная оптимизация привела к потере совместимости новых программ с предыдущими версиями терминала. Все программы, скомпилированные в MetaEditor версии 1912 и выше, не будут запускаться в терминалах версии ниже 1912. При этом программы, скомпилированные ранее в предыдущих версиях MetaEditor, будут в работать в новых терминалах.
5. Проведена большая работа по оптимизации множества функций MQL5.
6. Добавлены новые свойства для прикрепления/открепления графиков от основного окна терминала и управления их положением. В перечисление [ENUM_CHART_PROPERTY_INTEGER](https://www.mql5.com/ru/docs/constants/chartconstants/enum_chart_property#enum_chart_property_integer) добавлены:

     - CHART_IS_DOCKED — окно графика закреплено. Если установить значение false, то график можно перетащить за пределы терминала.
     - CHART_FLOAT_LEFT — левая координата открепленного графика относительно виртуального экрана.
     - CHART_FLOAT_TOP — верхняя координата открепленного графика относительно виртуального экрана.
     - CHART_FLOAT_RIGHT — правая координата открепленного графика относительно виртуального экрана.
     - CHART_FLOAT_BOTTOM — нижняя координата открепленного графика относительно виртуального экрана.

    В перечисление [ENUM_TERMINAL_INFO_INTEGER](https://www.mql5.com/ru/docs/constants/environment_state/terminalstatus#enum_terminal_info_integer) добавлены:

     - TERMINAL_SCREEN_LEFT — левая координата виртуального экрана. Виртуальным экраном является прямоугольник, охватывающий все мониторы. Если в системе имеются два монитора и их порядок задан справа налево, то левая координата виртуального экрана может оказаться на границе двух мониторов.
     - TERMINAL_SCREEN_TOP — верхняя координата виртуального экрана.
     - TERMINAL_SCREEN_WIDTH — ширина терминала.
     - TERMINAL_SCREEN_HEIGHT — высота терминала.
     - TERMINAL_LEFT — левая координата терминала относительно виртуального экрана.
     - TERMINAL_TOP — верхняя координата терминала относительно виртуального экрана.
     - TERMINAL_RIGHT — правая координата терминала относительно виртуального экрана.
     - TERMINAL_BOTTOM — нижняя координата терминала относительно виртуального экрана.
7. Добавлено поле volume_real в структуры MqlTick и MqlBookInfo. Оно предназначено для работы с объемом повышенной точности. Значение volume_real имеет больший приоритет по сравнению с volume. Сервер будет использовать именно это значение, если оно указано.

   struct MqlTick
    {
    datetime  time; // Время последнего обновления цен
    double bid; // Текущая цена Bid
    double ask; // Текущая цена Ask
    double last; // Текущая цена последней сделки (Last)
    ulong volume; // Объем для текущей цены Last
    long time_msc; // Время последнего обновления цен в миллисекундах
    uint  flags; // Флаги тиков
    double volume_real; // Объем для текущей цены Last c повышенной точностью
    };

   ```
   struct MqlBookInfo   {    ENUM_BOOK_TYPE   type;            // тип заявки из перечисления ENUM_BOOK_TYPE    double           price;           // цена    long             volume;          // объем    double           volume_real;     // объем с повышенной точностью   };
   ```
8. В перечисление [ENUM_SYMBOL_INFO_DOUBLE](https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double) добавлены новые свойства:

     - SYMBOL_VOLUME_REAL — объем последней совершенной сделки;
     - SYMBOL_VOLUMEHIGH_REAL — максимальное значение объема совершенной сделки за текущие сутки;
     - SYMBOL_VOLUMELOW_REAL — минимальное значение объема совершенной сделки за текущие сутки.

    Для получения этих свойств используйте функцию [SymbolInfoDouble](https://www.mql5.com/ru/docs/marketinformation/symbolinfodouble).
9. В перечисление [ENUM_MQL_INFO_INTEGER](https://www.mql5.com/ru/docs/constants/environment_state/mql5_programm_info#enum_mql_info_integer) добавлено свойство MQL_FORWARD — признак того, что программа находится в режиме [форвард-тестирования](https://www.metatrader5.com/ru/terminal/help/algotrading/testing#forward).
10. Для структур добавлено свойство pack( integer_value ). Оно позволяет задать выравнивание расположения полей внутри структуры, это бывает необходимо при работе с DLL. Для integer_value возможны значения 1, 2, 4, 8 и 16.Если свойство не определено, по умолчанию используется вырванивание в 1 байт — pack(1).Пример использования:

    ```
    //+------------------------------------------------------------------+ //| Default packing                                                  | //+------------------------------------------------------------------+ struct A   {    char              a;    int               b;   }; //+------------------------------------------------------------------+ //| Specified packing                                                | //+------------------------------------------------------------------+ struct B pack(4)   {    char              a;    int               b;   }; //+------------------------------------------------------------------+ //| Script program start function                                    | //+------------------------------------------------------------------+ void OnStart()   {    Print("sizeof(A)=",sizeof(A));    Print("sizeof(B)=",sizeof(B));   } //+------------------------------------------------------------------+
    ```

    Вывод:

    ```
    sizeof(A)=5 sizeof(B)=8
    ```

    Более подробная информация о выравнивании в структурах доступно в [MSDN](https://msdn.microsoft.com/en-us/library/2e70t5y1.aspx).
11. Ослаблены требования к приведению перечислений. При неявном приведении компилятор автоматически подставит значение правильного перечисления и выведет предупреждение. Для следующего кода:

    ```
    enum Main   {    PRICE_CLOSE_,    PRICE_OPEN_   }; input Main Inp=PRICE_CLOSE; //+------------------------------------------------------------------+ //| Start function                                                   | //+------------------------------------------------------------------+ void OnStart()   {   }
    ```

     Компилятор выдаст предупреждение:

    implicit conversion from 'enum ENUM_APPLIED_PRICE' to 'enum Main' 'Main::PRICE_OPEN_' instead of 'ENUM_APPLIED_PRICE::PRICE_CLOSE' will be used

     Ранее в этом случае выдавалась ошибка:

    'PRICE_CLOSE' - cannot convert enum

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

    ```
    class X {  }; void f(int)  {  }    template<typename T> void a(T*) { new T(2); }  // ранее в этом месте компилятор выдавал ошибку    template<typename T> void a()  { f(0); }       void OnInit()  { a<X>(); }
    ```
13. Оптимизированы некоторые случаи доступа к тиковой истории через [функции CopyTicks*](https://www.mql5.com/ru/docs/series/copyticks).
14. Добавлена новая функция TesterStop, которая позволяет досрочно завершить тестирование/проход оптимизации. При ее вызове вся накопленная торговая статистика и результат [OnTester](https://www.mql5.com/ru/docs/event_handlers/ontester) передаются в клиентский терминал как при штатном заврешении тестирования/оптимизации.
15. Добавлено новое свойство для пользовательских индикаторов #property tester_everytick_calculate. Оно используется в тестере стратегий и позволяет принудительно влючить расчет индикаторов на каждом тике.

### Tester

1. Теперь при невизуальном тестировании/оптимизации все используемые индикаторы (стандартные и пользовательские) рассчитываются только по запросу данных. Исключение составляют индикаторы, содержащие вызовы функции [EventChartCustom](https://www.mql5.com/ru/docs/eventfunctions/eventchartcustom) и использующие обработчик [OnTimer](https://www.mql5.com/ru/docs/event_handlers/ontimer). Ранее в тестере стратегий при приходе любого тика (даже от чужого инструмента) все индикаторы рассчитывались безусловно. Нововведение позволило существенно ускорить тестирование и оптимизацию.Чтобы принудительно включить расчет индикаторов на каждом тике, добавьте для программы свойство #property tester_everytick_calculate.Индикаторы, скомпилированные предыдущими версиями компилятора, будут рассчитываться как раньше — на каждом тике.
2. Исправлен учет точности валюты депозита при тестировании/оптимизации и формировании соответствующих отчетов.
3. Оптимизирована и ускорена работа тестера стратегий.
4. Исправлен ряд ошибок тестирования и оптимизации.

### MetaEditor

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

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

**Предыдущие новости:**

- [MetaTrader 5 build 1880: расчет полной истории синтетических инструментов](https://www.metatrader5.com/ru/releasenotes/terminal/1880)
- [MetaTrader 5 build 1870: добавление символов в Обзор рынка по ISIN](https://www.metatrader5.com/ru/releasenotes/terminal/1870)
- [MetaTrader 5 build 1860: функции для работы с барами в MQL5 и улучшения в тестере стратегий](https://www.metatrader5.com/ru/releasenotes/terminal/1860)
- [MetaTrader 5 build 1755](https://www.metatrader5.com/ru/releasenotes/terminal/1755)
- [MetaTrader 5 build 1745](https://www.metatrader5.com/ru/releasenotes/terminal/1745)
