Дмитрий Власов
Дмитрий Власов личный блог
04 июня 2012, 23:37

Схема генератора МТС и пример создания новой торговой техники

Что-то в последнее время я увлекся теоретическими изысканиями и выкладывал только теоретические посты по программированию торговых стратегий. Но, как известно, теория без практики мертва, а практика без теории слепа. Поэтому, избавившись от слепоты — приступим к оживлению нашей теории.
Сегодня я хочу показать как на практике можно создать новый импульс на вход в позицию и к чему это приведет при наличии отлаженного генератора торговых систем. Сначала о том, что такое генератор торговых систем.
Схема генератора МТС и пример создания новой торговой техники
 
Что такое генератор механических торговых систем
Однажды Сэр Исаак Ньютон сказал: «Если я видел дальше других, то потому, что стоял на плечах гигантов». Совершенно правильный подход признанного гения. Почему бы не применить такой же подход к области трейдинга? Осталось немного — найти «гиганта».
К счастью, я нашел человека, стать на плечи которому можно для того, чтобы попытаться использовать его опыт для своих дальнейших исследований — это Игорь Чечет.

Игорь на своем сайте очень подробно и на мой взгляд очень разумно рассказал всем нам о том, как можно автоматизировать процесс построения торговой системы и из каких блоков должна состоять торговая система.
На мой взгляд, подход очень удобный и наши усилия нужно направить не на то, чтобы плодить бесконечное множество торговых систем, а сосредоточится на создании автономных блоков для построения таких систем.
 
Блоки генератора торговых систем
Перечислю здесь все те блоки, которые нужно анализировать и периодически пополнять:
  1. Техники сопровождения позиции (технология выхода);
  2. Генерация входных сигналов (технология входа);
  3. Фильтры тренда;
  4. Фильтры флета;
  5. Временные фильтры.
Имея в своем распоряжении по несколько проверенных, оттестированных и досконально изученных вариантов торговых техник для каждого из этих блоков — мы сможем достаточно быстро создавать бесконечное множество качественных торговых систем.
К примеру, если мы используем только 2 блока (технику сопровождения и генерация входов ) и имеем в каждом из этих блоков по 3 разных варианта, то мы сможем построить 9 разных торговых систем. Причем каждая из этих торговых система будет уникальной.
А если мы имеем, к примеру 6 различных техник сопровождения и 7 входных сигналов (смотрите рисунок)?
Схема генератора МТС
Как нетрудно посчитать — в нашем распоряжении уже 42 уникальных торговых системы, каждая из которых на каком-либо финансовом инструменте в определенный период времени может быть доходной.
А если учесть, что входить можем как в направлении торгового сигнала (Forward) так и против направления торгового сигнала (Revers), то количество возможных торговых систем увеличивается до 84.  А если еще добавить два разных типа фильтрации? Уже 168 систем. И так далее.
Как Вы видите, если мы используем 6 техник сопровождения, 7 входных сигналов, 2 направления входа и 2 фильтра, то у нас появляется 168 уникальных, не похожих друг на друга систем.
Еще один вопрос — если мы придумываем, допустим один новый тип входа — как изменится в этом случае наше общее количество систем? Давайте посчитаем:
6 техник сопровождения * 8 (входных сигналов) * 2 (типа входа) *   2 (виды фильтрации) = 192. То есть найдя  и проработав всего лишь одну технику нового входа мы увеличиваем свой арсенал потенциально доходных торговых стратегий с 168 до 192 штук, т.е. на 24 новых торговых системы.
Думаю, идея ясна. Игорь Чечет совершенно прав — нужно сосредотачивать свои усилия на нахождении, проверке, доводке новых торговых техник. После же взятия новой техники на вооружение уже не нужно будет изобретать велосипед, а просто методично тестировать различные варианты сочленения разных техник торговли, находя при этом для каждого конкретного варианта свою уникальную торговую систему со своими торговыми параметрами.
Конечно, такая система не будет вечно работать, т.к. рынок изменяется и торговая система периодически начинает сливать. Здесь нам на помощь придет схема выбраковки действующей торговой системы и создание четких правил для дисквалификации торговой системы. Но об этом поговорим в следующий раз.
 
