Создание торговой системы: главные шаги

Автор: Кондратенко Юрий

Трейдер всегда находится в поиске и создании своего "Святого Грааля" - торговой системы, удовлетворяющей его отношение к доходу и риску. Здесь я расскажу о главных этапах создания системы, начиная от задумки, идеи и заканчивая готовым кодом для Омеги. Данный материал ни в коем случае не претендует на звание идеального пособия по созданию МТС. Это мой взгляд на процесс создания МТС, и, надеюсь, Вы найдете в нем что-то интересное и для себя. Итак...

Самое начало

Сначала должна быть "идея". Без нее никак. А вот появится она может откуда угодно - после просмотра графиков, прочтения новой статьи или книги, общения с коллегами трейдерами или еще как. Идея стратегии, на примере которой я буду рассказывать, родилась довольно банально. Во время просмотра статей по форексу, я натолкнулся на торговую стратегию на британском фунте. Там высчитывался торговый диапазон во время торгов в Токио, и затем игра велась на пробой этого диапазона. Я подумал, а почему бы не проверить данную идею на нашем фондовом рынке, внеся в нее ряд доработок. Позднее из любимой книги Арта Симпсона "Призрак биржи" я узнал, что это чуть ли не самая старинная стратегия на Уолл Стрит. Но это было позднее. :-)

Значит, задумка есть - играть в направлении пробоя диапазона открытия. Это всего лишь гипотеза, которую предстоит проверить. И не стоит переоценивать истинность первоначальных выводов. Зачастую, идеи, которые на первый взгляд кажутся логичными, при проверке на истории ничего кроме убытка не приносят. Например, нельзя тестировать графические модели разворота, так как очень легко можно подвергнуться самообману. Дело в том, что человеческий глаз сначала отыскивает развороты, а только потом выделяет те из них, на которых была нужная модель, а нужно наоборот. Поэтому только беспристрастное тестирование с помощью компьютера. Идем проверять идею.

Программа для тестинга

Теперь нужно выбрать инструмент для теста закономерности. Можно просто на бумаге, но как мы уже выяснили - не самый лучший и быстрый способ. Можно с помощью программы Excel - это уже намного мощнее, но требует определьнных знаний и по-прежнему остается много ручной работы. Своя программа (на Delphi, C или еще что) для бэктестинга. Это интересный вариант, для некоторых может единственный. В своё время я пошел по этому пути. Было затрачено огромное количество времени на создание интерфейса, процедуры обработки данных, собственно, создание самого движка программы. Не буду говорить про моё состояние, когда я узнал - это все уже создано до меня и покрывает все мои запросы. Omega Research, Wealth Lab - вот одни из самых удобных средств для бэктестинга. Вообщем, мы остановимся на Омеге - функционала этой программы нам хвтит за глаза.

Базовый сигнал

Пришло время оформить идею на языке Easy Language, который по сути является тем же Паскалем (кто помнит что это? :-) ).

Для начала определимся, какой период будем считать открытием - 10, 30, 60 минут? Первое, что пришло мне в голову - это 10:30 - 12:00, первые полтора часа. Все правильно в 12:00 открываются торги в Лондоне, которые зачастую вносят существенные коррективы в настроение наших игроков. Тем не менее, пусть 12:00 - это будет параметр tmOpen, который мы потом оптимизируем. Значит, до 12:00 нам надо вычислить максимальную и минимальную цену. Остановимся на 30-минутном графике ГМК Норильский Никель (ГМК). Начинаем писать сигнал 1sig_OpenBreak:

{-------------------------------------------------}
inputs: tmOpen(12), tmClose(17.3), p(0.002), sl(1), pSL(0.03);
vars: up(0), dn(0);

if Time = 1100 then
begin
    up = H;
    dn = L;
    sd = 0;
end;
if Time <= tm*100 then
begin
    if H > up then up = H;
    if L < dn then dn = L;
end;
{-------------------------------------------------}

После времени tmOpen и до времени tmClose будем выставлять стоп-приказы на пробой вычисленного диапазона up/dn. Причем установим величину пробоя p. На Easy это выглядит так:

