Обновление платформы MetaTrader 5 выйдет 21 февраля 2019 года. В новую версию внесены следующие изменения:
Терминал: полностью переработан встроенный экономический календарь.
Экономический календарь — это наше собственное решение. В нем вы найдете более 600 финансовых новостей и показателей, относящихся к 13 крупнейшим экономикам мира: США, Европейскому союзу, Японии, Великобритании, Канаде, Австралии, Китаю и другим. Актуальные данные собираются из открытых источников в режиме реального времени.
В новой версии обновленный контент и расширенные фильтры событий: по времени, приоритету, валюте и стране.
Доступ к данным календаря теперь можно получить из программ MQL5. Детали смотрите ниже.
Терминал: Добавлен новый тип MQL5-приложений — Сервисы. Этот новый тип позволяет создавать собственные потоки цен для терминала, т.е. осуществлять доставку цен из внешних систем в режиме реального времени, аналогично тому, как это реализовано на торговых серверах брокеров.
В отличие от экспертов, индикаторов и скриптов сервисы не привязаны к конкретному графику. Такие приложения работают в фоновом режиме и запускаются автоматически при запуске терминала (если только такое приложение не было принудительно остановлено).
Сервисами можно управлять из нового раздела в окне Навигатора:
Как создавать услуги Для создания шаблона сервиса используйте соответствующую опцию Мастера MQL5 . Службы имеют одну точку входа OnStart , как и сценарии. На этом этапе можно реализовать бесконечный цикл приема и обработки данных с помощью сетевых функций .
Как запускать сервисы Чтобы запустить несколько копий советника или индикатора с разными параметрами, нужно запускать их на разных графиках. В этом случае создаются разные экземпляры программы, которые затем работают независимо. Сервисы не привязаны к чартам, поэтому реализован специальный механизм создания экземпляров сервисов.
Выберите сервис в Навигаторе и нажмите «Добавить сервис» в его контекстном меню. При этом откроется стандартный диалог программы MQL5, в котором вы сможете включить/отключить торговлю и получить доступ к настройкам сигнала, а также задать различные параметры.
Экземпляр службы можно запускать и останавливать с помощью соответствующего меню экземпляра. Для управления всеми экземплярами используйте сервисное меню.
Терминал: Добавлена обучающая программа.
Новая функция поможет новичкам научиться взаимодействовать с платформой. Мы добавили более 100 интерактивных советов по основным возможностям платформы.
Подсказки плавно отображаются в виде индикатора выполнения на панели инструментов и, таким образом, не отвлекают пользователя.
Подсказки появляются только для тех действий, которые вы никогда не совершали в платформе.
Все подсказки содержат интерактивные ссылки, по которым можно перейти к нужным элементам интерфейса. Например, торговый диалог или меню с нужной программой можно запустить прямо из подсказки.
Заполненная область индикатора выполнения будет увеличиваться всякий раз, когда вы выполняете соответствующие действия и продолжаете тренировку.
Терминал: История торгового счета может быть представлена в виде позиций. Платформа собирает данные о сделках, связанных с позицией (открытие, увеличение объема, частичное или полное закрытие) и группирует информацию в единую запись. Таким образом, вы можете получить доступ к деталям позиции: время открытия и закрытия, объем, цена и результат. Эта эффективная форма представления теперь доступна в исторических отчетах, экспортируемых в файлы.
Terminal: Добавлен новый API, позволяющий запрашивать данные терминала MetaTrader 5 через приложения, использующие язык R.
Мы подготовили специальный пакет для MetaTrader. Он содержит DLL для взаимодействия между R и терминалом MetaTrader 5, документацию и вспомогательные файлы r. Завершаем регистрацию пакета в репозитории CRAN , после чего он будет доступен для скачивания и установки.
Пакет можно установить с помощью специальной команды:
R CMD INSTALL --build MetaTrader
Доступны следующие команды, связанные с запросом данных:
MT5Initialize инициализирует и устанавливает соединение с терминалом MetaTrader 5. При необходимости терминал запускается во время выполнения команды.
MT5Shutdown деинициализирует и отключается от MetaTrader 5.
MT5Version получает версию терминала MetaTrader 5.
MT5TerminalInfo получает состояние и параметры подключения терминала к серверу брокера (номер счета и адрес сервера).
MT5WaitTerminal ожидает, пока терминал MetaTrader 5 подключится к серверу брокера.
MT5CopyTicksFrom(symbol, from, count, flags) копирует указанное количество тиков, начиная с указанной даты. Дата указывается в миллисекундах с 01.01.1970.
MT5CopyTicksRange(symbol, from, to, flags) копирует тики внутри указанного периода. Даты указаны в миллисекундах с 01.01.1970.
MT5CopyRatesFrom(symbol, timeframe, from, count) копирует указанное количество одноминутных баров, начиная с указанной даты. Дата указывается в секундах с 01.01.1970.
MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) копирует одноминутные бары с указанной позиции относительно последнего бара.
MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to) копирует бары из указанного периода. Даты указаны в секундах с 01.01.1970.
Список поддерживаемых команд будет расширен.
Terminal: Оптимизированный диалог Close By , используемый для закрытия позиции встречной. Теперь диалог не тормозится, даже если у вас большое количество открытых позиций.
Терминал: Исправлены ошибки расчета синтетических символов , из-за которых данные иногда могли пропускаться.
Терминал: при удалении пользовательского символа файлы, хранящие историю его тиков и баров, также удаляются. Это позволяет избежать накопления неиспользуемых данных на жестком диске.
Терминал: исправлено отображение результатов поиска на экранах с высоким разрешением.
CalendarValueHistoryByEvent — получает массив значений за указанный период времени по идентификатору события.
bool CalendarValueHistoryByEvent(
ulong event_id, // event ID
MqlCalendarValue& values[], // array of valuesdatetime datetime_from, // period beginning datedatetime datetime_to= 0 // period end date
);
CalendarValueHistory — получает массив значений за указанный период времени для всех событий, отфильтрованных по стране и/или валюте.
bool CalendarValueHistory(
MqlCalendarValue& values[], // array of valuesdatetime datetime_from, // beginning of perioddatetime datetime_to= 0 , // end of periodstring country_code=NULL, // country codestring currency=NULL // currency
);
CalendarValueLastByEvent — получает массив значений последних событий по идентификатору. Эта функция позволяет запрашивать значения, появившиеся с момента предыдущего запроса. Для этой операции дополнительно используется входной/выходной параметр «change_id».
При каждом изменении базы данных календаря свойство change_id (идентификатор последнего изменения) обновляется. При запросе данных вы указываете «change_id», и терминал возвращает события, появившиеся после этого времени, а также текущее значение «change_id», которое можно использовать для следующего запроса. При первом вызове функции укажите нулевой «change_id»: функция не будет возвращать никаких событий, а будет возвращать текущий «change_id» для дальнейших запросов.
bool CalendarValueHistory(
ulong event_id, // event IDulong & change_id, // last calendar change ID
MqlCalendarValue& values[] // array of values
);
CalendarValueLast — получает массив последних значений для всех событий, отфильтрованных по стране и/или валюте. Эта функция позволяет запрашивать значения, появившиеся с момента предыдущего запроса. Аналогично CalendarValueLastByEvent для запроса используется свойство change_id.
bool CalendarValueHistory(
ulong event_id, // event IDulong & change_id, // last calendar change ID
MqlCalendarValue& values[], // array of valuesstring country_code=NULL, // country codestring currency=NULL // currency
);
Новые структуры
MqlCalendarCountry — описание страны.
struct MqlCalendarCountry
{
ulong id; // country ID in ISO 3166-1string name; // text name of the countrystring code; // code name of the country in ISO 3166-1 alpha-2string currency; // country currency codestring currency_symbol; // country currency symbol/signstring url_name; // country name used in URL on mql5.com
};
MqlCalendarEvent — описание события.
struct MqlCalendarEvent
{
ulong id; // event ID
ENUM_CALENDAR_EVENT_TYPE type; // event type
ENUM_CALENDAR_EVENT_SECTOR sector; // sector to which the event belongs
ENUM_CALENDAR_EVENT_FREQUENCY frequency; // event release frequency
ENUM_CALENDAR_EVENT_TIMEMODE time_mode; // event release time modeulong country_id; // country ID
ENUM_CALENDAR_EVENT_UNIT unit; // unit for the event values
ENUM_CALENDAR_EVENT_IMPORTANCE importance; // event importance
ENUM_CALENDAR_EVENT_MULTIPLIER multiplier; // event importance multiplieruint digits; // number of decimal places in the event valuestring source_url; // source URLstring event_code; // event codestring name; // text name of the event in the terminal language
};
MqlCalendarValue — описание значения события.
struct MqlCalendarValue
{
ulong id; // value IDulong event_id; // event IDdatetime time; // event date and timedatetime period; // period, for which the event is publishedint revision; // published indicator revision in relation to the reported periodlong actual_value; // current event valuelong prev_value; // previous event valuelong revised_prev_value; // revised previous event valuelong forecast_value; // forecast event value
ENUM_CALENDAR_EVENT_IMPACRT impact_type; // potential impact on the currency rate
};
Новые перечисления
enum ENUM_CALENDAR_EVENT_FREQUENCY
{
CALENDAR_FREQUENCY_NONE = 0 , // not used
CALENDAR_FREQUENCY_WEEK = 1 , // weekly
CALENDAR_FREQUENCY_MONTH = 2 , // monthly
CALENDAR_FREQUENCY_QUARTER = 3 , // quarterly
CALENDAR_FREQUENCY_YEAR = 4 , // yearly
CALENDAR_FREQUENCY_DAY = 5 , // daily
};
enum ENUM_CALENDAR_EVENT_TYPE
{
CALENDAR_TYPE_EVENT = 0 , // event (meeting, speech, etc.)
CALENDAR_TYPE_INDICATOR = 1 , // indicator
CALENDAR_TYPE_HOLIDAY = 2 , // holiday
};
enum ENUM_CALENDAR_EVENT_SECTOR
{
CALENDAR_SECTOR_NONE = 0 , // no
CALENDAR_SECTOR_MARKET = 1 , // market
CALENDAR_SECTOR_GDP = 2 , // GDP
CALENDAR_SECTOR_JOBS = 3 , // jobs
CALENDAR_SECTOR_PRICES = 4 , // prices
CALENDAR_SECTOR_MONEY = 5 , // money
CALENDAR_SECTOR_TRADE = 6 , // trade
CALENDAR_SECTOR_GOVERNMENT = 7 , // government
CALENDAR_SECTOR_BUSINESS = 8 , // business
CALENDAR_SECTOR_CONSUMER = 9 , // consumer
CALENDAR_SECTOR_HOUSING = 10 , // housing
CALENDAR_SECTOR_TAXES = 11 , // taxes
CALENDAR_SECTOR_HOLIDAYS = 12 , // holidays
};
enum ENUM_CALENDAR_EVENT_IMPORTANCE
{
CALENDAR_IMPORTANCE_LOW = 0 , // no
CALENDAR_IMPORTANCE_NONE = 1 , // low
CALENDAR_IMPORTANCE_MODERATE = 2 , // moderate
CALENDAR_IMPORTANCE_HIGH = 3 , // high
};
enum ENUM_CALENDAR_EVENT_UNIT
{
CALENDAR_UNIT_NONE = 0 , // no
CALENDAR_UNIT_PERCENT = 1 , // percent
CALENDAR_UNIT_CURRENCY = 2 , // national currency
CALENDAR_UNIT_HOUR = 3 , // number of hours
CALENDAR_UNIT_JOB = 4 , // number of jobs
CALENDAR_UNIT_RIG = 5 , // number of rigs
CALENDAR_UNIT_USD = 6 , // US dollar
CALENDAR_UNIT_PEOPLE = 7 , // number of people
CALENDAR_UNIT_MORTGAGE = 8 , // number of mortgages
CALENDAR_UNIT_VOTE = 9 , // number of votes
CALENDAR_UNIT_BARREL = 10 , // number of barrels
CALENDAR_UNIT_CUBICFEET = 11 , // volume in cubic feet
CALENDAR_UNIT_POSITION = 12 , // number of job positions
CALENDAR_UNIT_BUILDING = 13// number of buildings
};
enum ENUM_CALENDAR_EVENT_MULTIPLIER
{
CALENDAR_MULTIPLIER_NONE = 0 , // no
CALENDAR_MULTIPLIER_THOUSANDS = 1 , // thousands
CALENDAR_MULTIPLIER_MILLIONS = 2 , // millions
CALENDAR_MULTIPLIER_BILLIONS = 3 , // billions
CALENDAR_MULTIPLIER_TRILLIONS = 4 , // trillions
};
enum ENUM_CALENDAR_EVENT_IMPACRT
{
CALENDAR_IMPACT_NA = 0 , // not available
CALENDAR_IMPACT_POSITIVE = 1 , // positive
CALENDAR_IMPACT_NEGATIVE = 2 , // negative
};
enum ENUM_CALENDAR_EVENT_TIMEMODE
{
CALENDAR_TIMEMODE_DATETIME = 0 , // the source publishes the exact time
CALENDAR_TIMEMODE_DATE = 1 , // the event takes the whole day
CALENDAR_TIMEMODE_NOTIME = 2 , // the source does not publish the event time
CALENDAR_TIMEMODE_TENTATIVE = 3 , // the source provides only date, but does not publish the exact time in advance, exact time is added when event occurs
};
Новые коды ошибок
ERR_CALENDAR_MORE_DATA = 5400 , // the array is small for the whole result (values which fit in the array were passed)
ERR_CALENDAR_TIMEOUT = 5401 , // timed out waiting for a response to the calendar data request
ERR_CALENDAR_NO_DATA = 5402 , // data not found
MQL5: Исправления и улучшения скорости работы, связанные с историей тиков и баров.
MQL5: Исправления и значительные улучшения скорости работы, связанные с функциями изменения истории тиков и баров пользовательских торговых символов, CustomTicks* и CustomRates* .
MQL5: Добавлены сетевые функции для создания TCP-соединений с удаленными хостами через системные сокеты:
SocketCreate создает сокет с указанными флагами и возвращает его дескриптор
SocketClose закрывает сокет
SocketConnect подключается к серверу с контролем времени ожидания
SocketIsConnected проверяет, подключен ли сокет в данный момент
SocketIsReadable получает количество байтов, которые можно прочитать из сокета.
SocketIsWritable проверяет, возможна ли запись данных в этот сокет в текущий момент времени
SocketTimeouts устанавливает время ожидания приема и отправки данных для объекта системного сокета.
SocketRead читает данные из сокета
SocketSend записывает данные в сокет
SocketTlsHandshake инициирует безопасное соединение TLS (SSL) с указанным хостом, используя протокол TLS Handshake.
SocketTlsCertificate получает информацию о сертификате, используемом для безопасного сетевого подключения.
SocketTlsRead считывает данные из безопасного TLS-соединения.
SocketTlsReadAvailable считывает все доступные данные из безопасного соединения TLS.
SocketTlsSend отправляет данные, используя безопасное соединение TLS.
Адрес хоста, к которому устанавливается соединение с использованием сетевых функций, должен быть явно добавлен в список разрешенных адресов в настройках терминала.
Добавлены новые коды ошибок для работы с сетевыми функциями:
ERR_NETSOCKET_INVALIDHANDLE (5270): в функцию передан неверный дескриптор сокета
ERR_NETSOCKET_TOO_MANY_OPENED (5271): открыто слишком много сокетов (максимум 128)
ERR_NETSOCKET_CANNOT_CONNECT (5272): ошибка при подключении к удаленному хосту
ERR_NETSOCKET_IO_ERROR (5273): ошибка при отправке/получении данных из сокета
ERR_NETSOCKET_HANDSHAKE_FAILED (5274): ошибка установления защищенного соединения (рукопожатие TLS)
ERR_NETSOCKET_NO_CERTIFICATE (5275) — нет данных о сертификате, используемом для безопасного соединения
ArrayRemove удаляет из массива указанное количество элементов, начиная с указанного индекса.
bool ArrayRemove(
void & array[], // array of any typeuint start, // the index to start removaluint count=WHOLE_ARRAY // number of elements
);
ArrayInsert вставляет в массив-получатель указанное количество элементов из исходного массива, начиная с указанного индекса.
bool ArrayInsert(
void & dst_array[], // receiver arrayconstvoid & src_array[], // source arrayuint dst_start, // index in the receiver array where to insertuint src_start= 0 , // index in the source array to start copyinguint count=WHOLE_ARRAY // number of inserted elements
);
ArrayReverse переворачивает в массиве указанное количество элементов, начиная с указанного индекса.
bool ArrayReverse(
void & array[], // array of any typeuint start= 0 , // index to start reversinguint count=WHOLE_ARRAY // number of elements
);
MQL5: В функции CustomRatesUpdate , CustomRatesReplace , CustomTicksAdd и CustomTicksReplace добавлен новый параметр "uint count". Это позволяет указать количество элементов переданного массива, которые будут использоваться для этих функций. Значение WHOLE_ARRAY используется для параметра по умолчанию. Это означает, что весь массив будет использован.
MQL5: Добавлена функция CustomBookAdd для передачи статуса стакана цен для пользовательского символа. Функция позволяет транслировать стакан цен, как если бы цены поступали с сервера брокера.
int CustomBookAdd(
conststring symbol, // symbol nameconst MqlBookInfo& books[] // an array with the DOM elements descriptionsuint count=WHOLE_ARRAY // number of elements to be used
);
MQL5: Добавлена перегрузка функции CustomSymbolCreate . Это позволяет создать собственный торговый символ на основе существующего. После создания любое свойство символа можно редактировать с помощью соответствующих функций.
boolCustomSymbolCreate (
conststring symbol_name, // custom symbol nameconststring symbol_path= "" , // name of the group in which the symbol will be createdconststring symbol_origin=NULL // name of the symbol based on which the custom symbol will be created
);
Имя символа, из которого должны быть скопированы свойства пользовательского символа, указывается в параметре "symbol_origin".
Обновлена функция StringToTime , преобразующая строку с датой/временем в значение даты и времени. Теперь он поддерживает следующие форматы даты:
гггг.мм.дд [чч:ми]
гггг.мм.дд [чч:ми:сс]
ггггммдд [чч:ми:сс]
ггггммдд [ччмисс]
гггг/мм/дд [чч:ми:сс]
гггг-мм-дд [чч:ми:сс]
MQL5: Новое свойство TERMINAL_VPS в перечислении ENUM_TERMINAL_INFO_INTEGER ; он показывает, что терминал работает на сервере виртуального хостинга MetaTrader (MetaTrader VPS). Если приложение запущено на хост-сервере, вы можете отключить все его визуальные функции, так как виртуальный сервер не имеет графического пользовательского интерфейса.
MQL5: Новое свойство SYMBOL_EXIST в перечислении ENUM_SYMBOL_INFO_INTEGER означает, что символ под этим именем существует.
MQL5: Исправлен набор текста при использовании предварительных объявлений функций шаблона.
MQL5: Добавлена переинициализация индикаторов при смене торгового счета.
MQL5: Исправлены ошибки в работе стандартной библиотеки.
Tester: Добавлена функция TesterStop — штатное досрочное завершение работы эксперта на тестовом агенте. Теперь вы можете принудительно прекратить тестирование по достижении заданного количества убыточных сделок, заданного уровня просадки или любого другого критерия.
Тестирование, выполненное с использованием этой функции, считается успешным. После вызова функции торговая история, полученная при тестировании, и вся торговая статистика передаются в терминал.
Tester: Отключена возможность тестировать и оптимизировать советники через MQL5 Cloud Network в реальном тиковом режиме. Этот режим можно использовать только на локальных агентах и локальных сетевых фермах.
Тестер: Улучшена работа с индикаторами при визуальном тестировании. Теперь график цены и линии индикатора отрисовываются синхронно, даже для максимальной скорости визуализации.
Tester: оптимизировано и значительно ускорено тестирование и оптимизация.
Tester: Исправлена отладка индикаторов на исторических данных. Теперь функции индикатора OnInit и OnDeinit можно корректно отлаживать.
Tester: Реализован более быстрый доступ к историческим данным при тестировании мультивалютных экспертов.
Тестер: исправлено случайное зависание визуального тестера во время отладки на исторических данных.
Tester: Реализован более быстрый запуск проходов оптимизации при обработке пакета задач агентом.
Tester: Изменена политика распределения пакетов задач агентам тестирования. Размер пакета был увеличен, и, таким образом, потребление ресурсов при сетевых операциях было значительно снижено.
Tester: изменено поведение опций, позволяющих использовать локальные, сетевые и облачные агенты. Теперь, когда вы отключаете опции, агенты завершают обработку полученных задач, при этом новые задачи им больше не выдаются. В более ранних версиях поведение было похоже на команду «Отключить», которая немедленно останавливала работу агента.
MetaEditor: в отладчике добавлена поддержка символов, отличных от ANSI. Теперь выражения отображаются правильно, даже если имя переменной указано на кириллице.
MetaEditor: Исправлено отображение результатов поиска на экранах с высоким разрешением.
Добавлен перевод пользовательского интерфейса на хорватский язык.
Документация обновлена.
Обновление будет доступно через систему LiveUpdate.
Мультивалютные советники в МТ5 - бэктестинг и оптимизация
Темы/посты
Покупка или продажа всех 7 пар -тема с объяснением.
Мультивалютные советники- пост с примерами бэктестинга/оптимизации
Статьи
Лайфхак для трейдера: "Тихая" оптимизация или Построение торговых распределений Интересные результаты можно также получить, запустив мультивалютный советник в тестере стратегий. В качестве примера был использован бесплатныйMulticurrency Expert из CodeBase. Кроме того, был указан файл "#include <DistributionOfProfits.mqh>" и объявлена переменная "CDistributionOfProfits ExtDistribution" в заголовке советника, а в конце кода добавлена функция "OnTester()". После одного прогона была получена следующая статистика: "TestAnalysis.htm".
The multi-symbol adviser uses the MA Trend 2 adviser as the base advisor, while the advisor itself is rewritten as a class.
Этот советник в виде класса первой версии, поэтому пока символы ("EURUSD", "USDCAD", "USDJPY") указаны в коде жестко. Также все входные параметры одинаковы для каждого из трех символов (Stop Loss, Take Profit и так далее...).
Корреляция - это статистическая связь между двумя или более случайными переменными (или величинами, которые можно считать случайными с некоторой приемлемой степенью точности). Изменения в одной или нескольких переменных приводят к систематическим изменениям других связанных переменных. Математической мерой корреляции двух случайных величин является коэффициент корреляции. Если изменение одной случайной величины не приводит к закономерному изменению другой случайной величины, но приводит к изменению другой статистической характеристики этой случайной величины, то такая связь не считается корреляцией, хотя и является статистической.
На форуме есть одна тема - Возможности холста. Это очень полезная тема. А это один очень интересный инструмент, который полностью связан с этой темой -
This article is a development of the article "Interaction between MetaTrader 4 and MATLAB" by A. Emelyanov, and it provides information on solving a similar task for modern 64-bit versions of all platforms utilized by users. Over the past period, the method for creating shared DLL libraries has been substantially upgraded in the MATLAB package. Therefore, the method discussed in the original article requires modification. This happened because MATLAB Compiler SDK or MATLAB Coder must now be used instead of MATLAB Compiler. In addition, the practice of working with dynamic memory in MATLAB has changed, which implies certain adjustments of the source code that addresses a library written in the MATLAB language.
Most frequent users of this website know pretty well that MQL5 is the best option for developing custom EAs. Unfortunately, not all brokers allow creating accounts available in MetaTrader 5. Even if you currently work with a broker that allows that, you may switch to a broker offering only MetaTrader 4 in the future. What are you going to do with all the MQL5 EAs you have developed in that case? Are you going to spend a huge amount of time to rework them to fit into MQL4? Perhaps, it would be more reasonable to develop an EA able to work both in MetaTrader 5 and MetaTrader 4?
В этой статье мы попробуем разработать такой советник и проверить, насколько пригодна торговая система, основанная на сетке ордеров.
С момента своего появления MetaTrader 5 предоставляет возможность мультивалютного тестирования. Эта возможность часто используется трейдерами. Однако функция не является универсальной. В частности, после запуска теста пользователь может открыть график с проведенными торговыми операциями. Но это график только одного торгового символа, выбранного в настройках тестера стратегий. Просмотреть всю историю торговли по всем использованным символам после тестирования невозможно, а визуальный осмотр не всегда эффективен. Через некоторое время после тестирования может потребоваться дополнительный анализ. Кроме того, отчет может быть предоставлен другим лицом. Поэтому инструмент для визуализации торговли на нескольких рабочих символах на основе HTML-отчета о тестировании был бы очень полезен.
В предыдущейстатье было представлено описание парсера HTML на основе CSS-селекторов[1]. Парсер извлекает из HTML-отчета список сделок, на основе которого можно формировать трейды (графические объекты). Парсинг CSV-файлов из раздела Сигналы немного проще, а формат файлов сигналов MetaTrader 4 (*.history.csv) и MetaTrader 5 (*.positions.csv) поддерживается встроенными функциями MQL.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая платформа MetaTrader 5 build 2005: экономический календарь, приложения MQL5 как сервисы и API языка R
MetaQuotes Software Corp. , 20.02.2019 17:20
Обновление платформы MetaTrader 5 выйдет 21 февраля 2019 года. В новую версию внесены следующие изменения:
- Терминал: полностью переработан встроенный экономический календарь.