Где взять идеи для создания новых торговых техник
Сегодня хочу привести пример того, как можно создать и протестировать одну из новых техник. Давайте пополним сегодня блок генерации входных сигналов.
Где брать новые техники? Способов здесь очень много:
Во-первых, можно случайно наткнуться на идею в процессе наблюдения за рынком. Порой случайное предположение выливается в ценную технику, которая будет служить Вам долгие годы.
Во-вторых, нужно периодически разбирать «по косточкам» чужие торговые системы. Это так называемый метод анализа и синтеза, когда с помощью анализа мы разбираем систему на отдельные составляющие, а затем с помощью синтеза создаем из выявленных и изученных частей нечто новое. Для меня неиссякаемым источником таких идей является английский сайт для пользователей Wealth-Lab. Мало того, что там уже выложено более 180 готовых торговых систем (для официальных пользователей), так еще и в форуме постоянно можно перехватить интересную информацию.
В-третьих, я обязательно читаю форумы близких мне по духу людей, которые пишут о трейдинге. В Google Reader у меня в специальной папке сосредоточены все подписки по RSS на блоги людей, которые пишут о системной торговле.  Выглядит это вот так:
Схема генератора МТС и пример создания новой торговой техники
 
Помимо того, что я своевременно получаю все новые сообщения от людей, которые интересуются теми же вопросами что и я, так еще и если кто-либо из них необдуманно опубликует «святой грааль», а затем подумает и уберет такую информацию из общего доступа — у меня в Google-Reader останется этот пост и я всегда смогу его почитать.
Так что берите на вооружение и не забывайте подписаться и на мой блог по RSS — всегда будете видеть все новые сообщения.
 
Анализ чужой механической торговой системы
Ту идею входа в позицию, о которой я хотел рассказать сегодня я как раз иподсмотрел в одном из блогов, который ведет Максим (mirovan). Блог очень интересный — всем его рекомендую. Максим не жадничает и выкладывает коды торговых систем, которые он разрабатывает. Конечно, код у этих систем не такой профессиональный, как у Игоря Чечета, но идеи — отличные. А если применить здесь метод анализа и синтеза… ну, Вы поняли...
Те, кто прочитает пост, который написал Максим про торговую систему с использованием индикаторов ADX и CCI — увидит, что от его торговой системы, которую он торгует осталось в получившейся торговой технике не так уж много. Если разложить по полочкам — что предлагает Максим — получится следующая схема торговой стратегии:


Рабочий инструмент:
фьюч на индекс РСТ (15 минут);


Условия на вход в длинную позицию:
  • ADX (период индикатора ADX является оптимизированным параметром торговой системы) должен расти;
  • ADX должен быть небольшим, чтобы входить в начале тренда (<20) — хотя отмечу, что это по-сути параметр, который автор просто зафиксировал.
  • CCI должен быть больше 100 (период CCI — оптимизируемый параметр стратегии) — что подтверждает силу тренда. Отмечу, что уровень 100 — по сути тоже зафиксированный торговый параметр.
  • Свеча должна быть белой (Close > Open);
  • верхняя тень свечи должна быть не больше 200 пунктов (это тоже заранее установленный параметр торговой стратегии);
  • время входа: с 11 часов утра до 23 часов.


Условия выхода из длинной позиции:
  • ставится первоначальный стоп (его величина в пунктах оптимизируется у автора системы);
  • вводится трейлинг стоп (его параметр также подбирается при оптимизации);
  • позиция закрывается в конце рабочего дня (в 23-30);
Условия на вход в короткую позицию и на выход из короткой позиции — зеркально противоположны условиям на вход.
В общем, система получается, конечно с довольно большим количеством параметров, но в ее основе лежит здравая идея о том, что:
  • нужно входить по тренду;
  • нужно входить в начале тренда (не вскакивать в ушедший поезд);
  • ограничивать убытки.
