Terminal
- Добавлено представление торговой истории в виде позиций. Терминал собирает данные по сделкам, относящимся к позиции (открытие,
наращивание, частичное и полное закрытие), и группирует эти данные в
единую запись, где можно сразу посмотреть:
- Время открытия и закрытия позиции, определяемое по первой и последней сделке соответственно
- Объем позиции; если позиция закрыта частично, показывается закрытый объем и исходный объем
- Средневзвешенную цену открытия и цену закрытия позиции
- Суммарный финансовый результат по сделкам, относящимся к позиции

Для хеджинговых счетов данный вид представления позиций фактически аналогичен истории счета в MetaTrader 4.
- Добавлена команда для визуализации истории сделок на графике по конкретному символу.
- Чтобы показать все сделки только по символу выбранной позиции/сделки, нажмите "Добавить сделки по [Имя символа]". Сделки будут добавлены на все открытые в данный момент графики по этому символу. Если таких графиков нет, будет открыт новый.
- Чтобы показать сделки по всем символам из истории счета, нажмите "Добавить все сделки". На все открытые графики будут добавлены все сделки по соответствующим символам.

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

- Добавлена возможность быстро установить разрешение для окна терминала.
Функция будет удобна для тех, кто снимает видеоролики. В меню доступны
наиболее популярные разрешения для публикации роликов в видеосервисах,
таких как YouTube.

