Благодаря тестеру стратегий у трейдера появляется возможность проведения тестирования и оптимизации торговых стратегий (советников) до того, как он начнет ими пользоваться в реальных условиях. Процесс тестирования советника заключается в его однократной прогонке с использованием начальных параметров. А чтобы оптимизировать торговую стратегию, нужно осуществить неоднократный прогон с использованием различных наборов параметров. В результате можно подобрать наиболее эффективную комбинацию таких параметров для получения прибыли.
Мультивалютность тестера стратегий делает возможным тестирование и оптимизацию торговых стратегий, в которых используются несколько финансовых инструментов. При этом отпадает необходимость в задании списка символов для оптимизации/тестирования, так как тестером стратегий в автоматическом режиме обрабатывается информация по всем символам, которые были заложены для использования в советнике.
Благодаря многопоточности тестера стратегий имеется возможность задействования всех доступных ресурсов ПК. Для осуществления оптимизации и тестирования используются специальные вычислительные агенты, которые загружаются на компьютере пользователя в виде серверов. Поскольку работа агентов независимая, проходы оптимизации могут вычисляться параллельно.
Функции тестера стратегий позволяют подключить к нему практически бесконечное число агентов, работающих в удаленном режиме. В придачу к этому тестер стратегий дает возможность пользоваться огромной сетью облачных вычислений MQL5 Cloud Network, объединяющей не одну тысячу агентов по всему миру. И всей этой вычислительной мощью может пользоваться любой клиент торговой платформы.
Возможности тестера стратегий не ограничиваются тестированием и оптимизацией. Например, ему доступна в визуальном режиме проверка работы пользовательских индикаторов. С помощью данной функции легко проверяются демоверсии индикаторов, скачанные из Маркета.
Во время оптимизации обычно проводится многократный запуск советника на исторических данных. При этом для получения самого оптимального варианта могут использоваться разнообразные наборы параметров. Многократные прогоны позволяют перебирать возможные комбинации входных параметров эксперта с целью отбора самых работоспособных комбинаций.
Пользователю, запускающему тестер взамен большого количества настроек, предлагается на выбор несколько типовых задач. Это значительно облегчает жизнь новичкам, не имеющим достаточного опыта работы.
Открытие стартовой страницы дает пользователю доступ к нескольким основным задачам по оптимизации и тестированию стратегий, а также возможность быстрого перезапуска одной из предыдущих задач.
Если для запущенных задач не хватает места в списке, рекомендуется использовать строку поиска, где тест может быть найден по следующим параметрам:
После выбора одной из задач на стартовой странице пользователь должен выполнить более тонкую настройку параметров тестирования:
Работа облегчается тем, что показываются только те параметры, которые нужны для выбранной задачи. Например, если трейдер выберет математические вычисления, то ему понадобятся лишь параметры выбора программы для тестирования и режима оптимизации. В этом случае будут скрыты настройки периодов тестирования, задержек, а также генерация тиков.
Первым делом выбирается контекстное меню нужного советника и выполняется команда «Тестировать».
В результате произойдет выбор советника в тестере стратегий.
Используя тестер, можно проводить проверку на истории стратегий, торгующих на нескольких инструментах. Такие эксперты условно называют мультивалютными. Тестер выполняет закачку истории по применяемым инструментам, пользуясь для этого торговой платформой (а не торговым сервером). Происходит это в автоматическом режиме, когда первый раз обращаются к конкретному инструменту. Торговый сервер используется только в случае недостатка истории.
Перед тем как начнется оптимизация мультивалютного эксперта, необходимо выполнить включение необходимых для тестирования инструментов в «Обзоре рынка». Далее активируется команда «Символы» и включается показ нужных инструментов.
До начала оптимизации необходимо выбрать финансовый инструмент, на котором будет выполняться проверка функционирования робота. Кроме того, устанавливаются период и режим.
Чтобы ускорить оптимизацию с применением генетического алгоритма, трейдер может воспользоваться выбором критериев оптимизации, для которых отведено поле правее. В нем содержится информация о параметрах для представления самых удачных прогонов советника. Значение результата прямо пропорционально уровню выбранного показателя.
После завершения всех настроек активируется кнопка «Старт» и запускается процесс тестирования либо оптимизации:
С помощью входных параметров выполняется управление поведением советника, его адаптация под разные условия, возникающие на рынке, а также под определенный финансовый инструмент. Например, работа советника может быть проверена с разными расстояниями выставления ордеров (стоп-лосс и тейк-профит). Можно применять различные периоды скользящей средней, необходимые для анализа рынка перед принятием решения.
Оптимизация по сути своей является процессом, в ходе которого перебираются различные значения и комбинации входных параметров, чтобы получить наилучший результат.
Для включения оптимизации по параметру необходимо его выбрать, отметив галочкой. После этого задается начальное и конечное значение, а также шаг перебора. Возможен выбор одного или нескольких параметров. Суммарное количество вероятных комбинаций можно увидеть под списком параметров.
Чтобы у пользователя имелась возможность возврата к текущим настройкам MQL5-программы, выполняется сохранение набора параметров. Это можно сделать через контекстное меню:
У пользователя имеется возможность задания собственных настроек торгового счета в процессе тестирования следующих стратегий:
Благодаря такой возможности трейдер моделирует разнообразные торговые условия у биржевых брокеров.
Этот раздел может использоваться для задания максимально возможного количества позиций и открытых ордеров, присутствующих на счете одновременно. Кроме того, тут доступна настройка сессий в случае запрета на торговлю у тестируемой программы.
Здесь имеется возможность контроля процесса резервирования маржи и того, какую систему учета позиций предполагается использовать для тестирования.
В данном поле указывается, каким образом будет учитываться текущая незафиксированная прибыль/убыток в свободной марже:
В данном поле указывается, каким образом будет учитываться прибыль/убыток, зафиксированный трейдером в течение торгового дня, в свободной марже:
Этот раздел предназначен для того, чтобы дать пользователю контроль над процедурой взимания комиссии с каждой из торговых операций:
При включении опции «Использовать свои настройки комиссии» становятся доступными настройки комиссии текущего торгового счета.
Основной торговый инструмент, на котором осуществляется тестирование или оптимизация, может перенастраиваться пользователем. У него имеется доступ практически ко всем параметрам специфики:
В результате отпадает необходимость в создании пользовательского символа и загрузке в него истории, чтобы проверить советник в других торговых условиях. Достаточно просто выполнить смену настроек стандартного инструмента.
Если спецификация символа изменяется, то на иконке настроек (как и на иконке собственного символа) в списке появляется звездочка. Благодаря этому пользователь всегда понимает, что для тестирования применяются пользовательские настройки.
Для этого достаточно выполнить клик с помощью кнопки «Старт», которая находится во вкладке «Настройки». Слева пользователь увидит, как осуществляется запуск оптимизации.
Просмотр подробных результатов по каждому отдельному проходу доступен на вкладке «Оптимизация». Здесь можно ознакомиться с общими результатами тестирования:
Для получения подробной информации достаточно перейти в раздел «Отчет о тестировании».
Имеется возможность сортировки отчета об оптимизации по любому параметру. Для этого достаточно навести курсор на заголовок колонки и выполнить клик. При желании пользователь может не только найти приносящую наибольшую прибыль комбинацию параметров, но и запустить ее в режиме одиночного тестирования, чтобы получить более подробный отчет.
Показатели, выводимые для каждого отдельного прохода оптимизации:
Коэффициент Шарпа — данный показатель характеризует эффективность и стабильность стратегии. Он отображает соотношение среднеарифметической прибыли за время удержания позиции к стандартному отклонению от нее. В дополнение: здесь учитывается значение безрисковой ставки, являющейся прибылью по вкладу соответствующей суммы на банковский депозит.
Оптимизируемый(е) параметр(ы) — в дополнение к общим статистическим показателям здесь отображаются значения входных переменных, установленные для данного прохода.
Команды контекстного меню позволяют скрывать или показывать некоторые из перечисленных в таблице столбцов. Чтобы работать было удобнее, включается опция «Автопереключение на результаты». В итоге, как только завершится оптимизация, будет выполнено автоматическое переключение тестера стратегий на вкладку результатов. Имеется подобная команда и в контекстном меню, которое открывается после активации вкладки «Журнал».
Благодаря фильтрам пользователь может оперативно скрыть имеющиеся в списке неудачные проходы, в которых:
Для удобства выполнения визуального анализа проходов принято окрашивать результаты оптимизации в следующие цвета:
Кэш содержит информацию о проходах оптимизации, которые были просчитаны ранее. Тестеру стратегий она нужна, чтобы оптимизация возобновлялась после паузы без пересчета уже рассчитанных проходов тестирования.
Кэши оптимизации, которым придан вид бинарных файлов, хранятся в папке \Tester\cache. Название файлам дается согласно следующему правилу: ExpertName.Symbol.Period.StartDate.EndDate.GenerationModeOptimizationMode.Hash.opt.
Здесь:
Наличие кэш-файлов всегда позволяет ознакомиться с результатами оптимизации, которые были получены ранее. Для этого необходимо открыть вкладку «Результаты оптимизации», выбрать эксперта, а также файл, содержащий кэш оптимизации:
Список содержит полный набор файлов кэша оптимизации, имеющихся на диске эксперта, который был выбран. Здесь пользователь увидит следующие данные:
Дополнительно предоставляется функция фильтрации результатов оптимизации с учетом торгового сервера, с которого их получили.
Также доступно изменение критерия оптимизации, который был установлен перед запуском. Он отображается в колонке «Результат» и определяет качество тестируемого набора входных параметров. Между значением критерия оптимизации и оценкой результата тестирования с конкретным набором параметров имеется прямая связь: чем больше значение первого, тем выше второй показатель. Чтобы тестер в автоматическом режиме пересчитал все имеющиеся в колонке «Результат» значения, надо выбрать соответствующий критерий в списке из верхней части вкладки.
При использовании сторонних программ (например Office Excel) возможно сохранение отчета оптимизации в виде файла. Для этого надо перейти в контекстное меню и выбрать команду «Экспортировать в XML». Там же содержатся команды, позволяющие как экспортировать, так и импортировать кэш-файлы. Их лучше применять в тех случаях, когда необходимо перенести результаты оптимизации с одной платформы на другую.
У тестера стратегий в торговой платформе имеется мощная система, позволяющая визуализировать результаты оптимизации. Для этого необходимо перейти на вкладку «График оптимизации», в которой имеется доступ к нескольким видам графиков – для переключения между ними следует воспользоваться контекстным меню.
Нулевая линия (плоскость)
Отображение нулевой линии имеется на каждом из существующих видов графиков. Исключение составляет только плоский, на котором отображается плоскость, если график трехмерный. Когда значение баланса является критерием оптимизации, данной линией обозначается размер начального депозита. Благодаря этому визуально отделяются прибыльные проходы от убыточных. Все остальные случаи подразумевают использование нулевого значения критерия оптимизации для рисования данной линии.
Для открытия графика, отображающего результаты оптимизации, не надо предпринимать никаких действий, так как это происходит по умолчанию.
Для отображения каждого прохода эксперта, имеющего определенные входные параметры, используется точка.
Горизонтальная ось графика используется для отметки номера прохода, а вертикальная – для значений параметра, являющегося критерием оптимизации.
В зависимости от того, какое значение имеет критерий оптимизации, для раскраски графика применяются цветные градиенты начиная с зеленого и заканчивая красным.
Линейный график (1D) используется для отображения параметра. По вертикальной оси выбирается критерий оптимизации, а по горизонтальной – один из оптимизируемых параметров, выбранный для отображения на этой оси. Используя команду «Ось X» из контекстного меню, пользователь выбирает, какой параметр будет отображаться на горизонтальной оси.
Если выбрано двухмерное отображение, то на каждой оси откладываются изменения, произошедшие в параметрах, выбранных перед оптимизацией. Для отображения изменений критерия оптимизации используются цветовые градиенты. Более высоким значениям критерия оптимизации соответствует более насыщенный цвет.
Когда выбирается трехмерный режим просмотра, для отметки изменений, имеющих место в выбранных параметрах, используются оси X и Y, а на вертикальной оси Z отображаются критерии оптимизации. Через команду «Ось X» и «Ось Y» пользователь может выбрать параметры для отображения на вертикальной и горизонтальной осях.
3D-графиком можно управлять с помощью мыши:
Управление 3D-графиком при помощи клавиатуры:
Когда говорят о форвард-тестировании, подразумевают проведение повторного прогона самых хороших результатов оптимизации применительно к другому временному периоду. Проведение форвард-тестирования делает невозможной подгонку параметров советников на конкретных участках исторических данных.
Алгоритм включения форвард-тестирования – вкладка «Настройки» => поле «Форвард-период» => указание той части общего периода, для которого должна быть применена проверка:
В поле «Использовать дату» от выбранного периода надо отделить выбранную часть:
Период бэк-тестирования используется для проведения полной оптимизации советника (медленной или быстрой). После этого выполняется отбор лучших прогонов:
И именно их тестируют на форвард-периоде.
Установлен нижний предел для числа прогонов форвард-тестирования:
При использовании генетической оптимизации для форвард-проходов рекомендуется привлечение всех уникальных результатов.
Для просмотра результатов оптимизации на форвард-периоде пользователю достаточно перейти на вкладку «Форвард-оптимизация» или «Оптимизация». В последнем случае в контекстном меню выбирается пункт «Результаты форвард-тестирования». От того, насколько часто будут совпадать результаты, напрямую зависит, сможет ли советник показать хороший результат в реальной торговле.
Чтобы иметь возможность визуально представить результаты оптимизации на форвард-периоде, достаточно перейти на вкладку «График форвард-оптимизации». Доступно также сравнение с бэк-тестом, для чего предусмотрено переключение между ними с использованием контекстного меню.
Для того чтобы задействовать все доступные ресурсы компьютера, рекомендуется использование многопоточного тестера. С этой целью на ПК необходимо установить в виде серверов специальные вычислительные агенты, работающие независимо. Это позволяет параллельно проводить вычисления проходов оптимизации.
Агенты бывают трех типов:
Их количество напрямую зависит от мощности процессора на компьютере. Для выбора агента, который будет использоваться в процессе оптимизации, надо зайти в раздел «Агенты» в тестере стратегий.
На что нужно обратить внимание:
Порой даже установка на компьютер многоядерного процессора не способствует многократному увеличению количества параллельно выполняемых заданий. С помощью тестера стратегий имеется возможность создания в локальной сети собственной вычислительной фермы агентов.
Агенты устанавливаются на всех компьютерах, подключенных к локальной сети. Если это сделано ранее, то для открытия менеджера агентов тестирования надо зайти в меню «Сервис».
Чтобы произвести установку «с нуля», после закачки приложения MetaTrader 5 Strategy Tester Agent необходимо выполнить простую инструкцию:
Когда процесс установки будет завершен, ими можно будет пользоваться с любого компьютера, подключенного к локальной сети.
После открытия тестера стратегий выполняется переход на вкладку «Агенты», где выбирается пункт «Local Network Farm» и выполняется клик кнопкой «Добавить».
Проще и быстрее добавление осуществляется посредством автоматического сканирования портов и локальной сети по диапазону IP-адресов. Их указывают вместе с паролем, позволяющим подключиться к агентам.
После нажатия кнопки «Готово» можно будет тестировать все найденные агенты.
Имеется еще несколько вариантов, позволяющих добавить агентов:
Если для установки агентов на компьютер была использована MetaTester 5 Agents Manager, то они могут быть подключены как удаленные на этом же ПК. При наличии некоторого запаса мощности появляется возможность увеличения нагрузки и использования всего вычислительного потенциала.
Чтобы изменить настройки агента, в его контекстном меню активируется команда «Редактировать».
В окне, предназначенном для настроек, имеются следующие поля:
Локальные агенты могут быть только включены или выключены.
В платформу заложена возможность импортировать и экспортировать настройки внешних агентов в тестовые файлы с целью облегчения этого процесса. У файлов настроек агентов имеется расширение *.mt5. Местоположение команд импорта и экспорта – вкладка «Агенты».
Формат файла настроек агентов: Name;Address:port;Password;Description;Enable.
Он имеет следующие обозначения:
Для отделения настроек разных агентов используется перевод строки.
При использовании MQL5 Cloud Network (сеть облачных вычислений) появляется возможность ускорить проведение оптимизации советника. Это достигается за счет использования мощностей большого количества компьютеров.
С помощью сети осуществляется объединение удаленных агентов, а также распределение задач оптимизации между ними. Для подключения тестера стратегий к облачной сети используется несколько точек доступа, при расстановке которых учитывается территориальный принцип.
При работе с MQL5 Cloud Network нужно учитывать следующие моменты:
Агентами сети MQL5 Cloud Network не получится воспользоваться бесплатно. Чтобы ознакомиться с формулой расчета стоимости, следует перейти в отдельный раздел сайта cloud.mql5.com. Для отображения величины текущего баланса аккаунта MQL5.community выделено место выше списка облачных агентов.
Использование MQL5 Cloud Network возможно, если на счету аккаунта MQL5.community не меньше $1. Пользователь должен быть готов заплатить за услуги по пакетной раздаче заданий на некоторое количество точек доступа.
Важно учитывать, что у сети нет возможности заблаговременно вычислить необходимое количество времени и ресурсов, которые потребуются, чтобы рассчитать эти задания.
Для задействования агентов сети надо перейти в контекстное меню и активизировать команду «Включить». Если отсутствует информация о наличии аккаунта на MQL5.community, пользователю будет предложено внести ее.
Если ранее не была пройдена регистрация, нужно перейти по ссылке www.mql5.com, чтобы создать новый аккаунт.
Как и в случае с обычной оптимизацией, после указания требуемых настроек тестирования, а также входных параметров эксперта, нужно активировать кнопку «Старт». Далее во вкладке «Агенты» можно контролировать процесс раздачи заданий от тестера стратегий к доступным агентам. Здесь отображается количество не только доступных агентов, но и тех, которые задействованы на текущий момент.
Иногда у трейдеров возникает необходимость в проведении оптимизации по нескольким десяткам или сотням тысяч проходов в определенное время. Использование многопоточного тестера стратегий и облачной сети MQL5 Cloud Network дает возможность на протяжении одного часа произвести вычисления, которые можно выполнить самостоятельно только за несколько дней. Доступ к вычислительной мощности нескольких тысяч ядер имеется в торговой платформе.
В тестере стратегий можно пользоваться двумя режимами оптимизации. Чтобы сделать выбор между ними, необходимо перейти по вкладке «Настройка».
Выбор данного режима позволяет полностью перебрать все возможные комбинации значений входных переменных, выбранных для оптимизации. Чтобы это сделать, необходимо перейти по соответствующей вкладке.
Считается, что результаты, полученные таким методом, более точные. Но для того чтобы прогнать советника по каждой комбинации параметров, может потребоваться довольно много времени.
Особенность этого метода заключается в том, что для подбора самых оптимальных значений входных параметров используется генетический алгоритм. Он не уступает предыдущему качественно, но его применение позволяет ускорить выполнение полного перебора параметров.
Генетический алгоритм позволяет выполнить за короткий промежуток времени объем работы, на выполнение которого методом полного перебора понадобится несколько дней (а иногда и недель).
У каждой особи имеется конкретный набор генов, соответствующий ее параметрам. Краеугольным камнем генетической оптимизации является принцип непрерывного отбора наиболее «адаптированных» параметров – значений, позволяющих в итоге получить самый хороший результат.
Общий вид алгоритма можно описать следующим образом:
Наилучшим результатом среди потомков считается тот, который лучше самого хорошего результата родителей. Все вышеназванные операции не прекращаются до достижения оптимального результата.
За счет снижения суммарного числа проходов при генетической оптимизации увеличивается общая скорость процесса. При уже запущенной генетической оптимизации выполняется переход на вкладку «Настройки», где указывается оценочное число запланированных проходов тестирования. Для его расчета используется формула, в которой:
Тестирование заканчивается, если не наблюдается улучшения на оговоренном количестве поколений.
Это название показателя, значение которого определяется качеством тестируемого набора входных параметров. Чем он больше, тем выше оценка результатов тестирования с определенным набором параметров. Чтобы выбрать данный показатель, надо перейти на вкладку «Настройки», где он находится правее поля «Оптимизация».
Необходимость в критерии оптимизации возникает только при использовании генетического алгоритма.
Имеется доступ к следующим критериям оптимизации:
Кроме того, имеется «Максимум комплексного критерия», являющийся комплексным, интегральным показателем качества прохода тестирования.
В нем одновременно учитываются следующие параметры:
Благодаря этому критерию на основе комплексного анализа появляется понимание того, что один завышенный параметр – не всегда оптимальный вариант. Его использование делает возможным выбор наилучших проходов:
Результатом оптимизации становится получение самых хороших проходов по каждому параметру, из которых можно выбрать наиболее привлекательный на текущий момент.
Отличительной чертой этого режима оптимизации является возможность испытания советника, когда используются одинаковые входные параметры, но различные символы. При любом проходе оптимизации изменения касаются исключительно основного символа тестирования советника. Проще говоря, речь идет о символе на графике, к которому прикреплялся советник.
Оптимизация осуществляется на символах, выбранных на конкретный момент в разделе «Обзор рынка». Следовательно, можно управлять оптимизацией, регулируя набор отобранных символов.
Чтобы правильно провести настройку и проверку советников, нужно использовать тики. Именно их данные применяет автоматическая программа. Настройка и проверка проводится как на реальных показателях с биржи, так и на данных, сгенерированных случайным образом аналитиком стратегий на базе минутных результатов.
Для максимально эффективной работы используют реально существующие данные (тики). Потому что все условия приближены к настоящим торгам.
Данные, созданные случайным образом на коротких промежутках или так называемых минутных тиках, считаются менее эффективными для оптимизации работы, так как они крайне скудны.
Реальная работа на торговых площадках показывает, что все может измениться в течение одной минуты, следуя за медвежьим или бычьим трендом. Тогда как случайная генерация на минутном тике фиксирует ситуацию на торговой площадке в соответствующем баре.
Причем цена фиксируется исходя из биржевых показателей, при этом реальной покупки не происходит. Когда ведется работа с реальными данными, расчет идет исключительно по последней завершенной покупке – Last. Хотя само событие OnTick фиксируется в любом случае, даже если сделка (Last) не была совершена.
Нужно помнить, что построение графика всегда идет не от цен Bid и Ask (хотя именно по ним совершаются покупки на торговой площадке) – график строится по цене Last. И как результат, если идет команда по цене (Last), эксперт откроет позицию в зависимости от бычьего или медвежьего тренда, по ценам Bid или Ask. Разумеется, и купля-продажа будет осуществляться по этим ценам.
При использовании режима генерации «Все тики» бары строятся по ценам Bid, а сделки совершаются по Bid и Ask. Рассчитывается цена покупки, берется наилучшее предложение о покупке актива другими пользователями, и к данной цене прибавляется разница между ценой покупателя и продавца, или Spread. В итоге формула выглядит следующим образом:
Ask = Bid + Spread (минутного бара).
Когда в истории сделок еще нет минутного бара, но имеется его символ, настройки сами сформируют цену исходя из истории символа (когда запущен режим «Все тики»).
Данная конфигурация поможет проверить советник даже когда у брокера неполные тиковые данные. Напротив, даже наличие данных минутного бара без символа приводит к полному игнорированию всех тиковых, а приоритет отдается минутным данным.
Информация по тикам – размер и так называемый вес – значительно серьезнее и больше минутных данных. Именно по этой причине аналитика данных (особенно при первом запуске) занимает очень много времени. Потому что ТКС хранит информацию за несколько месяцев торговых операций в каталоге \bases\[имя торгового сервера]\ticks\[имя символа]\.
Чтобы правильно провести проверку настройки советников, требуются данные тиков, которые использует конкретный советник. Настройка и проверка проводится как на реальных данных с биржи, так и на сгенерированных случайным образом на базе минутных данных.
Аналитический советник стратегий формирует тиковые показания на базе домашнего каталога минутных записей в целочисленном формате. Проще говоря, программа берет показания из истории операций на бирже и, переведя в целочисленный формат, ускоряет свои собственные вычисления.
Тестер стратегий содержит несколько различных режимов генерации тиков. И вариант «Все тики» самый точный из них.
Создаются различные тики в зависимости от разницы показаний тикового объема:
Тиковый объем = 1
Когда показания тиков равны единице, создание тиков не производится. И фиксируется тик, равный показаниям цены по закрытии сделки:
Тиковый объем = 2
Когда ситуация на бирже схожая и бар имеет показания всего двух тиков, тестер действует в аналогичном режиме и не создает новых тиков. Программа просто фиксирует показатели открытия сделки на бирже по стартовой цене Open, а затем проводит фиксацию завершенной сделки, отмечая цену по завершении или Close на бирже.
Выглядит это так:
Тиковый объем >= 3
Ситуация резко меняется для баров с тремя и более тиками. В этих случаях создаются различные графики тиков – в зависимости от их количества.
Разумеется, когда в баре присутствует три или больше тика, создаются различные схемы. В частности, тестер формирует 4 графика.
В первом случае первоначальная стоимость на бирже менялась в сторону медвежьего или бычьего тренда, но восстановилась на стоимости открытия. Как результат, у так называемого бара имеется как наибольшая цена (High), так и самая низкая (Low).
На графике это отображается следующим образом:
Во втором случае стоимость начала торгов на бирже менялась в сторону повышения (или понижения) и в конце дня ушла значительно выше (или ниже) стоимости открытия. Тогда будет иметь место или наивысшая, или минимальная цена (на биржевом сленге – High/Low) – в зависимости ситуации на рынке. Надо помнить, что цена открытия и цена закрытия торгов не равны.
На графике будет следующая картина:
Третий вариант развития событий: стоимость на бирже при начале торгов менялась, но на конец завершения торгов так и не вернулась к исходной позиции.
На графике будет следующая ситуация:
Четвертое значение – стоимость только росла или, наоборот, падала. При этом не имелось обратных всплесков, был только бычий или медвежий тренд. Тогда по завершении торгов бар не имеет наивысшей или наименьшей стоимости (High/Low).
На графике это отображается таким образом:
Разумеется, создание тиков зависит от опорных точек. Максимальное их число – 11. Цена открытия Open не входит в подсчет количества опорных точек, так как с нее начинается движение.
Опорные точки всегда разделены на три основные группы:
При этом есть прямая зависимость от количества тиков, и выглядит это так:
Если у свечи отсутствует какая-либо из теней, то опорные точки соответствующей тени отдаются размаху свечи.
Когда свеча не имеет одной из теней, то увеличивается размер свечи по причине передачи опорных точек. Размеры же «свечки» всегда определяются только по нечетному количеству опорных точек.
Разумеется, бывают случаи, когда в размере участвует четное количество точек. Это решается крайне просто:
Существует так называемое идеальное распределение опорных точек, которое зависит от цены начала торгов на бирже. Для вычисления распределения точек 3-5-3 используют определенные формулы.
Бычья свеча:
Медвежья свеча:
Свечи «Дожи»
В тех случаях, когда появляется свеча «Дожи» (Close = Open), необходимо проверять предыдущую свечу. Если она была нисходящей, то текущую нужно считать восходящей, и наоборот.
Тени с тремя точками
Бывают случаи, когда тень формируется на трех опорных точках, а значения и размера тени равны. Это может произойти, если open и low или open и high отличаются не более чем на 2 пункта. То есть шаги цены вперед и назад соответствуют друг другу.
Тогда формирование тени происходит так:
Медвежья свеча
Бычья свеча
Точно так же формируется и завершающая тень.
Тени с двумя точками
В тех случаях, когда тень формируется из двух опорных точек, тоже происходит соответствующая генерация.
Медвежья свеча
Бычья свеча
Точно так же формируется и завершающая тень.
Размах свечи
Размах свечи создается на циклических волнах.
Например, когда Prev равен Low, то есть предшествующий курс – это и есть Low, то применяется такой цикл:
Когда Prev равен High, то есть предшествующий курс – это и есть High, то применяется такой цикл:
Где:
N1, N2 – это опорные точки в цикле;
Prev – предшествующий курс;
Step – величина шага.
Шаг рассчитывается по такому алгоритму: (H — L — 1)/(Количество циклов) + 1.
При этом количество циклов рассчитывается по такой формуле: (Количество опорных точек в размахе + 1)/2.
Существуют также определенные правила для генерации промежуточных тиков между точками опоры:
В интерфейсе тестера есть настройки, которые позволяют подобрать метод режима генерации тиков.
Здесь доступны такие варианты:
«Все тики»
Как понятно из названия, работают не только OHLC, но и «промежуточные». Метод генерации для такого случая рассмотрен выше.
OHLC на M1
Из названия и описания принципов работы выше очевидно, что работа происходит только с минутными OHLC тиками.
Выбор этого режима не означает, что тестирование или оптимизация будет проводиться с периодом М1. Котировки будут формироваться на каждом минутном баре для значений Open, High, Low и Close.
При этом событие OnTick тоже нужно запускать четыре раза в минуту:
По факту курсы OHLC есть в исторических котировках. То есть при тестировании создается только время прихода тиков Open, High, Low и Close. И курсовые показатели берутся из истории.
Только цены открытия
Данный режим работы предполагает возможность без задержек по времени провести проверку работы советника. Однако могут срабатывать некоторые ордера не по заявленной стоимости.
И здесь есть ряд ограничений:
Поэтому оптимальным решением будет использовать режим «Все тики», но это замедлит работу советника.
Математические вычисления
При таком режиме работы все поля становятся неактивными, кроме следующих:
Однако генетический алгоритм позволяет очень быстро закончить поиск экстремума.
Суть оптимизации заключается в последовательных прогонах конкретного советника с различными входными параметрами на одних и тех же данных. Имеется возможность подбора таких параметров, которые поднимают эффективность советника до максимально возможного уровня. У терминала есть штатные средства, использование которых делает этот процесс автоматическим.
Перед началом оптимизации характеристик советника выполняется настройка. Она происходит по следующему алгоритму:
Чтобы тестировать и оптимизировать советники, в терминале имеется окно, предназначенное специально для этой цели. Оно так и называется – «Тестер». В нем нужно перейти во вкладку «Настройка» для выполнения всех вышеперечисленных настроек.
Эксперт, показатели которого нуждаются в оптимизации, находится в поле окна «Тестер – Советники». Но выбран может быть не любой файл советника, а лишь тот, к которому имеется доступ в терминале клиента. Чтобы они там оказались, их необходимо скомпилировать и сохранить в папке /EXPERTS.
После того как выбран советник, проводится дополнительная настройка и задаются входные параметры. Делается это путем активации кнопки «Свойства эксперта».
В результате данного действия открывается новое окно с тремя вкладками:
Данная вкладка применяется для задания таких общих характеристик оптимизации, как объем и валюта стартового депозита. Для их размещения имеются поля с аналогичными названиями. Кроме того, эта вкладка нужна, чтобы выбрать тип открываемых позиций:
Вне зависимости от алгоритма советника он будет открывать позиции только в направлениях, которые были выбраны.
Параметр, нуждающийся в оптимизации, является показателем, значение которого используется для определения качества тестируемого набора входных характеристик. Чем выше уровень критерия оптимизации, тем лучшую оценку получает результат тестирования.
Перечень параметров, доступных для оптимизации:
Для размещения всех входных характеристик здесь также используется таблица. Под термином «входные характеристики» подразумеваются переменные, оказывающие влияние на функциональность эксперта. Для того чтобы их изменить, достаточно наличия клиентского терминала. Но при этом нет потребности в изменении кода эксперта. Возможны вариации числа входных переменных от одного эксперта к другому.
Чтобы задать входные параметры советника для оптимизации, используются следующие поля:
Левее строки с названием переменных ставится галочка, после чего параметр включается в оптимизацию.
При проведении оптимизации не происходит изменения значения, а потому применяется параметр, внесенный в поле «Значение». В прямой зависимости от этих характеристик находится количество прогонов. Не существует зависимости оптимизации советника от данных, внесенных в поле «Значения», так как потребность в них возникает только при его тестировании.
Предусмотрена возможность загрузки набора входных характеристик, которые уже сохранены («Старт», «Шаг», «Стоп» не являются исключением). Для этого нажимается кнопка «Загрузить» и выбирается набор параметров, который был предварительно сохранен. Для сохранения существующего набора внешних переменных достаточно активировать кнопку с соответствующим названием.
С помощью этой вкладки появляется возможность управления ограничениями в процессе оптимизации. Когда в ходе конкретного прогона достигается любое из поставленных условий, прогон советника прерывается. Продолжение оптимизации начинается со следующего прогона.
Включение ограничивающего условия выполняется соответствующей галочкой левее его. Двойной клик левой клавишей мыши на поле «Значение» позволяет внести изменения в имеющуюся характеристику. Для этого нужно нажать клавишу «Enter» после введения нового значения.
Ограничивающие параметры:
Выбора советника и надлежащей его настройки недостаточно для начала тестирования. Требуется также определиться с финансовым инструментом и таймфреймом (периодом), на протяжении которого будет проводиться тестирование. Эти данные тоже используются в процессе тестирования, для проведения которого доступен выбор одного из инструментов, имеющихся в терминале. Кроме того, можно применять внешние файлы данных.
Директория /TESTER используется для записи файлов исторических данных, имеющих формат *.FXT и используемых в тестировании. Создание этих файлов при проведении тестирования происходит автоматически, когда выбран инструмент, имеющийся в терминале.
Для задания финансового инструмента используется поле «Символ», а для задания таймфреймов – поле «Период». При обнаружении факта отсутствия файла данных по конкретному инструменту, методике моделирования и периоду происходит автоматическое его создание. Если исторические данные, относящиеся к инструменту и периоду, отсутствуют, то тестером автоматически скачиваются 512 заключительных баров истории.
Наличие какой-либо информации далее 512 баров приведет к тому, что автоматически скачаются исторические данные до крайнего из имеющихся баров. В результате велика вероятность существенного увеличения показателя потребления трафика.
Исторические данные в терминале сохраняются только как бары, представляющие собой записи, имеющие вид OHLC. Используются такие данные, если выполняется моделирование динамики цен, когда оптимизируется советник. Иногда имеющихся данных недостаточно для тестирования или оптимизации.
Так, например, в качестве причины, спровоцировавшей срабатывание советника, могут выступить дневные данные по колебанию цен в пределах бара. И это при том, что срабатывания может и не произойти в процессе оптимизации. Проще говоря, если советник оптимизируется, основываясь исключительно на одних барах, то цель может быть неточной. В результате создается ложное представление о том, насколько эффективен эксперт с определенным набором параметров.
С помощью терминала можно оптимизировать советник, используя разнообразные методы, позволяющие моделировать исторические данные. При этом появляется возможность получить более точную эмуляцию динамики изменения цен. При использовании не очень крупных временных отрезков исторических данных доступно получение представления о колебаниях цен в пределах баров.
Например, когда оптимизация советника осуществляется на почасовых данных, основой для моделирования динамики изменения цен внутри бара могут стать минутные данные. Результатом этого становится повышение достоверности оптимизации советника, что объясняется существенным приближением исторических данных к реально существующим колебаниям цен.
В процессе настройки оптимизации доступен выбор одного из нижеперечисленных методов, позволяющих моделировать исторические данные.
Для некоторых механических торговых систем свойственно не иметь зависимости от моделирования внутри бара, так как в них для торговли используются сформировавшиеся бары. О полном формировании текущего ценового бара сигнализирует появление следующего. Данный режим моделирования рассчитан именно на них.
Здесь сначала происходит моделирование открытия бара (Open = High = Low = Close, Volume=1). Благодаря этому эксперт получает возможность выполнить точную идентификацию окончания формирования предшествующего ценового бара. Зарождающийся бар дает старт тестированию эксперта.
На следующем шаге выдается полностью сформированный текущий бар, но для тестирования он не используется.
Применяются контрольные точки с использованием фрактальной интерполяции и ближайшего таймфрейма. Когда имеется необходимость в приблизительной оценке экспертов, использующих для торговли внутреннее пространство бара, прибегают к методу, позволяющему моделировать контрольные точки.
Для этого необходимо, чтобы в наличии были исторические данные самого близкого наименьшего периода (таймфрейма). Чаще всего имеющейся в наличии информации недостаточно для покрытия временного диапазона тестируемого таймфрейма.
В такой ситуации для осуществления генерации развития бара берутся цены закрытия двенадцати предшествующих баров. В этом и заключается суть фрактальной интерполяции. С появлением исторических данных меньшего таймфрейма осуществляется применение фрактальной интерполяции уже к означенным данным. Однако необходимость в использовании двенадцати баров отпадает, и задействуются только шесть.
Происходит воспроизведение реально существующих цен Open, High, Low, Close, а также еще двух сгенерированных цен. Их местоположение и значение находятся в зависимости от того, как движутся цены на шести предыдущих барах.
В качестве основы используются все наименьшие доступные периоды с фрактальной интерполяцией каждого тика.
Использование этого режима делает возможным моделирование движения цен внутри бара. В отличие от предыдущего метода, в данном случае генерация осуществляется с использованием не только данных самого близкого меньшего таймфрейма, но и всех других, к которым имеется доступ.
Когда какой-либо временной диапазон обладает данными более чем одного таймфрейма, в процесс генерации запускаются только данные наименьшего таймфрейма. Так же, как и в предыдущем методе, фрактально генерируются контрольные точки.
С помощью фрактальной интерполяции также выполняется генерация движения цены между выбранными для контроля точками.
Не исключается ситуация, при которой имеет место генерация нескольких тиков подряд. Тогда выполняется фильтрация дублирующих котировок с последующей фиксацией объема последней из них.
У сгенерированных потиковых данных может быть очень большой объем. Это может оказать влияние на потребляемые ресурсы ОС и скорость тестирования.
Цены Bid сохраняются в истории ценовых данных (клиентский терминал). Тестер стратегий при моделировании цен Ask по умолчанию использует текущий спред инструмента на момент запуска оптимизации. Но у пользователя имеется возможность задать собственное значение спреда для оптимизации. Чтобы это сделать, ему достаточно перейти в поле «Спред».
Диапазон дат делает возможным тестирование советника не на всех имеющихся данных, а только на том временном отрезке, который был выбран. Это создает удобства, когда в исследовании нуждается отдельная часть исторических данных. Использование ограниченного диапазона возможно не только когда тестируется эксперт, но и когда выполняется генерация текущей последовательности баров.
Зачастую в генерировании данных всей истории нет необходимости. В большой мере это относится к потиковому моделированию, при котором бывают чрезвычайно большие объемы неиспользованных данных. По этой причине не осуществляется генерация баров, выходящих за пределы заданного диапазона, если включена возможность использования диапазона дат при изначальной генерации тестирующей последовательности.
Их просто переписывают в выходную последовательность, при этом не происходит исключения данных из последовательности, так как это помешало бы правильному подсчету индикаторов на всей полученной истории. Однако генерация первых ста баров не выполняется – вне зависимости от заданного диапазона дат.
Для запуска ограничения по датам ставится галочка в графе «Использование дат» и вписываются необходимые значения в поля «От» и «До». После выполнения всех настроек активируется кнопка «Старт», которая запускает тестирование.
Чтобы определиться, через какое время завершится процесс, достаточно посмотреть в нижнюю часть окна.
Оптимизация советников результаты
После завершения процесса оптимизации можно перейти во вкладки «График оптимизации» и «Результаты оптимизации» для просмотра результатов.
Оптимизация отличается от тестирования тем, что она предполагает многократное выполнение прогонов МТС (механическая торговая система). При этом можно использовать различные входные характеристики. Цель этого действия заключается в определении характеристик советника, которые позволят ему достичь максимального уровня прибыльности.
Для проведения оптимизации нужно выставить флажок с таким же названием во вкладке для настройки тестирования и активировать кнопку «Старт». Результатом этих действий станет появление в окне двух новых вкладок:
Вторая содержит отчеты по каждому из осуществленных прогонов, тогда как в «Результатах тестирования» публикуется перечень всех операций.
Для удобства пользователей вся информация выводится в виде таблицы, в которой имеются поля со следующими названиями:
Выполнив клик левой клавишей мыши и наведя курсор на заголовок нужного столбца, пользователь может выполнить сортировку имеющихся в таблице данных как по возрастанию, так и по убыванию. Когда выполняется команда из контекстного меню, в качестве базовых входных переменных эксперта записываются данные выбранного прогона. При этом после перехода во вкладку «Настройки» отключается режим оптимизации.
После активации кнопки «Старт» становится доступным тестирование советника, при этом используются выбранные входные переменные. Получить доступ можно также наведением курсора на строку прогона (имеющуюся во вкладке результатов оптимизации) и выполнением двойного клика левой клавишей мыши. Использование сочетания клавиш Ctrl+C (либо команды «Копировать») в контекстном меню позволяет выполнить их копирование в буфер обмена (после выделения строк результатов). В дальнейшем они могут использоваться в иных приложениях.
Отсутствие выделенных строк служит командой для копирования в буфер обмена всей таблицы. Это действие также может быть выполнено выбором команды «Копировать все».
Для сохранения на жестком диске отчета результаты оптимизации должны иметь HTML-формат. Делается это путем использования команды из контекстного меню «Сохранить как отчет».
Список других команд для настройки отображения результатов из контекстного меню:
Автоматическое отображение графика прибыли каждого из выполненных прогонов осуществляется во вкладке «График оптимизации». С его помощью пользователь может дать оценку прибыльности применения разнообразных комбинаций входных характеристик.
Нижняя часть отведена для графика, на котором отображается число сделок по ходу каждого прогона:
Если выполнить двойной клик левой клавишей мыши в выбранной точке на графике, происходит переключение во вкладку «Результаты» и выбирается соответствующий прогон.
Для копирования в буфер обмена изображения графика следует использовать сочетание клавиш Ctrl+C (либо команду контекстного меню «Копировать»), после чего его можно использовать в иных приложениях. Кроме того, с помощью сочетания клавиш Ctrl+S (либо команды контекстного меню «Сохранить как рисунок») график в виде GIF-файла сохраняется на жестком диске.