Проделав такой анализ системы — мы, по сути, провели ее анализ — разделив на составные части и теперь должны изучить каждую отдельную часть. Я это подробнейшим образом сделал — благо Интернет под рукой. Теперь я знаю что такое индикаторы ADX и CCI, какие варианты входов по этим индикаторам существуют.
 
Изучая эти вопросы я пополнил свою копилку идей еще одной техникой входа, которую на досуге нужно будет протестировать (пересечения CCI с разными периодами).
Давайте теперь, имея перед глазами схему генератора МТС попробуем найти новую технику, опираясь на систему Максима.
Итак, технику сопровождения позиции беру самую первую, которая существует на рисунке — TakeProfitPercent.
 
Применение готовой техники сопровождения позиции при создании МТС:
Берем уже готовую технику, которую мы создали, изучили, протестировали и формализовали ранее. Эта техника сопровождения позиции называется TakeProfitPercent.
Смысл ее заключается в том, что берется процентный отступ от цены входа в позицию (этот параметр оптимизируется). После чего подбирается коэффициент, на который величина тейк профита должна быть больше чем величина Стоп Лоса. Таким образом, после входа в позицию выставляется два ордера:
  • стоп-приказ на выход из позиции, если цена пойдет не в нашу сторону;
  • лимитный приказ на выход из позиции для фиксации прибыли.
 
Код техники сопровождения для Wealth-Lab на языке C# можно посмотреть здесь.
 
Как видите, все четко и предельно просто. Спасибо еще раз Игорю Чечету за разработанный им удобный шаблон.
 
Критический анализ чужой торговой системы с целью создания новой торговой техники


Теперь посмотрим — какие элементы торговой стратегии возьмем для новой техники входа.
  • Оставляем индикатор ADX — его период делаем первым оптимизируемым параметром;
  • Оставляем условие о том, что индикатора ADX должен расти, т.е. должно выполняться условие  ADX [bar]  >  ADX [bar-1];
  • Соглашаемся с тем, что ADX должен быть небольшим, чтобы входить в начале тренда. Однако уровень ADX, выше которого индикатор не может быть при входе в позицию, делаем вторым параметром системы (а не фиксированной величиной как это делал автор).
  • Оставляем индикатор CCI — его период также делаем параметром торговой системы.
  • Соглашаемся с автором, что CCI должен быть больше определенного уровня. Однако величину этого уровня делаем тоже параметром (а не фиксированной величиной 100, как это делал автор)


Отказываемся от следующих элементов системы, которые предлагал автор:
  • От условия, что Свеча должна быть белой (Close > Open) отказываемся;
  • Условие о том, что верхняя тень свечи должна быть не больше 200 пунктов также игнорируем;
  • Не обращаем внимания на время входа (по версии автора с 11 часов утра до 23 часов).
Вот и все. У нас получилась новая техника, генерирующая вход в позицию. Выглядеть она будет так:
 
Код примера на C# (кликните, чтобы посмотреть)
 
Как видите, у нас получилась совершенно новая техника генерации входных сигналов, которая дает неплохие результаты даже в совокупности с самой простейшей техникой сопровождения позиции.
 
Создание готовой механической торговой системы с использованием техники сопровождения позиции и техники генерации входного сигнала
Для того, чтобы Вы могли убедиться, что используя только технику сопровождения позиции и технику генерации входных сигналов на основе индикаторов ADX и CCI можно получить торговую стратегию, дающую неплохие результаты. Выкладываю здесь полный код готовой торговой стратегии (благодарности принимаются :-))...
 
Полный код торговой системы для Wealth-Lab на языке C#.
 
Как видите, код торговой стратегии состоит из двух техник, которые я приводил чуть выше. Это универсальный код, который можно применять для создания буквально любой торговой стратегии.
 