- Шаблоны и профили графиков перенесены из [каталога данных
терминала\Profiles] в [каталог данных терминала\MQL5\Profiles]. Теперь
можно легко добавлять шаблоны в хранилище MQL5 Storage и использовать их с любого вашего компьютера.
MQL5
- Добавлена поддержка ресурсных переменных. Использование таких
переменных может существенно облегчить написание некоторых программ.
Например, вы можете написать OpenCL код в отдельном CL-файле, а затем
включить этот файл в виде строки в ресурсы вашей MQL5-программы. Раньше
вместо этого код пришлось бы описывать в виде одной большой строковой
переменной.
Объявление ресурсной переменной#resource путь_к_файлу_ресурса as тип_ресурсной_переменной имя_ресурсной_переменной
Особенности
- Для строковых файлов производится автоматическое определение кодировки по
BOM (заголовку). Если BOM отсутствует, кодировка определяется по
содержимому. Поддерживаются кодировки ANSI, UTF-8 и UTF-16. Все строки
переводятся в Unicode.
- К данным такого ресурса можно обращаться только через переменную. Автоматическая адресация через "::<resource name>" не работает.
- Специальный тип ресурсной переменной bitmap указывает компилятору, что ресурс является графическим изображением. Ресурсная переменная в данном случае получает тип uint.
- При использовании 24-битного изображения для всех его пикселей компонента альфа-канала устанавливается в значение 255.
- При использовании 32-битного изображения без альфа-канала для всех его пикселей компонента альфа-канала также устанавливается в значение 255.
- При загрузке 32-битного изображения с альфа-каналом никаких манипуляций с пикселями не происходит.
- Ресурсная переменная-массив типа bitmap может иметь две размерности. В этом случае размер массива будет установлен как [высота_картинки][ширина_картинки].
- В случае одномерного массива количество элементов будет установлено как высота_картинки*ширина_картинки.
- Если размер файла ресурса не кратен размеру элемента массива, то остаток данных отсекается. Например, при размере файла в 14 байт, для массива int количество элементов будет составлять 3, а оставшиеся 2 байта (14 - sizeof(int)*3) будут отброшены.
#resource "data.bin" as int ExtData[] // объявление массива числового типа, содержащего данные из файла data.bin #resource "data.bin" as MqlRates ExtData[] // объявление массива простых структур, содержащего данные из файла data.bin #resource "data.txt" as string ExtCode // объявление строки, содержащей данные файла data.txt #resource "data.txt" as string ExtCode[] // объявление строкового массива, содержащего строки файла data.txt #resource "image.bmp" as bitmap ExtBitmap[] // объявление одномерного массива, содержащего в себе растр из файла BMP, размер массива = height * width #resource "image.bmp" as bitmap ExtBitmap2[][] // объявление двумерного массива, содержащего в себе растр из файла BMP, размер массива [height][width]
- Для строковых файлов производится автоматическое определение кодировки по
BOM (заголовку). Если BOM отсутствует, кодировка определяется по
содержимому. Поддерживаются кодировки ANSI, UTF-8 и UTF-16. Все строки
переводятся в Unicode.
- Добавлено свойство CHART_SHOW для отключения отображения графика. Для получения и установки свойства используются функции ChartGetInteger и ChartSetInteger.
Если установлено значение false, то отключается отрисовка любых атрибутов ценового графика и устраняются все отступы по краям графика: шкалы времени и цены, строка быстрой навигации, метки событий Календаря, значки сделок, тултипы индикаторов и баров, подокна индикаторов, гистограммы объёмов и т.д.
Отключение отрисовки является идеальным решением для создания собственного интерфейса программы с использованием графических ресурсов.
Графические объекты отрисовываются всегда независимо от установленного значения свойства CHART_SHOW. - Добавлено свойство CHART_KEYBOARD_CONTROL для включения/отключения
управления графиком при помощи клавиатуры ("Home", "End", "PageUp", "+",
"-", "Стрелка вверх" и т.д.). Установка CHART_KEYBOARD_CONTROL=false
позволяет отключить скроллинг и
масштабирование графика, но при этом сохраняется возможность получать
события нажатия данных клавиш в OnChartEvent.
Для получения и установки свойства используются функции ChartGetInteger и ChartSetInteger. - Добавлены новые функции и свойства для работы с OpenCL.
Новые свойства для работы с памятью
С помощью CLGetInfoIntegrer теперь можно получить четыре новых свойства:
- CL_DEVICE_MAX_WORK_GROUP_SIZE — общее количество локальных рабочих групп, доступных для OpenCL устройства.
- CL_KERNEL_WORK_GROUP_SIZE — общее количество локальных рабочих групп, доступных для OpenCL программы.
- CL_KERNEL_LOCAL_MEM_SIZE — размер локальной памяти в байтах, которую использует OpenCL программа
для всех параллельных задач в группе. Используйте
CL_DEVICE_LOCAL_MEM_SIZE для получения доступного максимума.
- CL_KERNEL_PRIVATE_MEM_SIZE — минимальный размер приватной памяти в байтах, используемой каждой задачей в кернеле OpenCL программы.
bool CLExecutionStatus(int kernel)
Возвращает состояние выполнения OpenCL программы. В качестве параметра передается хэндл на кернел программы OpenCL.
bool CLSetKernelArgMemLocal(int kernel_handle,int arg_index,ulong local_mem_size)
Задает локальный буфер в качестве аргумента kernel-функции. В качестве параметров передаются хэндл на кернел программы OpenCL, номер аргумента OpenCL функции и размер буфера. - CL_DEVICE_MAX_WORK_GROUP_SIZE — общее количество локальных рабочих групп, доступных для OpenCL устройства.
- Добавлен код
ответа TRADE_RETCODE_LIMIT_POSITIONS. Количество открытых позиций,
которое можно одновременно иметь на счете, может быть ограничено
настройками сервера. При достижении лимита в ответ на выставление ордера
сервер вернет ошибку TRADE_RETCODE_LIMIT_POSITIONS. Ограничение
работает по-разному в зависимости от типа учета позиций на счете:
- Неттинговая система — учитывается количество открытых позиций. При достижении лимита платформа не позволит выставлять новые ордера, в результате исполнения которых может увеличиться количество открытых позиций. Фактически платформа позволит выставлять ордера только по тем символам, по которым уже есть открытые позиции. В неттинговой системе при проверке лимита не учитываются текущие отложенные ордера, поскольку их исполнение может привести к изменению текущих позиций, а не увеличению их количества.
- Хеджинговая система — помимо открытых позиций, учитываются выставленные отложенные ордера, поскольку их срабатывание всегда приводит к открытию новой позиции. При достижении лимита платформа не позволит выставлять рыночные ордера на открытие позиций, а также отложенные ордера.
- Исправлена ошибка, в некоторых случаях приводившая к пропуску тиков в тиковой истории.
- Исправлены ошибки косвенной типизации шаблонов.
- Обновлена библиотека работы с математической статистикой.
- Добавлена функция TranslateKey,
которая возвращает Unicode-символ по виртуальному коду клавиши,
учитывая текущий язык ввода и состояние управляющих клавиш. Функция
использует ToUnicodeEx для преобразования нажатых пользователем клавиш в Unicode-символы.void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
if(id==CHARTEVENT_KEYDOWN)
{
short sym=TranslateKey((int)lparam);
//--- если введённый символ успешно преобразован в Юникод
if(sym>0)
Print(sym,"'",ShortToString(sym),"'");
else
Print("Error in TranslateKey for key=",lparam);
}
}
Market
- Исправлено открытие страницы продукта при скачивании демо-версии.
Tester
- После завершения оптимизации результаты теперь автоматически сортируются по колонке "Результат".
- В контекстное меню вкладки результатов оптимизации и журнала добавлена опция автоматического переключения на результаты после завершения оптимизации.
- Тестер стратегий теперь остается в режиме оптимизации после запуска одиночного тестирования. Ранее, если из вкладки результатов оптимизации запускалось одиночное тестирование, тестер стратегий полностью переходил в режим одиночного тестирования. Для проведения повторной оптимизации было необходимо включать ее вновь в настройках.
- Теперь наборы входных параметров можно
сохранять не только в виде set-файлов, но и в виде настроек локального
тестера стратегий с удобным доступом к ним через контекстное меню.

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

- Исправлена ошибка определения кодировки исходных файлов.
- Исправлен поиск по файлам в кодировке UTF-8.
- Исправлена ошибка выделения текста мышью при наличии в нем знаков табуляции.
- Добавлен перевод интерфейса на венгерский и румынский языки.
Обновлена документация.






































