Визуализация тестирования. Ручная торговля. [ en ]
Введение
В клиентском терминале MetaTrader 4 появилась функция визуализации тестирования. Она позволяет контролировать процесс тестирования экспертов. Но не каждую стратегию можно запрограммировать и не каждый трейдер может написать хорошего эксперта.
В этой статье будет описано, как использовать визуализатор для тестирования "ручных", не оформленных в виде эксперта стратегий. Для торговли на "Тестере ручных стратегий" нужны лишь базовые навыки работы с терминалом и совсем не нужны знания программирования, так что работать с ним сможет любой трейдер.
Для начала, загрузите из CodeBase эксперта vHandsTrade.mq4. Его необходимо сохранить в директорию "\MetaTrader 4\experts\".
Если вы не пользовались "расширением функциональности" из вышеупомянутой статьи, загрузите из другого раздела CodeBase еще несколько файлов:
включаемый файл VisualTestingTools.mq4 - в директорию "\MetaTrader 4\experts\include\";
и два индикатора - vTerminal.mq4 и vHistory.mq4 - в директорию "\MetaTrader 4\experts\indicators\".
После этого откройте эксперта vHandsTrade.mq4 в MetaEditor-е и скомпилируйте его (клавиша F5). Подтверждением успешной компиляции будет служить сообщение в окне "Инструментарий":
Теперь, когда программа готова, можете заняться подготовкой шаблона графика. Для этого откройте любой график, настройте его внешний вид по своему вкусу, прикрепите индикаторы vTerminal.mq4 и vHistory.mq4, и сохраните шаблон под именем vHandsTrade.tpl:
Обратите внимание, что для работы с "Тестером ручных стратегий" справа на графике должно быть свободное место - туда будут помещены элементы управления. Поэтому при создании шаблона обязательно включите опцию "Смещение графика":
Теперь можете заняться непосредственно настройкой советника.
Настройка советника
У каждого трейдера есть свои "торговые привычки". Чтоб использование "Тестера ручных стратегий" стало для вас максимально удобным, потратьте пять минут и настройте советника в соответствии с вашими предпочтениями.
В процессе работы вы будете открывать и закрывать позиции, устанавливать отложенные ордера, передвигать Стоп Лосс и Тейк Профит позиций. При этом у вас будет возможность выбирать размер лота для открываемых позиций, время истечения для отложенных ордеров и многое другое. Каждой из настраиваемых характеристик соответствует строка на панели управления:
и две строки в коде эксперта:
Их назначение интуитивно понятно: - RISK (Risk) - % депозита, который будет использоваться при открытии позиции; - LOT (Lot) - размер лота, который будет использоваться при открытии позиции, если указан RISK = 0; - STOPLOSS (SL) - размер СтопЛосс для открываемых позиций, если при открытии не двигается линия СтопЛосс; - TAKEPROFIT (TP) - размер ТейкПрофит для открываемых позиций, если при открытии не двигается линия ТейкПрофит; - TRAILINGSTOP (TS) - размер ТрейлингСтопа, которым будут сопровождаться все позиции; - EXPIRATION (Exp) - время истечения отложенных ордеров в часах.
Вы можете поменять значения любой предопределенной характеристики прямо в коде. Например, если вы обычно открываете позиции с лотом 1.0, 2.0, 5.0, 10.0 и 50.0, поменяйте строку, где указаны размеры лота на вот такую:
doubleLOT[] = {1.0, 2.0, 5.0, 10.0, 50.0};
После компиляции и запуска вы увидите следующую картину:
Если вы хотите, чтоб по умолчанию при запуске был выбран лот 5.0, вместо "int SELECTED_LOT = 1;" напишите
intSELECTED_LOT = 3;
Теперь 3-й по счету лот будет выбран по умолчанию:
Точно так же можно менять значения всех характеристик. Правило везде одинаковое: в массиве в фигурных скобках должно быть 5 чисел, разделенных запятой, а значение переменных SELECTED_*** должно быть от 1 до 5.
Внешние переменные и запуск
Теперь можно запускать наш "Тестер ручных стратегий". Откроем окно тестера, выберем из списка эксперта vHandsTrade, валютную пару и период графика и установим режим моделирования "Все тики" для максимального приближения к реальности:
Только прежде чем нажать кнопку "Старт", заглянем в окно свойств эксперта. Там мы произведем окончательную настройку эксперта с помощью внешних переменных:
Собственно, у эксперта всего четыре внешних переменных, остальные он унаследовал от включаемого файла VisualTestingTools.mq4. Но для нормальной и удобной работы необходимо настроить все переменные:
CommentsCount - максимальное количество сообщений, которое будет выводить эксперт на экран;
SelectedColor - цвет выбранного значения характеристики Risk, Lot, SL, TP, и так далее;
ModifyColor - цвет значка модификации ордера, который будет использоваться при ручной модификации;
TrailingColor - цвет значка модификации ордера, который будет использоваться при ТрейлингСтопе;
TerminalRows - максимальное
количество строк закладки "Торговля", отображаемых на экране. Если
установить TerminalRows = 0, терминал обновляться не будет;
HistoryRows
- максимальное количество строк закладки "История счета", отображаемых на
экране. Если установить HistoryRows = 0, история счета обновляться не
будет;
BigText - установите true, если хотите использовать большой размер шрифта;
SignalPoints -
расстояние в пунктах, начиная с которого будут "подсвечиваться" поля
Стоп Лосс, Тейк Профит и Цена открытия (для отложенных ордеров).
Например, при SignalPoints = 10 поле Стоп Лосс изменит цвет, когда цена
будет в 10-ти пунктах от уровня Стоп Лосс позиции;
ShowCancelled - установите true, если хотите видеть в истории сделок отмененные ордера;
ShowExpired - установите true, если хотите видеть в истории сделок отложенные ордера, у которых наступило время истечения;
MainColor - цвет заголовочных строк Терминала и Истории счета и строки информации о торговом счете Терминала (Баланс, Эквити, ...).
BuyColor - цвет информации о Buy-позициях;
BuyOPColor
- цвет поля Цена открытия закладки "Торговля", на который будет меняться
основной цвет при приближении текущей цены к уровню открытия Buy Stop и Buy Limit - ордеров.
BuySLColor
- для закладки "Торговля": цвет, на который будет меняться основной
цвет при приближении цены к уровню Стоп Лосс Buy-позиций. Для закладки
"История счета": цвет, на который будет меняться основной цвет, если
Buy-позиция закрылась по Стоп Лоссу;
BuyTPColor - то же, что и BuySLColor, применительно к Тейк Профиту позиций;
SellColor, SellOPColor, SellSLColor и SellTPColor - то же самое, только для Sell-позиций;
vTerminal_SubWindow и vHistory_SubWindow - номер подокон индикаторов vTerminal и vHistory (описание в предыдущей статье).
Стоит заметить, что эксперт создавался для работы на графике с черным фоном, поэтому многие цвета по умолчанию светлые. Если вы используете белый фон, установите цвета темных оттенков. Именно так я и поступил, тестируя эксперта для статьи.
Первое знакомство
И вот, наконец, мы жмем кнопку Старт. Первое, что мы видим на графике - уже упоминаемая "Панель инструментов":
С ее помощью мы сможем открывать позиции, устанавливать отложенные ордера и выбирать значения предопределенных характеристик. Каждое действие мы рассмотрим подробнее в соответствующей главе, сейчас же только замечу, что все манипуляции с Панелью инструментов безопаснее делать в режиме паузы. Любое действие воспринимается экспертом как приказ и отмене не подлежит. Поскольку эксперт предназначен исключительно для тестера, неосторожность не причинит вам материального ущерба, но вы вполне можете испортить результаты, полученные в результате длительного и кропотливого тестирования.
Ниже на графике - окна "Терминала" и "История сделок". Пока мы не начнем торговлю, они будут пустыми:
С помощью "Терминала" мы сможем закрывать и модифицировать позиции, окно "Истории сделок" играет чисто информативную роль.
Открытие позиции
Попробуем открыть позицию. Для начала, необходимо определить размер лота и расстояние до СтопЛосса и ТейкПрофита - зачем потом тратить время на модификацию?
Как уже говорилось, выбор производится с помощью панели инструментов - необходимо выделить объект, содержащий необходимое значение, и переместить его в любую точку экрана. Одновременно можно перемещать любое количество объектов, т.е. если мы хотим установить Лот равным 1 и ТейкПрофит равным 100, необходимо перетащить соответствующие цифры в произвольную точку:
Теперь нажимаем F12 - приходит следующий тик, и эксперт отмечает выбранные значения:
При открытии позиции эксперт использует выбранное значение характеристики: - размер лота вычисляется по формуле Свободная маржа * Risk * 0.01 * Кредитное плечо / Размер контракта. Если Risk=0, используется выбранное значение Lot. - расстояние до Стоп Лосс определяется соответствующей линией (будет описано ниже). Если линия Стоп Лосс не двигалась с места, будет использовано выбранное значение SL; - расстояние до Тейк Профит определяется соответствующей линией. Если линия Тейк Профит не двигалась с места, будет использовано выбранное значение TP; - время истечения (только для отложенных ордеров) - используется выбранное значение Exp.
Открытие позиции происходит очень просто - достаточно перетащить соответствующую линию на график. Для каждого типа ордера есть 3 линии: - линия Цены Открытия (сплошная для Бай и Селл позиций, штриховая - для отложенных ордеров), она находится по центру, между линиями Стоп Лосс и Тейк Профит; - линия Стоп Лосс (штрихпунктирная), она находится снизу от линии Цены Открытия для Бай позиций, и сверху - для Селл позиций; - линия Тейк Профит (пунктирная) - сверху для Бай позиций, снизу для Селл позиций.
Отложенные ордера, которые устанавливаются над текущей ценой (Бай Стоп и Селл Лимит) находятся в верхнем ряду, а те, которые устанавливаются под ценой (Бай Лимит и Селл Стоп) - в нижнем ряду.
Итак, если вы хотите открыть Бай позицию с выбранными значениями Стоп Лосс и Тейк Профит (на данный момент 50 и 100, соответственно), просто перетяните линию открытия Бай позиции на график:
Теперь нажмите F12, и любуйтесь результатом:
Поскольку Бай и Селл позиции открываются исключительно по текущим ценам, нет необходимости позиционировать линию точно на цену - эксперт подставит правильные значения сам. А вот для отложенных ордеров цену открытия надо указывать правильную, иначе ордер установлен не будет.
Давайте, теперь попробуем установить Селл Стоп ордер: - размер лота - 10% от депозита; - цена открытия и Стоп Лосс устанавливаются вручную; - Тейк Профит отключен; - время истечения 30 минут (0.5 часа).
Возьмем все необходимые объекты и разместим на графике:
Жмем F12, и смотрим:
Кажется, все получилось.
Закрытие
Закрытие позиций и удаление отложенных ордеров - задача намного более простая. Все, что необходимо сделать - выбрать тикет ордера, который необходимо закрыть, и передвинуть:
Результат не заставит себя ждать - уже на следующем тике эксперт закроет позицию:
Удаление отложенных ордеров происходит точно так же.
Модификация
Управление модификацией ордеров объединяет в себе элементы открытия и закрытия позиций: для того, чтоб выбрать изменяемую характеристику (Цену Открытия, Стоп Лосс или Тейк Профит), необходимо переместить соответствующее поле.
После прихода следующего тика эксперт создаст Линию Модификации, с помощью которой можно изменить значение соответствующей характеристики:
Передвинув линию на новое место, жмем F12 и видим результат:
Если же необходимо удалить Стоп Лосс или Тейк Профит вообще, просто удалите соответствующее поле:
Удалив поле Цена Открытия, можно закрыть позицию (удалить ордер) - кому-то этот способ может показаться более удобным.
Ограничений на количество одновременно модифицируемых параметров нет - можете менять хоть все открытые позиции за один тик.
Заключение
Прочитав статью, вы убедились, что не обязательно быть программистом чтоб тестировать свою стратегию на истории. С помощью визуального режима тестирования можно торговать на истории вручную. Представленные в статье эксперт, библиотека и индикаторы позволяют симулировать реальный торговый терминал.
В заключение статьи хочу напомнить, что эксперт не предназначен для реальной торговли. Не доверяйте тестовой программе свои деньги.
Специально для облегчения управления ордерами в реальном режиме времени создавался программный комплекс AutoGraf. Именно из него (с разрешения автора) были взяты некоторые идеи и куски кода при написании этой статьи. За что автору - огромное спасибо.
В статье описываются методы, позволяющие лучше понимать результаты оптимизации тестера. Также приведено несколько советов, помогающих избежать "вредной оптимизации".