Немного теории
Как известно, многие автоматические торговые системы имеют склонность к подгонке, т.е. очень хорошо оптимизируются на некотором участке исторических данных, но если поставить эту самую оптимизированную систему торговать на демонстрационный или реальный счет, то она может оказаться убыточной, т.к. торговые сигналы окажутся близкими к случайным. Причиной этому является нестационарность финансовых инструментов, т.е. нестабильность их статистических характеристик.
Чтобы выявить вероятность подгонки под исторические данные, существует так называемый классический форвардный тест о котором можно узнать, если ознакомиться с книгой Роберта Пардо [1]. Суть классического метода заключается в том, что для торговой системы мы берем два непересекающихся участка исторических данных. На одном из них проводим оптимизацию ТС, а на втором прогоняем форвардный тест с оптимизированными на предыдущем этапе входными параметрами. Если тестирование на втором - форвардном участке исторических данных окажется неуспешным, то предполагается, что торговая система склонна к подгонке и непригодна для автотрейдинга. Если же форвардный тест даст положительный результат, то проводится дополнительный анализ поведения торговой системы на этом самом тестируемом участке, с целью выявления его характеристик.
Суть в том, что торговая система, способная пройти все тесты, изложенные в книге Роберта Пардо [1], практически не существует в природе. Поэтому автор и не приводит ни единого конкретного примера. Как сама методика оптимизации на одном участке и форвардного тестирования на втором, так и последующий анализ результатов форвардных тестов, никаких гарантий не дают:
Поскольку классический метод отбраковки торговых систем обладает множеством недостатков, мною был разработан и протестирован другой, более надежный метод, названный Gold Dust - золотоносный песок.
Отличия нового метода от классического в том, что оптимизация торговой системы проводится не на единственном участке, а на двух или более. В результате мы получаем различные наборы параметров ТС для каждого участка, часть из них будет совпадать, а другая часть разниться. Возможно, что часть этих наборов параметров являются подгоночными, а часть не являются. Выяснить это можно опять же с помощью форвардного тестирования.
Но форвардный тест отличается от классического тем, что он проводится не по единственному набору параметров ТС, выявленных при оптимизации, а по двум или более. Суть в том, что если ТС со всеми наборами параметров дает согласованный торговый сигнал на покупку или продажу, то сделка открывается. Если сигналы рассогласованы, т.е. имеется противоречивость в торговых сигналов ТС для разных наборов параметров, то торговая система ничего не предпринимает до следующего торгового сигнала.
Что это дает?
Здесь уже нужно определиться с робастностью торговой системы. Торговые системы бывают потенциально робастные, т.е. с вероятностью выше нулевой того, что они пройдут форвардный тест в классическом методе и неробастные, т.е. с очень высокой вероятностью подгонки.
Мы не будем здесь рассматривать неробастные торговые системы, поскольку даже если их сигналы фильтровать по согласованности, то результаты на участках, где оптимизация не проводилась, не столь стабильны, чтобы на них торговать. Такие ТС больше подходят для экспериментов.
Сразу перейдем к торговой системе обладающей в той или иной степени робастностью, которая находится в прикрепленном файле. В ее основе заложен прогноз будущего направления движения котировок путем подбора весовых коэффициентов элементарной однослойной нейронной сети – перцептрона на исторических данных, генетическим алгоритмом тестера стратегий, встроенного в торговый терминал MetaTrader.
Методика оптимизации, тестирования и выявления робастности входных параметров торговой системы
Возьмем исторические данные для валютной пары EURUSD за 9 предыдущих месяцев или более на чарте с таймфреймом H1. Разобьем их на три независимых участка по три месяца. Первый участок оставим для окончательного теста, а два остальных для подгонки под историю. Чтобы не гонять торговую систему по отдельности, я сразу же объединил два перцептрона в одной торговой системе.
А для раздельного тестирования и оптимизации в коде советника есть функция-переключатель Supervisor() с помощью которой торговая система имеет три режима работы в зависимости от входного параметра pass:
Подгоняемыми под исторические данные являются весовые коэффициенты перцептронов: x11, x12 … x42, а также p и sl. Входной параметр sl – является константой для всех участков. По этому самому значению выставляются уровни стоплосс для всех открываемых позиций. Еще один входной параметр p – временной период лага для разницы цен открытия, также является константой.
Вход в рынок осуществляется в начале формирования нового бара, т.е. по ценам открытия баров и по показаниям перцептронов в зависимости от значения входного параметра pass, а выход только по срабатыванию стоплосс или тейкпрофит. Оптимизация проводится с помощью генетического алгоритма поиска экстремумов, а в качестве экстремума взят максимум по балансу.
Чтобы алгоритм не заклинивало на маржинколлах во время оптимизации начальную сумму нужно брать очень большую, например, $1000000. Входные параметры: lots - объем открываемых позиций в лотах и mn - уникальный магический номер, чтобы советник не перепутал управление своими (которые он открыл) ордерами с чужими (которые он не открывал).
Если четвертый этап прошел успешно, то мы с высокой долей вероятности можем предполагать, что либо первый, либо второй перцептрон, либо оба сразу могут давать прибыль вне оптимизационных участков, а следовательно их можно использовать в трейдинге. Осталось только определиться, с конкретным перцептроном. Для этого выставляем даты от 9-ти месяцев назад и до сегодняшнего дня и прогоняем тесты советника в режимах 1 и 2.
Тот из режимов, который даст лучшие результаты с максимальной вероятностью является наименее подогнанным и пригодным для трейдинга. Переключаем советник на этот режим, сохраняем параметры настроек советника в файл. После чего ставим советник на чарт, выставляем таймфрейм H1 и загружаем его настройки из ранее сохраненного файла.
Конечно же, для того, чтобы убедиться, что данный метод выявления робастности торговой системы действительно является эффективным, необходимо все участки исторических данных сдвинуть еще на 3 или более месяца вглубь истории, чтобы получить еще один дополнительный участок, являющийся "будущим" по отношению к ним и протестировать на нем выявленный по вышеприведенной методике режим работы ТС - набор входных параметров.
Вполне понятно, что вышеприведенная методика выявления робастного набора параметров торговой системы не является простой. Но в тоже самое время, она гораздо проще и в большинстве случаев надежнее по сравнению с классической методикой, изложенной в книге Роберта Пардо [1], т.к. исключает практически бесполезный и ресурсоемкий анализ ТС после форвардного теста.
Все этапы оптимизации и тестирования торговых систем можно автоматизировать путем вызова терминала MetaTrader из внешних приложений через командную строку с соответствующими параметрами и настройками. В общей сложности автоматизированный метод занимает порядка 15-20 минут времени в зависимости от производительности компьютера. Т.е. переоптимизацию можно проводить в случае необходимости достаточно часто.
Литература:
1. Роберт Пардо. Разработка, тестирование, оптимизация торговых систем для биржевого трейдера (Design, Testing and Optimisation of Trading System). - Минакс, 2002. - 224 с. ISBN 5-902270-01-4
Выгрузка котировок любого инструмента любого ТФ из МТ в csv
Эксперт создавался для выгрузки котировок из МТ в другую программу ТА. Управление экспертом происходит через внешние файлы.
Индикатор группового движения - i_Stocks_OSMA_04
Показывает несколько инструментов в одном окне (разности пар машек).
VR Gap
VR Gap — это автоматизированная торговая система для платформы MetaTrader, основанная на классическом рыночном явлении — ценовых разрывах (гэпах). Стратегия рассчитана на работу на любом таймфрейме и предполагает, что рынок склонен возвращаться к уровням, где произошел резкий скачок цены, с целью «закрытия окна».
Советник Flet Canal
Советник Flet Canal построен на пробое флетового канала.