{-------------------------------------------------}
if Time >= tmOpen*100 and Time<= tmClose*100 then
begin
if MarketPosition <= 0 then BUY("B") at up*(1+p) STOP;
if MarketPosition >= 0 then SELL("S") at dn*(1-p) STOP;
end;
{-------------------------------------------------}

Какая же система без стоп-лоссов. Давайте добавим и их. Первый стоп-лосс возьмем обычный в pSL процентов. Кроме этого, будем еще устанавливать стоп-лосс в единицах sl диапазона (up-dn). Позже разберемся, какой способ более эффективен. Наши стопы:

{-------------------------------------------------}
if MarketPosition = 1 then ExitLong("LX_SL") at EntryPrice*(1-pSL) STOP;
if MarketPosition = -1 then ExitShort("SX_SL") at EntryPrice*(1+pSL) STOP;

if MarketPosition <> 0 and BarsSinceEntry(1) = 1 then
begin
    lx = EntryPrice - (up-dn)*sl;
    sx = EntryPrice + (up-dn)*sl;
end;
if MarketPosition = 1 and Time > tmOpen*100 then
   ExitLong("LX") at EntryPrice - (up-dn)*sl STOP;
if MarketPosition = -1 and time > tm*100 then
    ExitShort("SX") at EntryPrice + (up-dn)*sl STOP;
{-------------------------------------------------}

Поздравляю, стратегия пробой диапазона открытия готова в первом приближении!

Открываем чарт с акциями ГМК 30-минутные свечки. Глубина истории 1000 дней, это примерно 3 года. Это рекомендуемый мной минимальный отрезок времени для тестов, так как за этот период рынок, как правило, успевает побывать и в трендах вверх-вниз и в боковике. Система должна работать на любых состояниях рынка. Смотрим первые результаты работы стратегии. Стартовый капитал 100 000 рублей, без реинвестирования. Комиссия 120 рублей на круг, это соответствует 0,045% комиссии брокера без НДС и 0,01% комиссии биржи ММВБ.

Так-с. Прибыль есть и не маленькая, значит идея рабочая, что уже не может не радовать. Обычно одного взгляда на кривую капитала бывает достаточно, чтобы сделать вывод о качестве стратегии. Плавный рост - это все, что мы хотим видеть (или кому-то нравится вертикальный? ;-) ). Здесь вроде с этим все нормально, кроме участка осень 2008 года (сделки с 400-500), но там и волатильность была очень высокая. Что по цифрам. Чистая прибыль 321 тыс руб., максимальная просадка 42,8 тыс руб., средняя сделка 0,580 тыс руб. Вместо "тыс руб." можно читать "процентов" - это тоже будет верно. Рост более чем в 3 раза за три года, это 100% годовых - здорово для начала, при том что Buy&Hold за это время всего 8%. Вот вам еще один аргумент за активный трейдинг!

Просадка большая, но по времени она была очень короткая, и рынок с 20% гэпами еще не скоро повторится. Средняя сделка 0,58% - не очень много, но и стратегия краткосрочная. Среднюю сделку желательно поднять до 1%, тогда работа системы будет более стабильна, так как даже исполнение приказа с проскальзыванием не будет сильно сказываться на итоговых показателях системы. Еще о показателях системы. Среднее время в сделке 1.9 дня - самое то для нервного рынка, когда движение в одну сторону не длится более 1-2 дней. Среднее время между новыми пиками кривой капитала (обновление максимума) 33 дня - очень не плохо.

Оптимизация

Не люблю я оптимизировать, но придется. Первый параметр tmOpen. Мы его положили равным 12:00. Давайте проверим.

Уменьшая интервал открытия, в данном случае мы несколько выигрываем в прибыли, но получаем больше сделок и большую просадку. Кроме этого, на других бумагах уменьшение интервала не является оправданным. Так что я оставил 12:00.

Оптимальные стоп-лоссы получились следующие: 2% процентный стоп-лосс и 2 единицы диапазона открытия. При этих параметрах чистая прибыль 340 тыс руб., просадка 32 тыс руб., средняя сделка 0,611 тыс руб. Если не использовать процентный стоп, то оптимальный стоп в единицах (up-dn) равняется 1.