- Терминал: Добавлен новый тип MQL5-приложений — Сервисы. Этот новый тип позволяет создавать собственные потоки цен для терминала, т.е. осуществлять доставку цен из внешних систем в режиме реального времени, аналогично тому, как это реализовано на торговых серверах брокеров.

- Терминал: Добавлена обучающая программа.

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

- Terminal: Добавлен новый API, позволяющий запрашивать данные терминала MetaTrader 5 через приложения, использующие язык R.

R CMD INSTALL --build MetaTrader
- MT5Initialize инициализирует и устанавливает соединение с терминалом MetaTrader 5. При необходимости терминал запускается во время выполнения команды.
- MT5Shutdown деинициализирует и отключается от MetaTrader 5.
- MT5Version получает версию терминала MetaTrader 5.
- MT5TerminalInfo получает состояние и параметры подключения терминала к серверу брокера (номер счета и адрес сервера).
- MT5WaitTerminal ожидает, пока терминал MetaTrader 5 подключится к серверу брокера.
- MT5CopyTicksFrom(symbol, from, count, flags) копирует указанное количество тиков, начиная с указанной даты. Дата указывается в миллисекундах с 01.01.1970.
- MT5CopyTicksRange(symbol, from, to, flags) копирует тики внутри указанного периода. Даты указаны в миллисекундах с 01.01.1970.
- MT5CopyRatesFrom(symbol, timeframe, from, count) копирует указанное количество одноминутных баров, начиная с указанной даты. Дата указывается в секундах с 01.01.1970.
- MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) копирует одноминутные бары с указанной позиции относительно последнего бара.
- MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to) копирует бары из указанного периода. Даты указаны в секундах с 01.01.1970.
- Terminal: Оптимизированный диалог Close By , используемый для закрытия позиции встречной. Теперь диалог не тормозится, даже если у вас большое количество открытых позиций.
- Терминал: Исправлены ошибки расчета синтетических символов , из-за которых данные иногда могли пропускаться.
- Терминал: при удалении пользовательского символа файлы, хранящие историю его тиков и баров, также удаляются. Это позволяет избежать накопления неиспользуемых данных на жестком диске.
- Терминал: исправлено отображение результатов поиска на экранах с высоким разрешением.
- MQL5: Реализован доступ к данным экономического календаря из программ MQL5.
- MQL5: Исправления и улучшения скорости работы, связанные с историей тиков и баров.
- MQL5: Исправления и значительные улучшения скорости работы, связанные с функциями изменения истории тиков и баров пользовательских торговых символов, CustomTicks* и CustomRates* .
- MQL5: Новые функции преобразования данных.
- Добавлена функция MathSwap для изменения порядка байтов в значениях ushort, uint и ulong.
- MQL5: Добавлены сетевые функции для создания TCP-соединений с удаленными хостами через системные сокеты:
- SocketCreate создает сокет с указанными флагами и возвращает его дескриптор
- SocketClose закрывает сокет
- SocketConnect подключается к серверу с контролем времени ожидания
- SocketIsConnected проверяет, подключен ли сокет в данный момент
- SocketIsReadable получает количество байтов, которые можно прочитать из сокета.
- SocketIsWritable проверяет, возможна ли запись данных в этот сокет в текущий момент времени
- SocketTimeouts устанавливает время ожидания приема и отправки данных для объекта системного сокета.
- SocketRead читает данные из сокета
- SocketSend записывает данные в сокет
- SocketTlsHandshake инициирует безопасное соединение TLS (SSL) с указанным хостом, используя протокол TLS Handshake.
- SocketTlsCertificate получает информацию о сертификате, используемом для безопасного сетевого подключения.
- SocketTlsRead считывает данные из безопасного TLS-соединения.
- SocketTlsReadAvailable считывает все доступные данные из безопасного соединения TLS.
- SocketTlsSend отправляет данные, используя безопасное соединение TLS.
Адрес хоста, к которому устанавливается соединение с использованием сетевых функций, должен быть явно добавлен в список разрешенных адресов в настройках терминала.
- ERR_NETSOCKET_INVALIDHANDLE (5270): в функцию передан неверный дескриптор сокета
- ERR_NETSOCKET_TOO_MANY_OPENED (5271): открыто слишком много сокетов (максимум 128)
- ERR_NETSOCKET_CANNOT_CONNECT (5272): ошибка при подключении к удаленному хосту
- ERR_NETSOCKET_IO_ERROR (5273): ошибка при отправке/получении данных из сокета
- ERR_NETSOCKET_HANDSHAKE_FAILED (5274): ошибка установления защищенного соединения (рукопожатие TLS)
- ERR_NETSOCKET_NO_CERTIFICATE (5275) — нет данных о сертификате, используемом для безопасного соединения
- MQL5: Добавлены новые функции для строковых операций :
- MQL5: Добавлена новая функция для операций с массивами :
- MQL5: В функции CustomRatesUpdate , CustomRatesReplace , CustomTicksAdd и CustomTicksReplace добавлен новый параметр "uint count". Это позволяет указать количество элементов переданного массива, которые будут использоваться для этих функций. Значение WHOLE_ARRAY используется для параметра по умолчанию. Это означает, что весь массив будет использован.
- MQL5: Добавлена функция CustomBookAdd для передачи статуса стакана цен для пользовательского символа. Функция позволяет транслировать стакан цен, как если бы цены поступали с сервера брокера.
- MQL5: Добавлена перегрузка функции CustomSymbolCreate . Это позволяет создать собственный торговый символ на основе существующего. После создания любое свойство символа можно редактировать с помощью соответствующих функций.
- Обновлена функция StringToTime , преобразующая строку с датой/временем в значение даты и времени. Теперь он поддерживает следующие форматы даты:
- гггг.мм.дд [чч:ми]
- гггг.мм.дд [чч:ми:сс]
- ггггммдд [чч:ми:сс]
- ггггммдд [ччмисс]
- гггг/мм/дд [чч:ми:сс]
- гггг-мм-дд [чч:ми:сс]
- MQL5: Новое свойство TERMINAL_VPS в перечислении ENUM_TERMINAL_INFO_INTEGER ; он показывает, что терминал работает на сервере виртуального хостинга MetaTrader (MetaTrader VPS). Если приложение запущено на хост-сервере, вы можете отключить все его визуальные функции, так как виртуальный сервер не имеет графического пользовательского интерфейса.
- MQL5: Новое свойство SYMBOL_EXIST в перечислении ENUM_SYMBOL_INFO_INTEGER означает, что символ под этим именем существует.
- MQL5: Исправлен набор текста при использовании предварительных объявлений функций шаблона.
- MQL5: Добавлена переинициализация индикаторов при смене торгового счета.
- MQL5: Оптимизирована функция StringSplit .
- MQL5: Исправлены ошибки в работе стандартной библиотеки.
- Tester: Добавлена функция TesterStop — штатное досрочное завершение работы эксперта на тестовом агенте. Теперь вы можете принудительно прекратить тестирование по достижении заданного количества убыточных сделок, заданного уровня просадки или любого другого критерия.
- Tester: Отключена возможность тестировать и оптимизировать советники через MQL5 Cloud Network в реальном тиковом режиме. Этот режим можно использовать только на локальных агентах и локальных сетевых фермах.
- Тестер: Улучшена работа с индикаторами при визуальном тестировании. Теперь график цены и линии индикатора отрисовываются синхронно, даже для максимальной скорости визуализации.
- Tester: оптимизировано и значительно ускорено тестирование и оптимизация.
- Tester: Исправлена отладка индикаторов на исторических данных. Теперь функции индикатора OnInit и OnDeinit можно корректно отлаживать.
- Tester: Реализован более быстрый доступ к историческим данным при тестировании мультивалютных экспертов.
- Тестер: исправлено случайное зависание визуального тестера во время отладки на исторических данных.
- Tester: Реализован более быстрый запуск проходов оптимизации при обработке пакета задач агентом.
- Tester: Изменена политика распределения пакетов задач агентам тестирования. Размер пакета был увеличен, и, таким образом, потребление ресурсов при сетевых операциях было значительно снижено.
- Tester: изменено поведение опций, позволяющих использовать локальные, сетевые и облачные агенты. Теперь, когда вы отключаете опции, агенты завершают обработку полученных задач, при этом новые задачи им больше не выдаются. В более ранних версиях поведение было похоже на команду «Отключить», которая немедленно останавливала работу агента.