Анализ показателей созданной МТС
Теперь пришло время подобрать оптимальные параметры для системы. Буду делать это с помощью генетического оптимизатора, минимизируя показатель «Recovery Factor» (иногда лучше максимизировать показатель NetProfit).
При этом хочу отметить, что оптимизацию я проводил после того, как установил величину комиссии равной 0,07% от оборота. Это сделано специально, чтобы система была устойчива к проскальзываниям и комиссии брокера и биржи. В данном случае мы моделируем величину этих издержек примерно 84 пункта на каждую сделку. Этого вполне достаточно, если учесть, что часть сделок будет по лимитным ордерам (вообще без проскальзывания), а часть — по рынку, но не во время пробоя уровней.
Стратегия оптимизироалась по состоянию на 03.06.2012 года за 2 последних года. Время оптимизации заняло примерно 30 минут (2-х ядерный процессор, 64 битная Wealth-Lab).
Эта таблица показывает результаты оптимизации:
Выбор параметров торговой системы
 


Чтобы выбрать оптимальные параметры я проделал следующее:
  • Провел сортировку результатов генетической оптимизации по мере убывания показателя Recovery Factor. Это сделано потому, что нам предпочтително, чтобы эквити торговой стратегии имела ровную форму без больших взлетов и падений.
  • Далее из топовых результатов наборов параметров оптимизации был выбран результат с наилучшим показателем «Avg Profit, %» — этот показатель показывает сколько в среднем с одной сделки мы получали дохода. Чем больше этот показатель, тем менее чувствительна торговая стратегия к проскальзываниям и комиссии.
  • Красным горизонтальным выделением показаны прочие подходящие показатели оптимизации. С этими параметрами был визуально изучен график эквити. В результате были выбраны лучшие на мой взгляд из найденных параметров торговой системы. Вы их можете увидеть в таблице в сине строке (4-я строка сверху).
При этом несмотря на то, что оптимизировались только 2 последних года буду исследовать все показатели начиная с января 2008 года, чтобы посмотреть — как вела себя стратегия в кризис 2008 года.
После того, как я с помощью генетического оптимизатора подобрал параметры к этой стратегии вот какие результаты она показывает:
Анализ DrawDown торговой системы
 
Как видите, при торговле на 100% от эквити (без плеча) максимальная просадка, которую мы видели на всей торговой истории (включая кризис 2008 года) составляет 16 %. Это вполне приемлемые результаты, особенно если учитывать что здесь учитывается комиссия (0,07% от оборота) и оптимизировались только последние два года. Если бы мы провели оптимизацию по всему 5-ти летнему периоду — результаты были бы еще лучше.
Дольше всего эквити не достигала новых максимумов в течение 5 500 пятнадцатиминутных баров, что составляет примерно 1375 часов или 114 торговых сессий. Готовы ли Вы столько ждать без новых хаев по прибыли? Если нет, то это система не для Вас. Судя по пилообразному нижнему графику система достаточно устойчива и постоянно стремится вверх.
Теперь посмотрим — как вылядит график эквити.
Визуальная оценка графика эквити торговой системы
 
Учитывайте, что для расчета количества контрактов применяется следующий механизм:
Допустим, у нас есть 1000 000 пунктов (обратите внимание, не рублей) — расчет в пунктах ведется для упрощения. Тогда эта сумма делится на цену контракта (в пунктах) — также обращаю внимание, что для наглядности я здесь не оперирую гарантийным обеспечением. И округленная сумма показывает то количество контрактов, которое мы можем купить или продать. Т.е. торговля идет на 100% эквити без плечей (как будто торгуем не фьючерсом, а акцией).
Эквити имеет ровный, восходящий вид — что не может не радовать. Синяя линия показывает каков был бы доход если придерживаться принципа купил и держи. Зеленая — результат от длинных позиций, а красная линия — результат  торговли от коротких позиций. Как видим и зеленая и красная линия возрастают.
Вот отчет по всем прочим показателям (картинка кликабельна).
Полный анализ показателей торговой системы
 
Особенно радует то, что несмотря на комиссию средний доход на сделку составляет 0,78%. Среднее время удержания позиции составляет 91,66 пятнадцатиминутных баров (1374 минуты, или 22 часа), т.е. сделка удерживается в среднем в течение 2-х торговых сессий. Показатель Recovery Factor равен 12,68, что очень даже хорошо.
Теперь давайте посмотрим, сколько можно было бы заработать в разрезе дней, месяцев и лет… (график кликабелен).
Отдача стратегии по периодам (дни, месяцы, годы)
 