Доводка системы напильником

Основные этапы пройдены. Осталось доработать нюансы. Первый такой нюанс - это количество входов в позицию в течение дня. Сейчас оно не ограничено. Анализ сделок показывает, что бывают "разводные дни", когда рынок сам не знает, куда хочет идти. Для этих случаев введем ограничение на открытие новых позиций в течение дня, если первая сделка закрылась по стоп-лоссу. В переменной sd будем хранить 0 - не было сделок сегодня и 1 - были. И не открывать новых позиций, если sd = 1, то есть в конструкцию if добавится еще одно условие sd=0. После этой доработки чистая прибыль выросла до 375 тыс руб., просадка сократилась до 26 тыс руб., средняя сделка поднялась до 0,795 тыс руб. На рынке нет места суете ;-).

Второй момент, который следует проверить - это сохранение прибыльной позиции и ликвидация убыточной. Наверное все знают это замыленное правило "давай прибыли течь и пресекай убытки". Пришло время проверить его на практике. В конце дня будем просто закрывать позицию, если она в минусе.

{-------------------------------------------------}
if Time = 1845 then
begin
  if C < EntryPrice then ExitLong at C;
  if C > EntryPrice then ExitShort at C;
end;
{-------------------------------------------------}

Итак ... фанфары ... что мы получили в итоге. Чистая прибыль 404 тыс руб., просадка всего 20,7 тыс руб., средняя сделка 0,796 тыс руб., среднее время между пиками 18 дней. Каково, а? :-) Все результаты в студию.

Все параметры системы одним файлом xls.

Визуализация

Чуть было не забыл. К каждой системе я обычно делаю визуальное сопровождение, чтобы можно было заранее видеть в каком месте появится сигнал на покупку или продажу. Согласитесь, не очень приятно, когда сигналы выскакивают как черт из табакерки. Для нашей стратегии подойдет индикатор в стиле ShowMe, показывающий границы диапазона.

Код индикатора 1ind_OpenBreak:

{-------------------------------------------------}
inputs: tmOpen(12);
vars: up(0), dn(0);
if time=1100 then
begin
  up = H;
  dn = L;
end;
if Time <= tmOpen*100 then
begin
  if H > up then up = H;
  if L < dn then dn = L;
end;
if time = tmOpen*100 then
begin
  plot1(up,"up");
  plot2(dn, "dn");
end;
{-------------------------------------------------}

Резюме

Давайте подведем итоги. Первоначальная идея сработало - и это хорошо. Мы получили результат, который имеет практическую ценность. К сожалению, это скорее исключение, чем правило. Чаще приходится проверять гипотезу и приходить к выводу, что она не работает. Хотя это тоже результат. 130% годовых - это хороший доход в теории, чтобы попробовать систему в реальных торгах.

Отмечу, что на акциях ГМК эта система показывает самые лучше результаты. Рекомендую самостоятельно сделать следующее:

(1) проверить работу системы на остальных голубых фишках;
(2) с помощью XpressAnalizator KonKop`а проанализировать результаты системы на портфеле бумаг;
(3) при желании создать робота на базе этой стратегии.

Материалы:

Стратегия 1str_OpenBreak и индикатор 1ind_OpenBreak Скачать
Архив котировок ГМК за 3 года по 17.04.2009 Скачать
Инструкция по Easy Language Скачать

Удачных Вам сделок!

P.S. Естественно, ни о каких гарантиях дохода при использовании данной системы не может быть и речи! Все взрослые люди и сами решают на что поставить деньги.

20.04.2009
Кондратенко Юрий

Комментарии

2

My locksmith Tulsa Ok provides locksmith services such as house rekeying, lock installation, car key replacement, car key programming and much more.  locksmith tulsa ok

clb1215
ralph lauren uk
hermes outlet
coach factory outlet
ugg outlet
canada goose outlet
adidas outlet
uggs outlet
nike air max
ultra boost
nike outlet online
adidas outlet
ralph lauren outlet
moncler outlet
coach outlet
ugg boots
longchamp handbags
oakley sunglasses
canada goose outlet
canada goose jackets
pandora charms
ray ban sunglasses
ugg boots
michael kors outlet clearance
north face jackets
cheap jordans
hermes handbags
polo ralph lauren outlet
coach outlet
ugg outlet
canada goose
canada goose sale
jordan shoes
canada goose outlet
michael kors outlet
polo ralph lauren outlet online
ugg boots
michael kors uk
cheap ugg boots
canada goose outlet
michael kors outlet clearance
cheap jordans
pandora jewelry
canada goose
cheap ray ban sunglasses
ralph lauren outlet
coach outlet
adidas nmd
ugg outlet
coach outlet
coach outlet online
valentino shoes
ugg outlet
cheap ray ban sunglasses
fred perry polo
oakley sunglasses
pandora outlet
jordan retro 11
ugg ustralia
canada goose jackets
ralph lauren uk
coach outlet
moncler outlet
canada goose outlet
coach factory outlet
christian louboutin outlet
north face jackets
yeezy 350 boost
ugg boots for women
michael kors outlet
kate spade outlet store
ugg outlet
tory burch outlet
coach factorty outlet
red bottoms shoes
canada goose jackets
adidas superstar
burberry sale
canada goose clothing
moncler
michael kors canada
adidas nmd
ugg boots canada
ralph lauren outlet
adidas superstar
ugg outlet
uggs
adidas yeezy
uggs
canada goose outlet
coach outlet
polo ralph lauren outlet online
pandora charms sale
canadian goose
ugg outlet
canada goose outlet
yeezy boost
louis vuitton outlet store
cheap ray ban sunglasses
michael kors handbags
canada goose outlet
canada goose uk
ugg outlet
cheap mlb jerseys china
air jordans
pandora jewelry
coach factory outlet
ugg outlet
canada goose outlet
ralph lauren outlet
toms outlet
gucci handbags
polo ralph lauren outlet
canada goose outlet
pandora charms uk
ralph lauren outlet
canada goose jackets
timberland boots
moncler outlet
canada goose
longchamp handbags
michael kors outlet online
canada goose
moncler uk
burberry outlet
timberland outlet
ralph lauren outlet
uggs canada
burberry outlet
red bottoms
adidas nmd
canada goose outlet
birkenstock sandals
moncler coats
nmd shoes
coach outlet
pandora outlet
ugg boots
ugg boots
michael kors outlet clearance
pandora charms sale
michael kors outlet
cheap mlb jerseys
michael kors outlet
uggs outlet
moncler outlet
coach factory outlet
kate spade outlet
moncler jackets
christian louboutin outlet
michael kors outlet
canada goose uk
nike shoes for men
canada goose jackets
ray ban sunglasses discount
canada goose
coach outlet store online clearances
adidas yeezy boost
nike shoes
north face jackets
coach outlet
louis vuitton outlet
ugg canada
fred perry
gucci outlet
cheap nfl jerseys
ralph lauren uk
ugg boots
ugg boots
louis vuitton factory outlet
coach factory outlet
pandora charms
nike outlet
longchamp outlet
discount oakley sunglasses
pandora jewelry
longchamp outlet online
coach outlet
louboutin shoes
air jordans
canada goose jackets uk
michael kors outlet
coach factory outlet
cheap uggs
cheap jordans
michael kors outlet online
jordan retro
pandora charms
coach canada
uggs outlet
north face jackets
ugg shoes
moncler
moncler jackets
ugg boots
polo ralph lauren outlet online
ralph lauren
michael kors outlet
north face outlet
adidas yeezy
ralph lauren outlet
kate spade handbag
nike outlet store
pandora uk
hermes handbags
kate spade
adidas yeezy
moncler outlet
nike shoes
louis vuitton outlet online
supreme new york
nfl jerseys wholesale
nmd adidas
coach factory outlet
canada goose jackets
canada goose sale
burberry outlet store
pandora jewelry
adidas yeezy
ugg outlet
north face outlet
michael kors outlet clearance
nike outlet store
ugg outlet
canada goose uk
michael kors handbags
nike outlet
ugg
coach factory outlet
polo ralph lauren outlet online
air max 2017
adidas shoes
doudoune moncler
louboutin shoes
canada goose uk
cheap ray bans
valentino shoes outlet
ugg outlet online
pandora charms sale clearance
pandora outlet
christian louboutin outlet
moncler jackets
mulberry outlet
ugg outlet
ugg boots
ralph lauren sale clearance
supreme clothing
jordans
kate spade handbags
michael kors handbags
ugg outlet
polo ralph lauren
kate spade
ralph lauren outlet
uggs
michael kors outlet
cheap jordans
polo ralph lauren outlet
canada goose coats
coach outlet store
coach canada
coach outlet
pandora jewelry
canada goose sale
nike outlet
yeezy boost 350
ugg boots
canada goose jackets
cheap ray bans
tory burch outlet
ugg outlet
pandora
michael kors outlet
pandora charms
coach factory outlet
louis vuitton outlet online
ugg boots
louis vuitton outlet
canada goose jackets
coach factory outlet
canada goose outlet
coach outlet store
cheap uggs
cheap jordans free shipping
michael kors outlet store
burberry outlet canada
adidas outlet
fitflops sale
ugg outlet
air jordan shoes
coach outlet store
ralph lauren uk
canada goose
columbia sportswear
coach outlet online
ralph lauren outlet
cheap uggs
canada goose outlet
burberry
coach outlet
ugg boots on sale
kate spade outlet
ugg outlet store
north face outlet online
oakley sunglasses
coach handbags
canada goose outlet
michael kors outlet
coach factory outlet online
salvatore ferragamo shoes
coach outlet
cheap jordans for sale
michael kors outlet clearance
canada goose uk
jordan shoes
canada goose sale
ralph lauren outlet
christian louboutin
adidas shoes
coach outlet
canada goose outlet
coach factory outlet
coach outlet
ugg boots
burberry outlet
coach factory outlet
coach factory outlet
ugg australia
cheap nfl jerseys
michael kors factory outlet
ugg boots
michael kors outlet store
coach outlet
michael kors outlet
michael kors canada
air jordan shoes
coach outlet store
louis vuitton outlet
ugg outlet
ugg outlet
pandora jewelry outlet
ferragamo outlet
hermes handbags
christian louboutin
cat boots
hermes birkin
moncler jackets
cheap oakley sunglasses
polo outlet
uggs canada
mulberry bags
polo outlet
fitflops
ugg shoes
mbt shoes
north face outlet
pandora charms sale clearance
ralph lauren outlet
uggs canada
ugg uk
hermes bags
nike store
mbt shoes
moncler outlet
nike shoes
birkenstocks
ugg outlet
nike air max
coach outlet
canada goose outlet
tory burch outlet store
ugg boots
coach outlet
michael kors outlet
cheap uggs
polo ralph lauren outlet
michael kors outlet
coach outlet store online
yeezy boost
adidas shoes
coach outlet
yeezy boost
michael kors outlet
canada goose outlet
ralph lauren outlet online
ugg sale
louis vuitton
louis vuitton outlet store
pandora jewelry
moncler jackets
canada goose outlet
coach outlet
coach outlet store
oakley sunglasses
nmd adidas
ugg australia
adidas yeezy boost
longchamp outlet
cheap mlb jerseys
louis vuitton outlet
canada goose jackets
uggs clearance
adidas shoes
ferragamo shoes
harden vol 1
air max 2018
coach bags
michael kors outlet
coach outlet
ugg boots on sale
ray ban sunglasses
cheap jordans
ugg outlet
ugg boots
coach factorty outlet
salvatore ferragamo
coach factory outlet online
ugg outlet
uggs outlet
ralph lauren sale clearance
mulberry handbags
red bottom shoes
pandora charms
ralph lauren outlet
the north face
kate spade bags
polo ralph lauren outlet online
canada goose sale
canada goose
canada goose outlet
canada goose uk
hermens bags
supreme clothing
moncler jackets outlet
coach outlet
ray ban sunglasses
mulberry uk
clb1215

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.