- MetaEditor: в отладчике добавлена поддержка символов, отличных от ANSI. Теперь выражения отображаются правильно, даже если имя переменной указано на кириллице.
- MetaEditor: Исправлено отображение результатов поиска на экранах с высоким разрешением.
- Добавлен перевод пользовательского интерфейса на хорватский язык.
- Документация обновлена.
Обновление будет доступно через систему LiveUpdate.Экономический календарь — это наше собственное решение. В нем вы найдете более 600 финансовых новостей и показателей, относящихся к 13 крупнейшим экономикам мира: США, Европейскому союзу, Японии, Великобритании, Канаде, Австралии, Китаю и другим. Актуальные данные собираются из открытых источников в режиме реального времени.
В новой версии обновленный контент и расширенные фильтры событий: по времени, приоритету, валюте и стране.
Доступ к данным календаря теперь можно получить из программ MQL5. Детали смотрите ниже.
В отличие от экспертов, индикаторов и скриптов сервисы не привязаны к конкретному графику. Такие приложения работают в фоновом режиме и запускаются автоматически при запуске терминала (если только такое приложение не было принудительно остановлено).
Сервисами можно управлять из нового раздела в окне Навигатора:
Как создавать услуги
Для создания шаблона сервиса используйте соответствующую опцию Мастера MQL5 . Службы имеют одну точку входа OnStart , как и сценарии. На этом этапе можно реализовать бесконечный цикл приема и обработки данных с помощью сетевых функций .
Как запускать сервисы
Чтобы запустить несколько копий советника или индикатора с разными параметрами, нужно запускать их на разных графиках. В этом случае создаются разные экземпляры программы, которые затем работают независимо. Сервисы не привязаны к чартам, поэтому реализован специальный механизм создания экземпляров сервисов.
Выберите сервис в Навигаторе и нажмите «Добавить сервис» в его контекстном меню. При этом откроется стандартный диалог программы MQL5, в котором вы сможете включить/отключить торговлю и получить доступ к настройкам сигнала, а также задать различные параметры.

