Торговая платформа позволяет создавать собственные финансовые инструменты. По ним можно просматривать графики и проводить технический анализ, их можно использовать для проверки торговых роботов и индикаторов в тестере стратегий.
Если ваш брокер не предоставляет инструмент, на котором вы хотели бы проверить свою стратегию, или же предоставляет недостаточно глубокую или некачественную ценовую историю, создайте инструмент и загрузите в него собственные данные.
Откройте окно управления символами через контекстное меню "Обзора рынка" и нажмите "Создать символ":
Для настройки доступны все параметры из спецификации торговых инструментов, а также ряд дополнительных:
Помимо указанных параметров вы можете настроить торговые и котировочные сессии по инструменту. Сессии настраиваются отдельно для каждого дня. Дважды нажмите на него, чтобы приступить к редактированию.
Установите сессии при помощи рычажков. Советники не смогут торговать в тестере стратегий вне торговых сессий.
По умолчанию торговые сессии не заданы, они совпадают с котировочными. Если требуется настроить время котировочных и торговых сессий по отдельности, включите опцию "Использовать отдельные торговые сессии". Все торговые сессии должны находиться внутри котировочных.
|
Вы можете легко обмениваться пользовательскими символами друг с другом или переносить их между своими платформами. Экспортировать и импортировать настройки конкретного пользовательского символа можно из окна редактирования его настроек, показанного выше.
Вы также можете экспортировать и импортировать целые группы символов:
Настройки экспортируются в текстовые файлы формата JSON:
{
|
Все пользовательские символы отображаются в отдельной группе Custom. Чтобы изменить или удалить символ, воспользуйтесь контекстным меню в списке:
Вы можете импортировать ценовые данные в собственный символ из любого текстового файла, а также из файлов истории MetaTrader (HST). Выберите символ, а затем перейдите на вкладку "Бары" или "Тики".
В диалоге импорта укажите путь к файлу с данными и задайте настройки:
Файл с минутными барами должен иметь формат: Дата Время Open High Low Close ТиковыйОбъем Объем Спред. Например:
<DATE> <TIME> <OPEN> <HIGH> <LOW> <CLOSE> <TICKVOL><VOL> <SPREAD>
|
Файл с тиками должен иметь формат: Дата Время Bid Ask Last Volume. Например:
<DATE> <TIME> <BID> <ASK> <LAST> <VOLUME>
|
Флаги тиков передавать не нужно, терминал рассчитает их самостоятельно при импорте.
Для собственного символа вы можете использовать данные любого существующего инструмента. Экспортируйте их, при необходимости модифицируйте, а затем импортируйте обратно.
|
Ценовые данные пользовательских символов сохраняются в отдельном каталоге Custom (вне каталогов данных конкретных торговых серверов):
C:\Users\[windows account]\AppData\Roaming\MetaQuotes\Terminal\[instance id]\bases\Custom |
Вы можете редактировать историю баров и тиков пользовательских инструментов в ручном режиме. Для этого запросите необходимый интервал данных на вкладке "Бары" или "Тики".
При редактировании баров настоятельно рекомендуется запрашивать данные таймфрейма М1. В торговой платформе ценовая история хранится в виде минутных баров. Все остальные таймфреймы создаются на их основе. Даже если вы изначально запросили бары другого таймфрейма, все изменения все равно будут применяться к соответствующим минутным барам. Например, запросив данные таймфрейма М5 и изменив бар, вы замените пять минутных баров на один минутный (соответствующий началу бара М5). То есть произойдет полная замена редактируемого интервала. |
Для удобства измененные записи подсвечиваются:
|
Для сохранения изменений нажмите "Применить изменения" в нижней части окна.
Использование собственных символов практически не отличается от тех, что предоставляет брокер. Они также показываются в окне "Обзор рынка", по ним можно открывать графики, на которые можно накладывать индикаторы и аналитические объекты.
По пользовательским символам нельзя совершать реальные сделки, но их можно использовать для проверки торговых роботов и индикаторов в тестере стратегий. Просто выберите собственный символ из запустите тестирование:
При расчете маржи и прибыли по сделкам, совершаемым при тестировании, тестер стратегий при необходимости автоматически использует доступные на счете кросс-курсы. Например, если валюта прибыли инструмента — EUR, а валюта счета — USD, тестер будет конвертировать ее по соответствующим курсам пары EURUSD.
С большой вероятностью пользовательские инструменты имеют в своих именах различные суффиксы, например, EURUSD.1 или EURUSD.f. Поэтому в тестере стратегий используется специальный механизм поиска подходящих кросс-курсов для пересчета.
Например, мы создали собственный символ AUDCAD.custom с типом расчета маржи Forex, и валюта нашего счета — USD. Тогда на основе имени форексного инструмента тестер ищет необходимые символы в следующем порядке:
Для инструментов с остальными типами расчета маржи (Futures, Stock Exchange) необходимо наличие валютной пары для пересчета валюты инструмента в валюту депозита. Например, мы создали собственный символ с валютой прибыли и валютой маржи, выраженными в британских фунтах (GBP), а валютой депозита является швейцарский франк (CHF). Тогда поиск инструментов для тестирования ведется в следующем порядке:
|
Торговая платформа позволяет создавать синтетические финансовые инструменты — инструменты на основе одного или нескольких имеющихся. Нужно просто задать формулу для расчета котировок, и платформа в режиме реального времени будет генерировать тики синтетического инструмента, а также создаст его минутную историю.
Например, вы можете создать инструмент, который будет показывать индекс доллара (USDX). Его формула будет выглядеть следующим образом:
50.14348112*pow(ask(EURUSD),-0.576)*pow(USDJPY,0.136)*pow(ask(GBPUSD),-0.119)*pow(USDCAD,0.091)*pow(USDSEK,0.042)*pow(USDCHF,0.036) |
---|
В режиме реального времени платформа будет рассчитывать цену нового инструмента на основе котировок шести других инструментов, предоставляемых вашим брокером. В Обзоре рынка и на графике вы будете видеть, как изменяется его цена:
Создайте новый пользовательский инструмент, откройте его спецификацию и укажите формулу:
Расчет тиков и минутных баров синтетического инструмента начнется при его добавлении в "Обзор рынка". При этом в "Обзор рынка" сразу же автоматически добавляются все символы, необходимые для его расчета. В журнал платформы будет добавлена запись о начале расчета: Synthetic Symbol USDX: processing started.
|
Каждые 100 мс (десять раз в секунду) проверяется, изменилась ли цена хотя бы одного из инструментов, участвующих в формуле. Если да, происходит расчет цены синтетического инструмента и генерируется тик. Расчет осуществляется параллельно в трех потоках для цен Bid, Ask и Last. Например, если в формуле указан EURUSD*GBPUSD, расчет цен синтетического инструмента будет следующим:
Наличие изменений проверяется для каждой цены отдельно. Например, если при очередном расчете у исходного инструмента поменялась только цена Bid, то и для тика синтетического инструмента будет рассчитана только та цена, где были изменения.
Помимо сбора тиков в реальном времени, платформа создает и минутную историю синтетического инструмента. Таким образом, трейдер может просматривать его графики аналогично обычным инструментам, проводить на них технический анализ при помощи объектов и индикаторов.
Как только трейдер добавляет синтетический инструмент в Обзор рынка, платформа проверяет, есть ли для него рассчитанная минутная история. Если нет, она будет создана для последних 60 дней — это около 50 000 баров. Если в настройках платформы в параметре макс. баров в окне указана меньшая величина, то будет использовано именно это ограничение. Если часть баров за этот период уже построена, то платформа досоздаст новые бары.
После построения баров за последние 60 дней платформа в фоном режиме начнет достраивать более глубокую историю. Ценовая история каждого инструмента, входящего в формулу, может иметь разную глубину. В связи с этим расчет производится по самому короткому промежутку. Например, в формуле используются три инструмента:
В этом случае история синтетического инструмента будет рассчитана только с 2014.06.01 по настоящий момент. Дополнительно от этой даты будет отброшено еще 100 минут для обеспечения целостности расчета (при отсутствии отдельного минутного бара в истории в расчете используется бар за предыдущую минуту).
История минутных баров синтетического инструмента рассчитываются на основе минутных баров (не тиков) инструментов, входящих в его формулу. Например, чтобы посчитать цену Open минутного бара синтетического инструмента, платформа берет цены Opеn инструментов, входящих в его формулу. Аналогично производится расчет для цен High, Low и Close.
Если для какого-либо инструмента из формулы отсутствует нужный минутный бар, платформа возьмет для расчета цену Close предыдущего бара. Например, используются три инструмента: EURUSD, USDJPY и GBPUSD. Если при расчете бара, соответствующего минуте 12:00, для инструмента USDJPY такого минутного бара не окажется при расчете будут использованы следующие цены:
Если минутный бар отсутствует у всех инструментов из формулы, соответствующий минутный бар синтетического инструмента не будет рассчитан.
Все новые бары (текущий и последующие) синтетического инструмента создаются на основе генерируемых тиков. Цена, по которой строятся бары, зависит от параметра "Построение графиков" в спецификации:
В формуле можно использовать ценовые данные, а также некоторые свойства имеющихся символов (предоставляемых брокером). Для этого укажите:
Если символ имеет сложное название (содержит дефисы, точки и т.п.), оно должно быть заключено в кавычки. Например, "RTS-6.17". |
В формуле можно использовать арифметические операции: сложение (+), вычитание (-), умножение (*), деление (/) и остаток от деления (%). Например, EURUSD+GBPUSD означает, что цена рассчитываться как сумма цен EURUSD и GBPUSD. Также в формуле можно использовать унарный минус для смены знака, например: -10*EURUSD.
Для арифметических операций существует приоритет их выполнения:
Также в формуле можно использовать константы:
Также в формуле можно использовать все математические функции, поддерживаемые в MQL5, кроме MathSrand, MathRand и MathIsValidNuber:
Функция |
Описание |
---|---|
fabs(число) |
Возвращает абсолютное значение (значение по модулю) переданного ей числа. |
acos(число) |
Возвращает значение арккосинуса числа в радианах |
asin(число) |
Возвращает значение арксинуса числа в радианах |
atan(число) |
Возвращает арктангенс числа в радианах |
ceil(число) |
Возвращает ближайшее сверху целое числовое значение |
cos(число) |
Возвращает косинус числа |
exp(число) |
Возвращает экспоненту числа |
floor(число) |
Возвращает ближайшее снизу целое числовое значение |
log(число) |
Возвращает натуральный логарифм |
log10(число) |
Возвращает логарифм числа по основанию 10 |
fmax(число1, число2) |
Возвращает максимальное из двух числовых значений |
fmin(число1, число2) |
Возвращает минимальное из двух числовых значений |
fmod(делимое, делитель) |
Возвращает вещественный остаток от деления двух чисел |
pow(основание, степень) |
Возводит основание в указанную степень |
round(число) |
Округляет число до ближайшего целого |
sin(число) |
Возвращает синус числа |
sqrt(число) |
Возвращает квадратный корень |
tan(число) |
Возвращает тангенс числа |
expm1(число) |
Возвращает значение выражения exp(число)-1 |
log1p(число) |
Возвращает значение выражения log(1+число) |
acosh(число) |
Возвращает значение гиперболического арккосинуса |
asinh(число) |
Возвращает значение гиперболического арксинуса |
atanh(число) |
Возвращает значение гиперболического арктангенса |
cosh(число) |
Возвращает гиперболический косинус |
sinh(число) |
Возвращает гиперболический синус |
tanh(число) |
Возвращает гиперболический тангенс |