Создание и тестирование кастомных инструментов в MetaTrader 5 build 1640
Мы выпустили очень большое обновление платформы MetaTrader 5 и приглашаем всех попробовать ее.
Скачать бесплатный терминал можно по с https://www.metatrader5.com, обновиться с сервера брокера или MetaQuotes-Demo.
Что нового:
Terminal: Добавлена возможность создавать собственные финансовые инструменты. Теперь вы можете создать любой инструмент, задать для него всевозможные настройки, импортировать в него свои ценовые данные и просматривать по нему графики.
Создание пользовательского символа
Откройте окно управления символами через контекстное меню «Обзора рынка» и нажмите «Создать символ»:
Для настройки доступно множество параметров. Их список и описание можно посмотреть в документации. Вы можете быстро настроить собственный инструмент — скопируйте параметры из любого схожего инструмента, а затем измените то, что вам нужно. Для этого выберите имеющийся инструмент в поле «Скопировать из».
Имя пользовательского символа не должно пересекаться с именами символов, транслируемых брокерами. Если вы подключитесь к серверу, и на нем окажется символ, совпадающий с пользовательским, то пользовательский символ будет удален.
Здесь же присутствуют команды импорта и экспорта настроек. Вы можете легко обмениваться пользовательскими символами друг с другом или переносить символы между своими терминалами. Настройки экспортируются в текстовые файлы формата JSON.
Управление пользовательскими символами
Все символы отображаются в отдельной группе Custom. Чтобы изменить или удалить символ, воспользуйтесь контекстным меню в списке:
Импорт ценовой истории
Вы можете импортировать ценовые данные в собственный символ из любого текстового файла. Выберите символ, а затем перейдите на вкладку «Бары».
В диалоге импорта укажите путь к файлу с данными и задайте настройки:
Разделитель — разделитель элементов в текстовом файле.
Пропуск столбцов и строк — количество колонок (слева направо) и строк (сверху вниз), которое необходимо пропустить при импорте.
Сдвиг — сдвиг времени по часам. Эта опция используется при импортировании данных, сохраненных в другом часовом поясе.
Только выделенные — эта опция позволяет импортировать только выделенные в окне просмотра строки. Строки можно выделить с помощью мыши, удерживая клавиши «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
Использование собственных символов
Использование собственных символов практически не отличается от тех, что предоставляет брокер. Они также показываются в окне «Обзор рынка», по ним можно открывать графики, на которые можно накладывать индикаторы и аналитические объекты. При этом по пользовательским символам нельзя торговать.
Тестирование стратегий на собственных символах
Созданные собственные символы можно использовать для проверки торговых роботов и индикаторов в тестере стратегий.
Это позволяет проводить оптимизацию стратегий даже для тех финансовых инструментов, которые недоступны в данный момент у брокера. Достаточно лишь правильно произвести импорт истории и настроить свойства пользовательского символа.
При расчете маржи и прибыли тестер стратегий автоматически использует доступные кросс-курсы. Например, мы создали собственный символ AUDCAD.custom с типом расчета маржи Forex, и валюта нашего счета — USD.
Тогда на основе имени форексного инструмента тестер ищет необходимые символы в следующем порядке:
сначала ищутся символы вида AUDUSD.custom (для расчёта маржи) и USDCAD.custom (для расчёта прибыли по сделкам)
затем, если какого-то из этих инструментов нет, ищется первый символ, который соответствует по имени необходимым валютным парам — AUDUSD и USDCAD соответственно. Например, найдены AUDUSD.b и NZDUSD.b — значит, именно курсы этих инструментов будут использоваться при расчетах маржи и прибыли.
Для инструментов с остальными типами расчета маржи (CFD, Futures, Stock Exchange) необходимо наличие валютной пары для пересчета валюты инструмента в валюту депозита. Например, мы создали собственный символ с валютой прибыли и валютой маржи, выраженными в британских функтах (GBP), а валютой депозита является швейцарский франк (CHF).
Тогда поиск инструментов для тестирования ведется в следующем порядке:
Проверяется наличие торгового инструмента, соответствующего валютной паре GBPCHF (GBP vs CHF).
Если он отсутствует, то ищется первый торговый инструмент, который соответствует по имени валютной паре GBPCHF, например GBPCHF.b или GBPCHF.def.
При тестировании на собственных инструментах убедитесь, что на торговом счете доступны все необходимые валютные пары для расчетов. В противном случае расчет финансовых результатов и залоговых требований при тестировании будет невозможен.
Больше возможностей в следующих версиях платформы
Работа над собственными инструментами еще не завершена, и в следующих версиях платформы появятся новые функции. Вы сможете импортировать историю в пользовательские символы прямо из экспертов, а также транслировать по ним данные (вбрасывать котировки) в режиме реального времени.
Terminal: Добавлена фильтрация ленты сделок по объему.
Из ленты можно скрыть сделки с объемом меньше указанного. Таким образом, в ленте останутся только крупные сделки, оказывающие наибольшее влияние рынок.
Дважды нажмите на первой строке ленты сделок, укажите минимальный объем в лотах, а затем нажмите на любой другой области стакана цен. Сделки будут отфильтрованы, а текущее значение фильтра появится в заголовке колонки объема.
Задать минимальный объем можно также через контекстное меню ленты сделок.
Terminal: Добавлена возможность привязки стакана цен к активному графику. Каждый раз, когда вы будете переключаться к просмотру графика какого-либо финансового инструмента, в стакане цен будет автоматически включаться точно такой же инструмент.
Вам не придется отдельно открывать стакан цен для каждого нового символа.
Terminal: Исправлено обновление панелей инструментов после сворачивания и разворачивания окна терминала.
Terminal: Исправлено формирование торговой истории позиций при пересечении тикетов сделок и позиций.
MQL5: Добавлена возможность профилирования MQL5-программ на ценовой истории. Это позволит быстро проверять производительность программ без ожидания новых тиков.
При профилировании на реальных данных программа запускается на обычном графике в терминале. Многие программы, в особенности индикаторы, осуществляют какие-либо расчеты только при приходе нового тика (OnTick, OnCalculate).
Таким образом, для оценки производительности приходится ждать поступления новых тиков в режиме реального времени. При тестировании на исторических данных вы сразу сможете дать нужную нагрузку на программу. Профилирование запустится в тестере стратегий в визуальном режиме, и вы сразу получите множество событий прихода нового тика.
MQL5: Добавлена поддержка Объединения (union). Это особый тип данных, который состоит из нескольких переменных, разделяющих одну и ту же область памяти. Следовательно, объединение обеспечивает возможность интерпретации одной и той же последовательности битов двумя (или более) различными способами.
Объявление объединения начинается с ключевого слова union.
union LongDouble
{
long long_value;
double double_value;
};
В отличие от структуры, разные члены объединения относятся к одному и тому же участку памяти. В данном примере объявлено объединение LongDouble, в котором значение типа long и значение типа double разделяют одну и ту же область памяти.
Важно понимать — невозможно сделать так, чтобы это объединение хранило одновременно целочисленное значение long и вещественное double (как это было бы в структуре), поскольку переменные long_value и double_value накладываются (в памяти) друг на друга.
Но зато MQL5-программа в любой момент может обрабатывать информацию, содержащуюся в этом объединении, как целочисленное значение (long) или как вещественное (double). Следовательно, объединение позволяет получить два (или больше) варианта представления одной и той же последовательности данных.
При объявлении объединения компилятор автоматически выделяет область памяти, достаточную для хранения в объединении переменных самого большого по объему типа. Для доступа к элементу объединения используется тот же синтаксис, как и для структур – оператор «точка».
MQL5: Добавлена автоматическая генерация неявного оператора копирования для объектов структур и классов. Теперь компилятор автоматически создает операторы копирования, что позволяет писать для объектов простые записи вида b=a.
В неявном операторе осуществляется почленное копирование объектов.
Если член является объектом, вызывается соответствующий для этого объекта оператор копирования.
Если член является массивом объектов, то перед вызовом соответствующего оператора копирования для каждого элемента принимающий массив увеличивается или уменьшается до нужного размера через ArrayResize.
Если член является массивом простых типов, для копирования используется функция ArrayCopy.
Если член является указателем на объект, копируется сам указатель, а не объект, на который он указывает.
При необходимости можно переопределить поведение и вместо неявного оператора копирования создать собственный вариант с помощью перегрузки.
MQL5: Оптимизировано использование памяти при обращении к ценовой истории из экспертов при помощи Copy* функций. При работе с большими объемами данных потребление памяти будет снижено многократно.
MQL5: Теперь функция TimeToStruct возвращает булево значение, позволяя проверять успешность конвертации datetime в MqlDateTime.
MQL5: Добавлен запрет на использование функций FileWriteStruct и FileReadStruct для структур, содержащих строки, динамические массивы, объекты и указатели.
MQL5: Добавлены коды ответа:
TRADE_RETCODE_REJECT_CANCEL — запрос на активацию отложенного ордера отклонен, а сам ордер отменен
TRADE_RETCODE_LONG_ONLY — запрос отклонен, так как на символе установлено правило «Разрешены только длинные позиции»
TRADE_RETCODE_SHORT_ONLY — запрос отклонен, так как на символе установлено правило «Разрешены только короткие позиции»
TRADE_RETCODE_CLOSE_ONLY — запрос отклонен, так как на символе установлено правило «Разрешено только закрывать существующие позиции»
MQL5: Добавлено новое значение, возвращаемое функцией SymbolInfoInteger c параметром SYMBOL_ORDER_MODE. SYMBOL_ORDER_CLOSEBY — флаг возможности выставления ордеров на закрытие позиции встречной (Close By).
MQL5: В перечисление ENUM_SYMBOL_INFO_INTEGER добавлено булево свойство SYMBOL_CUSTOM. Оно позволяет узнать, является ли символ пользовательским. Для получения свойства используйте функцию SymbolInfoInteger.
MQL5: Добавлена возможность получения причины создания ордера, сделки и позиции.
Новые свойства
Signals: Исправлено открытие сигнала с сайта при отсутствии подключения торговым счетом.
Tester: Оптимизирована и значительно ускорена работа с историей ордеров и сделок. При работе с большим объемом данных (десятки тысяч записей в истории и более) скорость работы увеличится многократно.
Tester: Исправлено вычисление времени удержания позиции в отчёте тестирования.
MetaEditor: В отладчике исправлено отображение содержимого статических массивов-членов класса.
MetaEditor: Добавлен список точек останова в отлаживаемой программе. Для перехода к нему используйте контекстное меню вкладки «Отладка»:
Для перехода к любой из точек дважды нажмите на ней.
Приветствую! Когда для фьючерсов будет удалено отображение клиринговых сделок на графике и попадание их в историю сделок? Это захломляет график, сбивает работу робота при переносе в безубыток и т.д. и т.п. В квике все плохо, но это работает как надо.
Все отсальное устраивает. По сравнению с Квиком — космос. Новые фишки тоже пригодятся.
Индекс S&P 500 после короткой коррекции вновь пошёл на штурм исторической области сопротивления 6924–6942. Покупатели решительно атакуют этот форпост медведей, игнорируя множащиеся заголовки о...
Инвест идея по тренду длиной в 1 день или бесконечность - шанс заработать с минимальным риском?
Новый год — время новых инвест идей спекулятивного характера
Держите одну из них (сам взял сегодня на спекулятивный счет, скину если алюминий уйдет ниже 3000 баксов)
Причины...
Жора Интрадей, ну кухня-кухней, но относительно небольшие суммы я ранее выводил на карту себе. Вроде проблем не было. Но как быть, например, с суммами от 100к?
dreikspb, Что значит «ничего подобного»? Я писал о периоде с 1 по 31 января для списания налога. Вы пишете про 1 января — как раз то, о чём я и написал
Кузнечик, Трамп вернул контроль над Панамским каналом за одну ночь, под контроль поставил за пару часов Венесуэлу не уничтожая мирное население, из негров в прошлом рабов, Африканцы, индейцы.Сравни...
Доллар унесло бурным потоком событий Долгий сон, бурное пробуждение. То ли Forex так соскучился по данным из-за шатдауна, то ли на рынке формируется новый нарратив, который коренным образом изменит су...
Производство было сосредоточено в местах, богатых лесом, в Европе, но, в основном, в России и Северной Америке.
В России Пётр I в 1721 году установил монополию на производство поташа: «Нигде нико...
Расскажите эти сказки африканским и индийским детям, которые по помойкам лазят с рождения и разговаривать начинают в 10 лет.
А потом иммигрируют в США и становятся нобелевскими лауреатами.
...
ProstoVladimir, налог НДФЛ берется с положительного финансового результата по итогам года, т.е. С ПРИБЫЛИ от сделок, с купонов. С доходов по закону принято платить НДФЛ. Брокер как налоговый агент ...
Все отсальное устраивает. По сравнению с Квиком — космос. Новые фишки тоже пригодятся.