Экземпляр службы можно запускать и останавливать с помощью соответствующего меню экземпляра. Для управления всеми экземплярами используйте сервисное меню.Новая функция поможет новичкам научиться взаимодействовать с платформой. Мы добавили более 100 интерактивных советов по основным возможностям платформы.
- Подсказки плавно отображаются в виде индикатора выполнения на панели инструментов и, таким образом, не отвлекают пользователя.
- Подсказки появляются только для тех действий, которые вы никогда не совершали в платформе.
- Все подсказки содержат интерактивные ссылки, по которым можно перейти к нужным элементам интерфейса. Например, торговый диалог или меню с нужной программой можно запустить прямо из подсказки.
Заполненная область индикатора выполнения будет увеличиваться всякий раз, когда вы выполняете соответствующие действия и продолжаете тренировку.Мы подготовили специальный пакет для MetaTrader. Он содержит DLL для взаимодействия между R и терминалом MetaTrader 5, документацию и вспомогательные файлы r. Завершаем регистрацию пакета в репозитории CRAN , после чего он будет доступен для скачивания и установки.
Пакет можно установить с помощью специальной команды:
Доступны следующие команды, связанные с запросом данных:
Список поддерживаемых команд будет расширен.
Новые функции
CalendarCountryById — получает описание страны по идентификатору.
CalendarEventById — получает описание события по идентификатору.
CalendarValueById — получает описание значения события по идентификатору.
CalendarEventByCountry — получает массив доступных событий для страны.
CalendarEventByCurrency — получает массив доступных событий для затронутой валюты.
CalendarValueHistoryByEvent — получает массив значений за указанный период времени по идентификатору события.
CalendarValueHistory — получает массив значений за указанный период времени для всех событий, отфильтрованных по стране и/или валюте.
CalendarValueLastByEvent — получает массив значений последних событий по идентификатору. Эта функция позволяет запрашивать значения, появившиеся с момента предыдущего запроса. Для этой операции дополнительно используется входной/выходной параметр «change_id».
При каждом изменении базы данных календаря свойство change_id (идентификатор последнего изменения) обновляется. При запросе данных вы указываете «change_id», и терминал возвращает события, появившиеся после этого времени, а также текущее значение «change_id», которое можно использовать для следующего запроса. При первом вызове функции укажите нулевой «change_id»: функция не будет возвращать никаких событий, а будет возвращать текущий «change_id» для дальнейших запросов.
CalendarValueLast — получает массив последних значений для всех событий, отфильтрованных по стране и/или валюте. Эта функция позволяет запрашивать значения, появившиеся с момента предыдущего запроса. Аналогично CalendarValueLastByEvent для запроса используется свойство change_id.
Новые структуры
MqlCalendarCountry — описание страны.
MqlCalendarEvent — описание события.
MqlCalendarValue — описание значения события.
Новые перечисления
Новые коды ошибок
CharArrayToStruct копирует массив uchar в структуру POD.
StructToCharArray копирует структуру POD в массив uchar.
Добавлены новые коды ошибок для работы с сетевыми функциями:
StringReserve резервирует для строки буфер памяти указанного размера.
StringSetLength задает указанную длину строки в символах.
ArrayRemove удаляет из массива указанное количество элементов, начиная с указанного индекса.
ArrayInsert вставляет в массив-получатель указанное количество элементов из исходного массива, начиная с указанного индекса.
ArrayReverse переворачивает в массиве указанное количество элементов, начиная с указанного индекса.
Имя символа, из которого должны быть скопированы свойства пользовательского символа, указывается в параметре "symbol_origin".
Тестирование, выполненное с использованием этой функции, считается успешным. После вызова функции торговая история, полученная при тестировании, и вся торговая статистика передаются в терминал.
Форум о трейдинге, автоматических торговых системах и тестировании торговых стратегий
Пакет MetaTrader R - краткое содержание
Сергей Голубев, 2019.02.22 06:47
Основное исследование
Статьи
Форум
----------------
больше, чтобы следовать ...
Форум о трейдинге, автоматических торговых системах и тестировании торговых стратегий
Полезные ссылки/темы/инструменты
Сергей Голубев, 2017.10.05 12:33
Мультивалютные советники в МТ5 - бэктестинг и оптимизация
Темы/посты
Статьи
Интересные результаты можно также получить, запустив мультивалютный советник в тестере стратегий. В качестве примера был использован бесплатныйMulticurrency Expert из CodeBase. Кроме того, был указан файл "#include <DistributionOfProfits.mqh>" и объявлена переменная "CDistributionOfProfits ExtDistribution" в заголовке советника, а в конце кода добавлена функция "OnTester()". После одного прогона была получена следующая статистика: "TestAnalysis.htm".
оптимизация повсем символам, выбранным в Market Watch.
Документация
...а это пример кода из CodeBase -
----------------
Мультивалютный iMA Trend- эксперт для MetaTrader 5
The multi-symbol adviser uses the MA Trend 2 adviser as the base advisor, while the advisor itself is rewritten as a class.
Этот советник в виде класса первой версии, поэтому пока символы ("EURUSD", "USDCAD", "USDJPY") указаны в коде жестко. Также все входные параметры одинаковы для каждого из трех символов (Stop Loss, Take Profit и так далее...).
Опубликована хорошая статья -
----------------
Практическое применение корреляций в трейдинге
Корреляция - это статистическая связь между двумя или более случайными переменными (или величинами, которые можно считать случайными с некоторой приемлемой степенью точности). Изменения в одной или нескольких переменных приводят к систематическим изменениям других связанных переменных. Математической мерой корреляции двух случайных величин является коэффициент корреляции. Если изменение одной случайной величины не приводит к закономерному изменению другой случайной величины, но приводит к изменению другой статистической характеристики этой случайной величины, то такая связь не считается корреляцией, хотя и является статистической.
Оглавление
Форум о трейдинге, автоматических торговых системах и тестировании торговых стратегий
С чего начать?
Сергей Голубев, 2018.09.20 15:43
Воспользуйтесь советами - инструкцией о HowTo
=========
----------------
----------------
----------------
На форуме есть одна тема -
Возможности холста.
Это очень полезная тема.
А это один очень интересный инструмент, который полностью связан с этой темой -
----------------
Система линейных алгебраических уравнений на каждом баре- индикатор для MetaTrader 5
This work has 3 goals:
Использование вычислительных возможностей MATLAB 2018 в MetaTrader 5
This article is a development of the article "Interaction between MetaTrader 4 and MATLAB" by A. Emelyanov, and it provides information on solving a similar task for modern 64-bit versions of all platforms utilized by users. Over the past period, the method for creating shared DLL libraries has been substantially upgraded in the MATLAB package. Therefore, the method discussed in the original article requires modification. This happened because MATLAB Compiler SDK or MATLAB Coder must now be used instead of MATLAB Compiler. In addition, the practice of working with dynamic memory in MATLAB has changed, which implies certain adjustments of the source code that addresses a library written in the MATLAB language.
Разработка кроссплатформенного советника с сеткой ордеров
Most frequent users of this website know pretty well that MQL5 is the best option for developing custom EAs. Unfortunately, not all brokers allow creating accounts available in MetaTrader 5. Even if you currently work with a broker that allows that, you may switch to a broker offering only MetaTrader 4 in the future. What are you going to do with all the MQL5 EAs you have developed in that case? Are you going to spend a huge amount of time to rework them to fit into MQL4? Perhaps, it would be more reasonable to develop an EA able to work both in MetaTrader 5 and MetaTrader 4?
В этой статье мы попробуем разработать такой советник и проверить, насколько пригодна торговая система, основанная на сетке ордеров.
Как визуализировать историю мультивалютной торговли на основе отчетов HTML и CSV
С момента своего появления MetaTrader 5 предоставляет возможность мультивалютного тестирования. Эта возможность часто используется трейдерами. Однако функция не является универсальной. В частности, после запуска теста пользователь может открыть график с проведенными торговыми операциями. Но это график только одного торгового символа, выбранного в настройках тестера стратегий. Просмотреть всю историю торговли по всем использованным символам после тестирования невозможно, а визуальный осмотр не всегда эффективен. Через некоторое время после тестирования может потребоваться дополнительный анализ. Кроме того, отчет может быть предоставлен другим лицом. Поэтому инструмент для визуализации торговли на нескольких рабочих символах на основе HTML-отчета о тестировании был бы очень полезен.
В предыдущейстатье было представлено описание парсера HTML на основе CSS-селекторов[1]. Парсер извлекает из HTML-отчета список сделок, на основе которого можно формировать трейды (графические объекты). Парсинг CSV-файлов из раздела Сигналы немного проще, а формат файлов сигналов MetaTrader 4 (*.history.csv) и MetaTrader 5 (*.positions.csv) поддерживается встроенными функциями MQL.
https://www.mql5.com/en/forum/212020