Как видите, в среднем система генерирует 4,53 % в месяц и 58 % в год. И это без плеча и с максимальной просадкой всего в 16 %. Обращают на себя внимание следующие вещи:
  • количество прибыльных дней подряд состаило 7 штку, а максимальное количество убытоных дней подряд — 10 штук;
  • 74% месяцев заканчивались с прибылью, при этом наилучший месяц дал 22,51%, в худший месяц было потеряно 7,28%.
  • Все годы были прибыльны (учитывайте, что 2012 год прошел только наполовину).
  • все эти результаты достигнуты с учетом комиссии  в 0,07% от оборота (на самом деле, даже с учетом проскальзывания и комиссии брокера и биржи это значение будет меньше).
Можно использовать плечо 1:2, но тогда и максимальная просадка и среднемесячная прибыль возрастет в 3 раза.
 
По каким направлениям можно улучшить торговую систему
В общем, система получилась довольно симпатичная. Конечно, можно ее значительно улучшить.
Я бы поработал по следующим направлениям:
  1. Попробовать другие техники сопровождения позиции (особенно трейлинг стопы, например TralingStopParabolic);
  2. Попробовать оптимизировать отдельно только лонги и только шорты (ведь характер рынка растущего и падающего сильно отличается);
  3. Попробовать разные таймфреймы (а не только 15-ти минутный таймфрейм);
  4. Попробовать разные финансовые инструменты (а не только фьючерс на индекс РТС);
  5. Добавить фильтр времени (для входов и / или выходов) — как предлагает это изначально автор;
  6. Попробовать закрывать позиции в конце дня...
 
В общем, построение торговой системы — это творческий процесс. Надеюсь, я Вас сегодня убедил в этом.
Я собираюсь на своем блоге «Финансовая лаборатория» создать коллекцию торговых техник для каждого из блоков генератора МТС. Для этого создал соответствующие рубрики.
Если У Вас есть желание пополнить эту коллекцию — присылайте код торговых систем или техник через форму обратной связи. Периодически буду делать обзор таких систем и выкладывать эти техники для всеобщего пользования.
Чтобы не пропустить новые сообщения — не забудьте подписаться на обновления моего блога по RSS.
 
12 Комментариев
  • rsa
    04 июня 2012, 23:39
    Длинный пост, но бесполезный.
    Генерировать МТС/АТС нет смысла, если на бумаге не можешь расписать ТС ;)
  • vlad1024
    04 июня 2012, 23:50
    Чем больше вариантов тем больше вероятность получить, совершенно случайно профитную стратегию на истории, но не рабочую стратегию.
  • «Как нетрудно посчитать — в нашем распоряжении уже 42 уникальных торговых системы, каждая из которых на каком-либо финансовом инструменте в определенный период времени может быть доходной.»

    про курвефиттинг слышали когда-нибудь, не?)
  • ну почему риторический )
    без этого важного вопроса вся статья один курвефиттинг)
      • Кузькин Юрий
        05 июня 2012, 03:18
        Дмитрий Власов, статья подробная и содержательная. Я использую другую программу для теханализа и роботорговли, но мне кажется главное в МТС это простота. Стопы, тейкпрофиты и фильтры режут прибыль, но снижают просадки. При этом система становится более слабой при изменении рынка. Лучшее вести разработки в направлении диверсификации по стратегиям и инструментам.
  • nik
    05 июня 2012, 04:59
    получил небольшое представление о МТС… неполное и слегка разочаровывающее… все равно рулит мат статистика и теория вероятностей…
  • nik
    05 июня 2012, 05:02
    пост сохранил прочитаю еще раз со всем тщанием
  • ves2010
    05 июня 2012, 09:19
    Бред милый бред… проверь эту мтс на стабильность и устойчивость

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн