Как составить свой торговый алгоритм

Как написать свой алгоритм торговли?

как написать свой алгоритм торговлиДля начала мы рассмотрим вопрос относительно того: для чего нужен торговый алгоритм? Все мы знаем о том, что торговля на рынке форекс является серьезным занятием, которое, как и все остальные профессии, должно приносить не только удовольствие, но и прибыль.

Для того что бы торговля на рынке Форекс приносила прибыль, каждый трейдер должен понимать, что он делает на рынке и какие цели он преследует. Что бы придерживаться целей,  у трейдера должно быть для начала изложено хотя бы на бумаге, то что он собирается делать и то, по какому плану он будет торговать.

Лучший, на мой взгляд, брокер — для дейтрейдинга, для скальпинга.

Итак, начнем с того, какие пункты должны быть прописаны в вашем торговом алгоритме:

  1. В первую очередь вы должны описать ваш рабочий день. Рабочий день – начинается с просмотра новостей, которые нас ждут в предстоящей торговой сессии. В соответствии со своим стилем торговли, определите, будете ли вы торговать во время выхода, тех или иных новостей, или же подтянем уровни StopLoss, и будем ждать более благоприятного времени для торговли.
  2. Не менее важным критерием подготовки к торговой сессии, является технический анализ. Уделяйте не менее 15-ти минут в день, для того, чтобы определить главные ключевые уровни, которые будут актуальны для торгового дня. Так же важно обозначить для себя на каких технических фигурах будет  вестись торговля и по каким валютным парам.
  3. В торговом алгоритме, должен быть прописан такой пункт как торговая стратегия. Она должна включать в себя ключевые факторы, на которые вы ориентируетесь при принятии решений для входа в позиции. К примеру: для торговли по техническому анализу такими факторами являются уровни поддержки и сопротивления, несколько фигур технического анализа и несколько паттернов из Price Action.
  4. Пропишете количество убыточных сделок подряд в процентном соотношении от депозита. То есть вы должны точно знать, сколько вы готовы потерять, что бы эти сильно не ударило по вашему счету. Так же стоит прописать, сколько прибыльных сделок за один день вы можете совершить, тоже в процентном соотношении. Это позволит вам исключить эмоции из торгового процесса. Например: вы за несколько сделок увеличили свой депозит на 5-6%,  а потом все заработанные за день деньги потеряли. Такое происходит из-за эмоций, и не соблюдения правил торгового алгоритма.
  5. Рассчитывайте свои риски. Первое, что нужно учесть, это то, что уровень Stoploss, должен стоять именно там, где эму необходимо стоять исходя из технического анализа, а не исходя из того, сколько мы готовы потерять. То есть сначала мы определяем уровень Stoploss и уже от него рассчитываем, допустимый риск, который на рынке Форекс, не должен превышать 2%.
  6. Выбор временного периода (таймфрейма) зависит прежде всего от депозита, которым оперирует трейдер. Для новичков на рынке, оптимальным вариантом, будет торговля внутри дня на периоде H1, так как не большие депозиты в 300 – 500 или даже в 1000 долларов не позволят им вести среднесрочную торговлю на дневном графике. Так как заход в сделку даже минимальным объемом будет превышать уровень допустимого риска.
  7. В торговом алгоритме каждого трейдера должен быть прописан такой момент как среднесрочные цели. Например: «Я торгую пол года и показываю положительную динамику роста депозита, четко придерживаюсь стратегии торговли и манименеджмента. После полугода, я перехожу на управление своим счетом через ПАММ систему, после этого я торгую еще три месяца и начинаю получать какие-то инвестиции.  Ставьте цели и достигайте их, вы не должны находиться на рынке спонтанно, вы четко должны знать как, как скоро и в коком размере вы хотите сделать себе капитал.
  8. Каждая совершенная сделка должна заноситься в «Дневник трейдера» и тщательно анализироваться. Создайте себе специальный журнал, в котором для каждой сделки будут прописаны такие пункты как:
  • По какой цене мы вошли в сделку
  • По какой цене вышли из нее
  • Уровень StopLoss
  • Объяснение по каким причинам была совершена эта сделка
  • Если были допущены ошибки, то какие
  • Сделать выводы, и внести при необходимости коррективы

Анализировать свое поведение в рынке, нужно ежедневно. Это обязанности любого трейдера, как новичка, так и опытного профессионала. По той причине, что рынок не статичная среда, а динамичная, и она всегда меняется.

Рекомендованные статьи —

  • Алгоритм торговли NYSE
  • Торговый алгоритм трейдера NYSE
  • Торговый алгоритм трейдера Форекс
  • Торговый алгоритм А.М.Герчика

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

В заключении хотелось бы сказать, что ваш торговый алгоритм должен быть максимально детализирован. Делайте фото, всех ваших сделок и заносите их в «дневник трейдера» с последующим детальным их описанием.


28.01.2014

2 КОММЕНТАРИЯ НА Как написать свой алгоритм торговли?



Шел Конец XIX века, а торговля на бирже уже во всю процветала. Тысячи жаждущих легкой наживы отдают свои кровные брокерским конторам, а самые умные и расчетливые зарабатывают и приумножают свои миллионы.

Спустя сто лет, ситуация не поменялась. Миллионы дохода стали миллиардами, биржевая лента стала графиком на личном компьютере, и теперь торговать может каждый, у кого есть кредитная карточка и интернет. Но на рынке все так же выигрывают единицы, и проигрывают сотни.

Чем эти единицы отличаются от сотен остальных? У них более расчетливый ум, они более смелые, или просто удачливые? На самом деле, всего понемногу, но упускается суть. Выходят в плюс на рынке преимущественно те, кто не воспринимает рынок как азартную игру. Те, кто минимизирует потери, не дает своим эмоциям влиять на качество торговли, ставит перед собой реальные цели, трезво и разумно оценивает график.

Проще говоря — те, кто пользуется алгоритмом.

Кто-пользуеться-алгоритмом

Почему алгоритм так важен?

Трейдинг — что-то среднее между научным исследованием и тяжелым трудом. Благодаря алгоритму трейдеры не теряются, имеют план действий при любом состоянии рынка, и даже умудряются не сходить с ума. 100%  контроль всей рабочей деятельности — вот что такое алгоритм.

Алгоритм, а не правила-рекомендации, а еще лучше — аксиомы

Александр Герчик, и любой другой успешный трейдер с уверенностью скажут вам, что львиной доле доходов обязаны именно тому, что придерживаются своего алгоритма.

Это сложнее, чем выглядит. А выглядит алгоритм примерно так:

1. Цели и задачи

Реальные цели и выполнимые задачи. Не “миллион через месяц”, а “+25% в год”. Не “торгую все, что движется, а что не движется — двигаю и торгую”, а торговать только заранее выбранные и проанализированные инструменты.

2. Мани-менеджмент

Инструкция по расчёту размера позиции. Сюда включается и риск-менеджмент. Цель — снизить  до минимума любые риски.

3. План торговой стратегии

Собственно, сама система заработка, разработанная именно под себя. Когда входить и выходить с рынка, на каком таймфрейме торговать, определение действующего тренда, уровней. Не торговать, если хоть один из пунктов плана не сходится — золотое правило стратегии.

4. Распорядок дня

Подобранное под таймфрейм время анализа рынка, торговли, выполнения домашних заданий, анализ сделок, просмотр новостей, квартальных отчетов.

торговая-система

Также, рекомендуется прописать пункт о форс-мажорных обстоятельствах, и что делать в случае их наступления — проблемы с интернетом, непредвиденные личные дела. Не вовремя сломавшийся компьютер очень легко может стоить вам денег куда больших, чем просто ремонт техники.

Алгоритм — это единственное, что отличает ваши сделки от ставок. Если вы не гуру рынка, гений аналитики или ясновидящий — алгоритм это необходимость. Он существует для того, что бы у вас перед рынком не осталось слабостей, потому что он их не прощает. “Медленно, но верно”. Скучно, рутинно. Зато весьма прибыльно!

Алгоритм Александра Герчика доступен всегда и для всех тут.

Алгоритм важен, но без солидной базы на рынке делать нечего. Пройдите 5 бесплатных уроков «Формула безубыточного трейдинга» от Александра Герчика — сделайте еще один шаг на пути к качественному трейдингу.

Результаты в трейдинге индивидуальны и зависят от опыта и личной дисциплины. Улучшить свои навыки и дисциплину можно на нашем Курсе: «Трейдинг Основы»

Полная версия материала доступна зарегистрированным пользователям

Зарегистрируйтесь и смотрите в свое удовольствие

Нажимая на кнопку я подтверждаю, что я
прочел(-ла) и принимаю Условия оказания услуг
и Политику конфиденциальности

Полная версия материала доступна зарегистрированным пользователям

Зарегистрируйтесь и смотрите в свое удовольствие

Полная версия материала доступна зарегистрированным пользователям

Восстановление пароля

Введите email, который вы
указывали при регистрации

Нужно ли разрабатывать торговую стратегию (систему)?

Прежде всего, хотелось бы порассуждать, а нужно ли вообще составлять какие то планы, стратегии? Может проще торговать, что называется «от фонаря»? Захотел открыть позицию, открыл, пошло в твою сторону, ждешь прибыли, нет значит закрылся по стопу.

Почему многие преуспевающие трейдеры советуют разработать свою стратегию?

Да все просто, дело в том, что если вы открываетесь не придерживаясь никаких правил, через неделю вы не сможете ответить, по какой причине была совершена та или иная сделка. Хорошо если все ваши сделки приносят прибыль (думаю это только супер везунчику под силу), а если ваши сделки приносят убыток? Что делать? 

Надо анализировать, разбираться что происходит не так. А что можно проанализировать, если сделки открывались без системно или другими словами, хаотично. Ни про какой анализ говорить не приходится, поэтому, прежде чем начинать торги, каждому трейдеру жизненно необходимо разработать торговую систему и придерживаться ее.

Торговая система (стратегия) — это свод неких правил, по которым трейдер, анализирует, рассчитывает позицию и совершает сделки. Торговая стратегия обязана учитывать все возможные нюансы.

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

Скрупулезный подход к разработке торговой стратегии

Но есть и исторические наработки, то, чем пользовались трейдеры, которые составляли торговые стратегии для себя. Не надо по 100 раз изобретать велосипед, возьмите то, что уже придумано и добавьте своей приправы. Иначе, вам придется переписывать историю и совершать, уже совершенные старшим поколением ошибки (ознакомьтесь с наиболее распространенными ошибками начинающего трейдера).

Для начала, трейдер должен разобраться, какой стиль торговли ему подходит на данный момент.

Более опытные трейдеры, надеюсь поймут, почему говорю про «данный момент«. Новичок не может со стопроцентной уверенностью сказать, что мой путь это внутридневная торговля, или скальпинг. Хочешь не хочешь, попробовать придется все. Но на первых парах, можете прочитать о каждом виде торговли, и выбрать то, что на данный момент больше подходит вашему психологическому состоянию.

1. Выберите рабочий таймфрейм

Существует два торговых стиля: долгосрочная и краткосрочная торговля. Многие трейдеры поспорят с этим, мол: «где же скальпинг, внутридневная торговля, трейдеры инвесторы«. Спорить не буду, у каждого свои представления, но для меня именно два стиля, являются основными, все остальное, это как бы подкатегории.

Долгосрочные торговые стратегии

Данный вид торговли рассчитан на удержание позиции от недели и более. В эту категорию можно отнести инвесторов, которые смотрят на рынок не с целью извлечь прибыль сиюминутно, а как раз то с прицелом на будущее. Так как у долгосрочника нет предела удержания позиции, он как и инвестор способен держать позицию очень и очень долго, пока не настанет время забирать прибыль.

Краткосрочные (дневные) торговые стратегии

Этот вид торговли подразумевает работу более быструю. Краткосрочник анализирует более мелкие колебания и пытается заработать на дневном интервале. К этому стилю можно отнести скальперов, которые в день открывают и закрывают более 50, а то и 100 ордеров, или дейтрейдеров, которые стараются поймать внутридневные движения.

Но не советую зацикливаться на выборе стиля, это совершенно не важно к какому стилю, вас приписывают другие. Можно открыть сделку на 5-ти минутке, и вот вы уже скальпер, удержали позицию до конца дня, и вот вы уже дейтрейдер, не видите оснований для закрытия и на следующий день, и вот вы уже долгосрочный трейдер.

Так что, выбирайте исходя из свободного времени. Есть время посидеть и поторговать внутри дня, используйте для анализа более мелкие таймфреймы, нет времени, ваши интервалы D1, W1 и месяц.

2. Выбор метода анализа 

На следующем этапе, трейдер должен определиться, что именно будет использоваться для анализа рынка (индикаторы, трендовые линии, уровни поддержки / сопротивления, фундаментальный анализ). 

Предположим выбор пал на уровни поддержки / сопротивления (вы можете использовать то, что понравилось вам). Давайте разбираться на примере, как должен действовать трейдер.

Прежде всего, нужно найти некую закономерность, откуда с большой вероятностью отскакивает цена (рис. 1). 

Предположим вы видите постоянные отскоки от круглых чисел (1.100, 1.150, 1.200). Прогоните по истории и посмотрите, как цена отрабатывала эти уровни ранее, если круглые числа действительно дают постоянный отскок цены, проанализируйте как входить в сделку, отложенным ордером или открывать по рынку.

Как создать торговую стратегию - Ищем закономерности Рис. 1. Уровень, от которого цена постоянно отскакивает.

На рисунке 1 изображен уровень поддержки валютной пары GBPUSD. Видно, что цена несколько раз билась в уровень 1.5650 и не разу не закрепилась ниже. Для себя мы должны отметить, что данный уровень является сильным и можно попробовать зайти в лонг (купить).

Где лучше поставить stop loss (рис. 2)? Как разработать торговую систему - Выбираем место для Stop Loss`a

Рис. 2. Установка Stop Loss`a.

После того как уровень поддержки найден, обращаем внимание на хвосты (тени свечей). Уровень тестировался около 5 раз, а хвосты останавливались примерно на одном уровне. Для себя отмечаем, что если мы правы и пара действительно пойдет в лонг, то с большой вероятностью, ниже хвостов цену опустить не должны, а значит найден идеальный уровень для Stop Loss`a.

Где установить take profit (рис. 3)?

 Как создать торговую систему (стратегию) - Выбираем место для Take Profit`a

Рис. 3. Выбираем место для Take Profit`a.

К take profit`у можно подойти с фантазией. Имеется два уровня, один в районе 1.5670, второй 1.5690 (думаю понятно почему отмечены эти уровни). При покупке от уровня поддержки, вполне нормаль, если часть позиции будем закрывать вблизи первой цели, остальное оставим до цели номер 2.

На этом, выявление закономерностей закончено. Если у вас не хватает идей для выявления закономерностей, можете воспользоваться нашими наработками перейдя в раздел Торговые стратегии для заработка.

Важно!! Приведенный выше пример, можно использовать как основание для входа в позицию.

3. Управление капиталом 

На следующем шаге, следует разобраться каким объемом входить в сделку.

Сделать это не трудно, об этом частенько пишу на страницах своего сайта, но на всякий случай повторюсь.

Вы должны заложиться на допустимый риск на сделку. Очень часто пишут про 2-5% от депозита, будем придерживаться этих цифр. 

Что это значит? К примеру, ваш депозит составляет 10 000$, 2-5% составят 200 — 500$. То есть, в одной конкретной сделке, разрешено рискнуть 200 — 500$.

Осталось рассчитать каким лотом можно войти, в зависимости от установленного стопа. Для этого почитайте статью Кредитное плечо на рынке Форекс, в которой детально описана процедура расчета.

Не стоит забывать, что соотношение stop loss`а к take profit`у, должно превышать 1 к 2. В примере выше, отчетливо видно, установленный стоп чуть больше 10 пп, тейк даже до первой цели превышает 20 пп. В данном случае соотношение 1 к 2 и это нормально, тк имеется дальнейший потенциал к росту.

4. Учитываем все возможные нюансы

Разработать прибыльную торговую стратегию (систему) это не только определить места входа и выхода с нужной лотностью. Трейдер обязан учитывать абсолютно все:

  • какими инструментами торговать;
  • торговать ли на новостях или нет;
  • каким объемом торговать;
  • как входить в сделку;
  • как выходить из сделки.

Не забудьте учесть ваш рабочий график. Торгуя на круглосуточном рынке Форекс, очень трудно поймать грань, во сколько начинать торги, во сколько заканчивать. Невозможно торговать всегда, организм должен отдыхать, да и ваши родные, так же нуждаются в вашем внимании.

Очень часто, трейдеры не учитывают такие вещи как:

  • что делать, если отключили интернет?
  • что делать, если не работает торговый терминал?
  • сколько процентов от заработка выводить?
  • какой терминал использовать для торговли?
  • и многое другое.

5. Поторгуйте на демо счете

Глупо бросаться сразу в бой. Для начала, опробуйте разрабатываемую стратегию на демо счете. Проверка стратегии на истории — это очень хорошо, но все же в реальном времени, так сказать в онлайн, 100% проявятся некоторые изъяны.

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

6. Переходите на реальный счет

Если все идет по плану и ваша стратегия приносит положительный результат после прогона на демо счете, можно пробовать реальные деньги.

И снова предостережение, используйте на первых парах самые минимальные лоты. Торгуя на реальные деньги, хочешь не хочешь включаются эмоции, которые так или иначе могут мешать адекватно совершать сделки.

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

7. Роль дневника сделок в торговой стратегии

И последнее. Составить торговую систему (стратегию) без дневника сделок, просто не реально. Вы обязаны записывать все свои сделки очень подробно. В оптимальном варианте, кроме записи сухих цифр (по такой то цене купил, по такой то продал), больше всего нужно знать свое эмоциональное состояние в моменты совершения и удержания позиции.

Отмечайте очень подробно, в дальнейшем, только ваши записи помогут понять что было сделано правильно, а что нет. Только дневник сделок поможет подкрутить нужные винтики и заставить вашу торговую стратегию приносить прибыль.

Заключение

В данной статье, подробно рассказано о разработке торговой стратегии. Самое трудное в трейдинге, не найти закономерности или правильно определить лотность, а придерживаться собственных записей. 

Знаком с очень большим количеством трейдеров, которые имеют уникальные торговые системы, они логичны и при прогоне по истории, приносят хорошую прибыль. Но к сожалению, не могут на них заработать только потому, что сами же нарушают прописанные правила.

Надеюсь данная статья поможет составить торговую стратегию (систему), но остальное зависит только от вас и ваших аналитических способностей. 

Запомните, торговля, анализ, разбор сделок — это только 10% успеха, остальные 90% это психология, вера в себя и в свои возможности. Удачи и до встречи!!!

Чтобы написать своего «торгового робота», для начала вы должны правильно составить алгоритм (порядок действий), по которому он будет работать.

Алгоритмы бывают: простые – всего с одним условием, и сложные – с двумя и более условиями. Зачастую для правильной и прибыльной работы автоматизированной торговой системы, требуется два и более условия как для входа в позицию, так и для выхода из неё.

При написании алгоритма необходимо тщательно проработать каждое его условие. Иначе вы рискуете столкнуться с некорректной работой «торгового робота», а это, безусловно, приведет к незапланированным потерям вашего капитала.

В алгоритме торговой системы обязательно должны быть учтены следующие моменты:

1. Когда должен начинать работать робот;

2. Проверка на исполнение заявки, сделки, стоп-заявки;

3. На каких торговых площадках, и с какими инструментами будет работать автоматическая торговая система;

4. Когда робот должен прекратить свою работу. В определенное время (например, окончание торговой сессии) или при наступлении каких-либо условий (например, уменьшение депозита на 1 процент за одну торговую сессию);

5. Когда робот должен приступать к подаче заявок, если его подключение произошло не сначала торговой сессии. По условиям алгоритма торговый робот производит покупку акций при достижении пороговой цены. Если к моменту включения торгового робота это условие уже наступило и цена находится выше пороговой отметки, в этом случае что должен будет делать робот, ждать, когда цена упадет и вновь пробьет пороговую цену снизу вверх или покупать по текущей цене;

6. Как совершить сделку, лимитированной заявкой или брать по рынку.

Запишите составленный алгоритм на бумаге. Лучше, если он будет изображен схематично – это поможет вам не упустить ничего важного. Когда вы расписываете весь алгоритм действий, у вас могут возникать новые идеи для системы или могут добавиться определенные условия при работе робота, которые даже не появлялись в мыслях.

Правильно составленный и записанный алгоритм торгового робота поможет вам быстро и безошибочно его запрограммировать.

Если алгоритм очень сложный, не всегда удается предусмотреть все условия, и исправлять ошибки и недочеты придётся во время тестирования робота.

Пример написания простого алгоритма с развитием различных событий для покупки акций Газпрома представлен в виде текста и блок-схемы.

Условия алгоритма: купить 1000 акции (лотов) Газпрома, когда цена превысит значение пороговой цены в 190 рублей.

Чтобы правильно написать робота по заданным параметрам, нам нужно ответить на один вопрос:

Как будет производиться покупка?

— покупаем по рынку, то есть берем все 1000 лотов по рыночной цене;

— выставляем лимитированную заявку с заданным спрэдом.

При выборе первого условия заявка просто исполняется по рыночной цене.

При выборе второго условия, возникают следующие варианты событий:

1. Полное исполнение заявки.

2. Заявка исполнилась не полностью, т.е. приобретена только часть лотов, а цена «ушла» выше пороговой цены.

3. Заявка помещается в стакан, т.е. не приобретено ни одного лота, а цена уже «ушла» выше пороговой цены.

Если не произошло полное исполнение заявки вам необходимо определить порядок действий системы при двух других вариантах, а именно:

— по истечении определенного времени заявка исполняется по рынку;

— заявка снимается;

— переставляется на Х пунктов ближе к цене.

В зависимости от выбранного вами решения необходимо продумывать следующие пути развития событий и отвечать на вновь возникшие вопросы.

После того как нарисована блок-схема и проработаны все основные моменты,  можно приступать к программированию робота.

Автор статьи — Дмитрий Высоцкий — успешный ученик Дмитрия Михнова, трейдер и разработчик систем автоматической торговли (торговых роботов).
На данный момент сам успешно торгует как вручную, так и при помощи роботов.

P.S.

Все подробности алкотрейдинга и навыки по роботопостроению вы можете узнать с помощью видеокурса «Торговые роботы с нуля»

А также — напишите в комментариях ваши мысли и вопросы по теме статьи!

Введение

Торговля на рынках без торговой системы с вероятностью, стремящейся к 100%, неизбежно приведет трейдера к потере своего депозита. Неважно, на каких рынках торгует трейдер, долгосрочный результат неопытного трейдера закономерен. Для того, чтобы зарабатывать на рынке, нужна торговая система или алгоритм.

Существует множество торговых систем и алгоритмов, и среди них есть математически прибыльные алгоритмы — это всевозможные виды арбитража, HFT, опционные стратегии и различные виды торговли рынка СПОТ против его производных инструментов. Но у всех широко известных алгоритмов есть свои недостатки. Они или имеют низкую прибыльность, или требуют высокой конкуренции за ликвидность и скорость исполнения ордеров. Поэтому трейдеры стремятся разработать собственные торговые алгоритмы, основанные на уникальной логике.

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

Проблема в том, что очень мало людей понимают, как именно искать закономерности, какие закономерности рабочие, а какие нет и почему. Почему, накидав на график стандартных индикаторов или скачанных из сети нестандартных, они не получают прибыльный алгоритм. Пытаются оптимизировать параметры своей стратегии в оптимизаторе в надежде получить прибыль, а в итоге просто подгоняют параметры своей стратегии к небольшому участку истории, и на форвард периоде получают закономерный убыток. Оптимизатор — нужный и полезный инструмент, но им нужно пользоваться для поиска оптимальных параметров своего уже прибыльного алгоритма, а не выводить убыточную систему в плюс, подгоняя параметры на исторических данных.

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

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

Поиск закономерностей ценообразования

Разработка торгового алгоритма должна начинаться с поиска закономерности ценообразования, которая позволит нам получить положительное матожидание прибыли во время торговли. Закономерность может быть следствием разработанной ранее гипотезы ценообразования или найдена случайно. В науке часто встречаются оба варианта развития событий, некоторые изобретения делаются случайно, другие, наоборот, являются продуктом долговременных исследований. Ранее в статье «Дискретизация ценового ряда, случайная составляющая и «шумы»» был рассмотрен переход от свечных графиков к блоковым, и описаны причины перехода, поэтому в дальнейшем я буду анализировать не свечные графики, а блоковые.

В своей предыдущей статье «Что такое тренды и какова структура рынков — трендовая или флэтовая?», я разработал определение для понятия тренд и провел исследование, какую структуру имеют рынки  —   трендовую или флэтовую. Статью рекомендую к ознакомлению, чтобы был понятен дальнейший ход мысли.

Анализ показал, что большинство рынков имеют трендовую структуру, то есть вероятность продолжения тенденции выше вероятности разворота. Это следует из того, что плотность распределение приращений за N шагов для ценовых рядов шире и ниже, чем плотность распределение приращений для процесса с 50% вероятность разворота на каждом шаге. Пример показан на рисунке 1.

amd distrib

Рисунок 1.

На рисунке 1 красным показано эталонное распределение плотности вероятности приращений для процесса из 40 шагов с вероятностью разворота каждого следующего шага, равной 50%, для этого использовалось 5000 выборок. Белой гистограммой показаны измеренные значения для 40 шагов акции компании AMD для тех же 5000 выборок. Было посчитано, сколько шагов по вертикали, какое число раз цена прошла за 40 шагов из 5000 измерений, и выведено это в форме гистограммы.

Другими словами, было взято 5000 отрезков по 40 шагов, измерено сколько каждый из отрезков прошел шагов по вертикали и выведено в виде гистограммы. Например, за 40 шагов для акции компании «AMD» по вертикали цена прошла 0 шагов 390 раз, для эталона должна пройти 626,85 раз.

Этот график говорит о том, что рыночная цена проходила за 40 шагов ноль шагов по вертикали значительно реже, чем процесс, у которого вероятность разворота каждого следующего шага 50%. Следовательно, у исследуемого графика вероятность продолжения тенденции выше 50%, и акция склонна к продолжению тенденции. Другими словами, цена, пройдя 10 пунктов, с большей вероятностью пройдет еще 10 пунктов в ту же сторону, чем развернется. 

vertical steps
Рисунок 2.

На рисунке 2 показан пример, как считалось число шагов по вертикали. Берется выборка из 40 блоков (шагов) и считается, сколько блоков цена прошла по вертикали за эти 40 блоков. На рисунке за 40 шагов цена прошла 7 шагов по вертикали. Потом берется еще 4999 выборок по 40 шагов и измеряется сколько на них было пройдено по вертикали. Затем измеренные результаты выводятся в форме гистограммы, у которой по оси Х откладывается амплитуда, а по оси Y — число попаданий в эту амплитуду.

Анализ найденной закономерности

После того как найдена закономерность, нужно ее проанализировать. Для этого нужно взять другие торговые инструменты и другие масштабы размера блоков, чтобы стало понятно: эта особенность свойственна только конкретному торговому инструменту с конкретным масштабом или присуща всем биржевым инструментам на любых масштабах. В данном примере было проанализировано больше 30 валютных пар, большое количество акций, торгующихся на Российском и Американском рынках, более десятка основных криптовалют, сырьевые инструменты. Для анализа по каждому инструменту были использованы все масштабы с размером блока от 1 пункта до тысяч пунктов. Сделан вывод, что все проанализированные торговые инструменты склонны иметь трендовую структуру на любом масштабе, но с увеличением масштаба трендовость инструмента снижается.

Так была найдена закономерность: рынки склонны быть трендовыми на любых масштабах, но с увеличением масштаба трендовость снижается, то есть, пройдя N пунктов по вертикали, с вероятностью больше 50% цена пройдет еще столько в ту же сторону. Данная закономерность хороша тем, что позволяет использовать для торговли простую трендовую стратегию, по которой можно после каждого шага вверх открывать позицию Buy и после каждого шага вниз открывать позицию Sell. 

Далее следует анализ применяемого подхода. Возможно, мы нашли не закономерность, а ошибку в своем методе анализа структуры рынка, в таком случае рынки не трендовые, и заработать на этом не получится. Нужно начать с основ, а именно, как строятся блоки, на которых мы нашли тренды. Индикатор блоков вы можете взять в предыдущей статье «Что такое тренды и какова структура рынков — трендовая или флэтовая?». В данном случае ценовой ряд квантуется («нарезается») блоками размером N пунктов. То есть каждый раз, когда цена проходит N пунктов от предыдущей точки отсчета, формируется блок размером N пунктов. Если блок размером 10 пунктов, то цена проходит 10 пунктов и формируется блок, у которого есть цены открытия и закрытия. Далее ждем, пока цена пройдет еще 10 пунктов в одну из сторон и закрываем еще блок и так далее. На первый взгляд проблем нет, но для построения блоков используются цены закрытия минутных свечей, и это важно в дальнейшем.

delta

Рисунок 3.

При дальнейшем анализе выявляются 2 проблемы:

  1. Дельта между закрытием свечи и блока. На рисунке 3 показана ситуация, когда цена закрытия падающего блока оказывается выше цены закрытия падающей свечи. Образующаяся дельта между ценой закрытия блока и ценой закрытия свечи может свести на нет всю прибыль, которую мы планировали получить от того, что рынок трендовый. Причина в том, что планировалось использовать простой алгоритм: открывать позиции Buy после каждого растущего блока и открывать позиции Sell после каждого падающего блока. Но так как блоки формируются по закрытию свечи, то мы получим сигнал на то, что блок сформирован только после того, как закроется свеча, а значит открыть/закрыть позицию сможем по цене хуже, чем нужно. Эта дельта может компенсировать всю прибыль, которую мы получим из-за того, что рынок трендовый, и матожидание прибыли останется равным нулю.
  2. Комиссии и спред. Возможно рынок трендовый ровно настолько, чтобы компенсировать спред и комиссии. В таком случае, если мы будем открывать/закрывать позиции по рынку, то потери из-за открытия по худшей цене и комиссии перекроют всю прибыль, которую мы получим, используя данную закономерность. Да, на биржевых рынках мы можем использовать лимитные ордера, тогда спред платить не придется, но комиссии остаются. На FOREX лимитные ордера не помогут бороться с данной проблемой из-за особенностей исполнения.

На текущем этапе выявлены две возможные проблемы, которые могут не дать заработать, используя найденную закономерность. Для того, чтобы понять, насколько сильно эти проблемы повлияют на итоговую прибыль, можно:

  • Измерить вероятность продолжения тенденции для конкретного инструмента на большой выборке, так мы получим точное значение вероятности для расчета матожидания прибыли;
  • Собрать статистику в пунктах по дельте, возникающей между закрытием блока и предполагаемой ценой открытия позиции, найти среднее значение;
  • Найти средний спред, если работаем рыночными ордерами или на форексе, добавить комиссии;
  • Из полученного матожидания прибыли в валюте депозита вычесть все рассчитанные накладные расходы и получить прогноз по реальному матожиданию системы;
  • Если итоговое матожидание прибыли остается выше нуля, то можно переходить к следующему шагу.

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

Разработка гипотезы, объясняющей наличие данной закономерности

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

У нас закономерность присутствует на всех проверенных инструментах и на всех масштабах, но с увеличением масштаба степень трендовости падает. Вероятно, описанные выше два фактора (дельта и комиссии) действительно влияют на эту закономерность. Тогда выдвинем два тезиса:

  • Чем больше размер блоков, тем меньше получается относительная дельта при закрытии блока и тем меньше получается ошибка при открытии/закрытии позиции. Потому что блоки строятся по ценам закрытия минутных свечей, а их размер достаточно стабилен в определенном диапазоне. Соответственно, чем больше размер блока и чем меньше дельта, тем меньше получается трендовость у инструмента. То есть уменьшается ошибка в нашем методе определения трендовости.
  • Чем больше размер блока, тем меньше спред, и комиссии влияют на характеристики рынка, потому что размер спреда и комиссий становится небольшой относительно размера движений. Так как рынок достаточно эффективен, возможно он реагирует на этот факт пропорциональным уменьшением трендовости. 

Тут нужно зайти немного вперед и уточнить, что на малых масштабах даже если убрать ошибки, возникающие из-за дельты, рынки действительно трендовые, но их трендовость ровно такая, чтобы компенсировать спред и комиссии. Не зная данного факта, на эту уловку часто попадаются разработчики «скальперов». Они думают: «Вот надо найти брокера с меньшими комиссиями и мой скальпер начнет зарабатывать, ведь если уменьшить спред и комиссии, то он показывает шикарные результаты». Как правило нет, не начнет, рынок на малых масштабах трендовый ровно настолько, чтобы компенсировать спред и комиссии. Если бы спред и комиссии были меньше, то другие участники рынка уже использовали бы эту закономерность и разрушили ее. Тут я пишу не про всех скальперов, а про простых роботов, не использующих фронтранинг, анализ объемов в стакане и прочие рабочие техники.

Предположим, что не только исследованные рынки трендовые, но и все остальные, затем ответим на вопрос: «Почему все рынки трендовые?»

Начнем с простого: откуда берется прибыль при торговле на рынке? Так как на рынке участники торгуют против друг друга (справедливо даже если вы торгуете в ДЦ на FOREX), то для того, чтобы заработать, нужно, чтобы кто-то потерял равную сумму, плюс комиссия брокера. Активы покупаются и продаются участниками торгов друг другу и каждый стремится извлечь свою выгоду. Значит, покупатель и продавец, заключая сделку, оба пытаются извлечь максимальную выгоду из данной сделки. То есть в один и тот же момент времени покупатель считает, что выгодно купить, а продавец, что выгодно продать. Один из них явно ошибается, или нет? В итоге оба могут получить прибыль, когда покупатель продаст свой актив третьему лицу, но рано или поздно найдется контрагент, который потеряет деньги на этой сделке. В итоге вся торговля строится на том, что один из контрагентов ошибается при определении своей выгоды.

Если вы не знаете, как происходит ценообразование на биржевых рынках, то рекомендую сначала ознакомиться со статьей «Основы биржевого ценообразования на примере срочной секции Московской биржи«. Если знакомы, то будет проще. По большому счету, не важно на каком рынке вы торгуете: биржа, криптовалюта или FOREX. Фундаментальная основа ценообразования везде одинакова, но отличаются торговые условия и возможности для анализа.

Далее для упрощения и понимания, нужно рассмотреть граничные варианты формы ценового ряда. Для графика цены возможны два противоположных варианта развития событий — линейный бесконечный тренд и синусоида. Было бы удобно, если бы график был в форме синусоиды, все бы знали когда покупать и продавать актив. Так же было бы удобно, если бы график был линейно восходящий, тогда очевидно, что продавать не нужно, нужно постоянно покупать, и останешься в прибыли. Но такие формы графика невозможны по причине того, что на максимумах не будет покупателей, а на минимумах не будет продавцов. На рисунке 1, показан гипотетический пример ситуации, когда график цен синусоидальный, и пример стакана цен для него.

sinus
Рисунок 4.

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

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

График цен на эффективном рынке должен занимать максимально промежуточное положение между линейным и синусоидальным. Должен иметь структуру достаточно сложную, при которой выгода будет максимально не очевидна как покупателям, так и продавцам. Синусоидальный график и линейный характеризуются низкой энтропией. Для того, чтобы совершались сделки, энтропия должна быть больше. Чем больше участников на рынке и чем они «умнее», тем сильнее график цены будет стремиться к состоянию максимальной энтропии.

Если брать энтропию Шеннона, то она принимает максимальное значение на равномерном распределении. У нас процесс не равномерный, а больше похож на нормальный. Но нормальное распределение можно получить из равномерного и наоборот, тем более мы используем блоки с фиксированным размером шага. Другими словами, максимальной энтропией обладает процесс, у которого нет никаких закономерностей, вероятность смены направления каждого следующего движения равна 50%. Но наш анализ показывает, что у рыночного графика вероятность смены направления отлична от 50%, значит имеется память и энтропия не максимальна.

Важно, что рынок будет стремиться к максимальной энтропии, но достигнет этого состояния только тогда, когда станет бесконечное число участников (очень высокая ликвидность) или они будут бесконечно «умны». Под термином «умный» я понимаю способность выявлять сложные закономерности. Чем более сложные и не очевидные закономерности способен выявить участник, тем он «умнее». Бесконечно «умный» участник способен выявлять и эксплуатировать абсолютно все закономерности. Условие (или бесконечно много участников, или они бесконечно умны) стоит потому, что бесконечное число участников будут обладать бесконечной вычислительной способностью, даже будучи не очень «умными» смогут выявить все закономерности методом перебора

Данная гипотеза объясняет, почему графики цен на финансовые инструменты становятся сложнее. Если в начале 20-го века можно было получить прибыль, торгуя от среднего, то с развитием алготрейдинга участники становятся «умнее», закономерности становятся сложнее, энтропия растет, на рынке становится сложнее зарабатывать. Что значит: участники становятся «умнее»? У них растет вычислительная мощность, скорость принятия решений, способность быстрее и точнее определять свою выгоду и способность находить все более сложные закономерности, пусть даже методом перебора.

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

Выводы из гипотезы, объясняющей закономерность, получились такие: 

  • Непрерывная эмиссия денежных средств приводит к тому, что рынок становится трендовым. В таком случае активно развивающиеся активы, обладающие высокой инвестиционной привлекательностью должны обладать большей трендовостью, чем не развивающиеся и рынки, имеющие слабую инвестиционную привлекательность.
  • Степень трендовости инструмента будет со временем падать, потому что растет число участников, участники становятся «умнее», и актив не может развиваться бесконечно, скорость развития и привлекательность актива со временем падает, но у каждого актива это время разное.
  • Трендовость развитых валютных пар (таких как EURUSD) должна быть ниже, чем у акций развивающихся компаний, потому что на развитых валютных парах задействовано больше участников, которые совершают больше торговых операций, что увеличивает энтропию. Плюс валютами торгуют банки, они вынуждены совершать валютообменные операции и обладают большими ресурсами для создания «умных» торговых алгоритмов, с целью извлечения дополнительной прибыли. К тому же такие валютные пары, как EURUSD, обладают очень большой ликвидностью, а высокая ликвидность приводит к снижению трендовости.

Проверка гипотезы

Тут нужно уточнить, что в разделе «Разработка гипотезы, объясняющей наличие данной закономерности», выдвинута лишь гипотеза, пытающаяся объяснить наличие закономерности. Данная гипотеза не претендует на то, чтобы быть 100% верной и может содержать в себе неточности, потому что является лишь шагом в разработке алгоритма. Это пример того, как можно строить логическое рассуждение, пытаясь объяснить найденную закономерность. Данный подход нужен для того, чтобы максимально избежать суеверий, связанных с рынком. Например, если бы у нас была закономерность типа: «RSI (Stochastic, MACD, волны Эллиота, подставьте свой вариант) зашел в зону перекупленности, сформировал паттерн и нужно продавать», то важно тоже спросить себя: «А почему это должно работать?» и «Какие фундаментальные причины приводят к тому, что это работает?».

Проверку гипотезы будем делать грубую, без сильного углубления в детали, сейчас важно понять, коррелируют ли наши выводы с реальными данными. Сделать проверку можно, сравнив степень трендовости разных инструментов. Мы сделали предположение о том, что активно развивающиеся, инвестиционно привлекательные торговые инструменты должны быть более трендовые, чем развитые или инструменты, представляющую меньшую инвестиционную привлекательность. Вторым предположением было то, что чем больше участников работают с торговым инструментом и чем выше ликвидность, тем он будет менее трендовый. Сделаем простую проверку данного предположения.

В конце статьи «Что такое тренды и какова структура рынков — трендовая или флэтовая?», сравнивались по степени трендовости несколько торговых инструментов, такие как EURUSD, AMD, AAPL и другие. Сделаем аналогичное сравнение в данной статье, и для примера возьмем 4 инструмента:

  • Валютную пару EURUSD как инструмент с наибольшим количеством участников, низкой инвестиционной привлекательностью и высокой ликвидностью. Нужно уточнить, что у валют низкая инвестиционная привлекательность, потому что существует инфляция, деньги всегда обесцениваются и инвестировать в валюту невыгодно в долгосрочной перспективе.
  • Акции компании «Appl» (AAPL) как наиболее инвестиционно привлекательный и развивающийся инструмент, на котором торгует большое число у частников. Акция обладает высокой ликвидностью, но значительно меньшей, чем EURUSD.
  • Акции «Сбербанка» (SBER) имеют ликвидность значительно ниже вышеперечисленных, инвестиционную привлекательность в мировых масштабах значительно ниже, чем у «Appl», и число участников соответственно ниже.
  • Акции «Ашинский МЗ» (AMEZ). Имеют низкую инвестиционную привлекательность даже по меркам Российского рынка и низкую ликвидность.

EURUSD

Рисунок 5а.

AAPL

Рисунок 5б.

SBER

Рисунок 5в.

AMEZ

Рисунок 5г.

Как видно из рисунков 5, EURUSD обладает низкой трендовостью 1.068, акция «Appl» высокой трендовостью 1.3, «Сбербанк» имеет трендовость 1.168  — ниже, чем у «Appl», но выше, чем у EURUSD. Акции AMEZ имеют флэтовую структуру, то есть степень тренда у них ниже 1.

Можно сделать вывод:  предположение о том, что высокая инвестиционная привлекательность повышает степень трендовости, а большая ликвидность и большое число участников, снижают степень тредовости, не противоречит экспериментальным данным, значит гипотезу можно использовать в дальнейшем.

Разработка торгового алгоритма

Имея закономерность, разрабатываем под нее торговый алгоритм. Закономерность простая, поэтому и торговый алгоритм будет не сложный. Торговля будет вестись на блоках, то есть предварительно нужно преобразовать свечные графики m1 в блоки размером N пунктов. Алгоритм построения блоков будет интегрирован в робота. Торговый алгоритм будет следовать напрямую из формулы для определения матожидания прибыли:

m=(P(tp)*tp)-(P(sl)*sl)

где:

  • m  матожидание прибыли,
  • P(tp)  вероятность прибыльной сделки, 
  • P(sl)  вероятность убыточной сделки,
  • tp  средний размер прибыльной сделки,
  • sl — средний размер убыточной сделки.

и будет работать по:

  1. Открываем позицию после того, как закрылся очередной блок падающий или растущий;
    • если закрылся падающий блок, то открываем позицию Sell;
    • если закрылся растущий блок, то открываем позицию Buy;
    • после того, как позиция открыта, ждем сигнал на закрытие.
  2. Закрываем позицию, после того, как был сформирован блок противоположного направления от того, который послужил сигналом на открытие. Если открыта позиция Buy, то ждем формирования падающего блока и закрываем позицию. После того, как на падающем блоке закрылась позиция, можно открыть позицию Sell. Так у нас в рынке всегда одна позиция.
  3. На рисунке 3 показан случай, когда свеча и блок закрываются по разной цене и образуется дельта. Это особенности алгоритма формирования блоков, поэтому нужно предусмотреть контроль цены, чтобы мы не открылись по цене, невыгодной для нас. Добавим условие, что если дельта между ценами закрытия свечи и блока больше определенного значения, то не открываем позицию, ждем, пока цена вернется к цене закрытия блока, и только тогда открываем позицию.
  4. Добавим установку Take Profit и Stop Loss. Они нужны на случай, если размер свечи получается существенно больше размера блока, чтобы прибыльные/убыточные позиции закрывались не только по закрытию блока, но и на больших выбросах;
    • цену SL рассчитаем как: размер блока (BS) умножаем на коэффициент из настроек (ksl) и для позиций Sell к цене закрытия блока (Bclose(op)), на котором был сигнал на открытие позиции, прибавляем полученный результат Sl=Bclose(op)+BS*ksl. Для позиций Buy нужно вычесть из цены закрытия блока Sl=Bclose(op)-BS*ksl;
    • цену TP рассчитаем как: Размер блока (BS) умножаем на коэффициент из настроек (ktp) и для позиции Sell от цены закрытия последнего блока (Bclose(0) отнимаем полученный результат Tp=Bclose(0)-BS*ktp. Для позиций buy нужно прибавить к цене закрытия последнего блока Tp=Bclose(0)+BS*ktp. Тут в отличие от Stop Loss, нужно брать цену закрытия каждого нового блока и после закрытия каждого нового блока, пересчитывать Take Profit. Это нужно, чтобы можно забрать дополнительную прибыль, когда появляются свечи размером существенно больше размера блока.
  5. Функция управления лотом. Помимо стандартных функций управления лотом, добавим функцию, которая будет менять размер лота от текущего размера блока. Это нужно, чтобы при росте размера блока, уровень риска и прибыли оставались стабильными. Для этого введем понятие минимального размера блока (minimum BS), относительно которого будет корректироваться размер лота. Лот для открытия позиций  — это лот из настроек, деленный на отношение текущего размера блока к минимальному из настроек lot=lot(set)/(BS/minimum BS).
  6. Определение размера блока. Эта функция очень важна для стабильной работы алгоритма. Тут можно пойти несколькими путями:
    • фиксированный размер блока, заданный в настройках в формате цены, например 0.02;
    • автоматический размер блока, который будет привязан к размеру свечей того тайм фрейма, на котором работаем. Размер свечей можно получить из индикатора ATR, и дальше для получения размера блока умножать текущее значение ATR на коэффициент. Например, мы хотим торговать на блоках размером 5*ATR. Так при повышении волатильности, будет расти размер блока и система будет адаптироваться к изменяющимся параметрам рынка. ATR можно брать на том тайм фрейме, на котором торгуем или с большего тайм фрейма, если хочется экспериментов.
  7. Разрешение открывать Buy/Sell позиции. Встроим функцию, разрешающую открывать отдельно позиции Buy и Sell. Это будет нужно, чтобы анализировать, как работают сигналы на покупку и продажу.

Получившегося робота прикреплю к статье. Итоговый робот имеет несколько больший функционал, чем описано, но в рамках статьи его рассматривать не будем. 

Проверка торгового алгоритма

Проверять работу алгоритма будем на тех инструментах, поведение которых анализировали. Ранее мы предсказывали, на каких инструментах гипотетически алгоритм должен приносить прибыль, теперь нужно проверить, как алгоритм работает на этих инструментах, чтобы понять, насколько верна была гипотеза.

Проверим на EURUSD. На этом инструменте был слабый тренд и, возможно, этого может не хватить для того, чтобы покрыть комиссии и дельту при построении блоков. Итоговый алгоритм работает как показано на рисунках 6а и 6б.

EURUSD Trade

Рисунок 6а.

EURUSD Trade2

Рисунок 6б.

Тест проводится с 01.01.2018 по 28.07.2020, на тайм фрейме m1 в режиме реальных тиков. Настройки установлены без оптимизации, потому что данным подходом я хочу показать, что при детальной проработке алгоритма, можно отказаться от оптимизации под каждый торговый инструмент. Меняться будут размер блока, минимальный размер блока и лот, чтобы подобрать размер прибыли существенно больше комиссий.

EURUSD tester Chart

EURUSD tester report

Рисунок 7.

По EURUSD, как и ожидалось, спред и дельта при построении блоков компенсировали всю прибыль, которую мы должны были получить из-за трендовости инструмента. В итоге, имеем матожидание прибыли -1,67$ на сделку. Лот менялся динамически от размера блока, при этом средний лот составил 0,078. Разберемся, откуда взялся убыток. Робот пишет в логи спред. При открытии и закрытии позиций, средний спред составил 0,00008. Было заплачено 159,76$ свопов, всего было открыто 614 позиций. Следовательно, средний своп на позицию составил 159,76/614=0,2602$.

Если средний спред 0,00008 и средний лот 0,078, 1 пункт по EURUSD при лоте 0,078 стоит 0,078$, следовательно, спред стоит 0,078*8=0,624$. Итого, общие комиссии складываются 0.624$+0.2602$=1.104$. Получилось, что если бы мы теряли на каждой сделки комиссию, то матожидание было бы -1,104$, а оно 1,67$ ,что на 0,566$ больше. Минимальный размер блока ограничен размером в настройках 0.002, для среднего лота 0,078 — это 15,6$. Грубо оценим, насколько в среднем мог уйти баланс в минус, если бы график баланса был случайным блужданием и размер блока был всегда минимальным. Для этого 15,6*(614^0.5)=386.55$. Теперь прибавим среднюю комиссию на сделку, умноженную на число сделок. 1,104*614+386.55=1064,406$.

Так мы получили величину 1064,406$ в долларах, на которую в среднем должен уходить график баланса в минус, если вероятность открытия позиции в «верном» направлении 50% и за каждую открытую позицию мы платим комиссию. Реально мы получили убыток 1027.45$, что примерно совпадает. Можно сделать вывод, что мы получили убыток, потому что матожидание нашего алгоритма на EURUSD равно нулю. 

Посмотрим, какие результаты получились на более трендовых акциях «Appl» (AAPL), результат на рисунке 8 ниже.

AAPL tester chart

AAPL tester report

Рисунок 8.

По акциям AAPL получается устойчивый плюс с матожиданием 19.33. Это был тест с динамическим лотом, зависящим от размера блока, а размер блока динамически менялся от волатильности. Посмотрим, что будет, если не менять лот динамически. Средний размер лота на рисунке 8 составил 39. Зафиксируем размер лота на значении 39 и посмотрим результат на рисунке 9.

AAPL tester chart fix lot

AAPL tester report fix lot

Рисунок 9.

В целом картина не сильно изменилась, за исключением последней прибыльной сделки и некоторых увеличенных откатов по балансу. На акциях «Appl» размер блока со временем растет, и увеличенный размер блока с фиксированным лотом может показать большую прибыль, но и склонность к просадкам может увеличиться пропорционально.

Далее посмотрим, что будет, если разрешить только Sell позиции. Результаты показаны на рисунке 10.

AAPL tester chart only sell

AAPL tester report only sell

Рисунок 10.

В режиме только Sell получили небольшой убыток, но на рисунке 5б видно несимметричность распределения относительно нуля, поэтому данный результат можно было ожидать. Далее рассмотрим ситуацию для режима только Buy, результаты на рисунке 11.

AAPL tester chart only buy

AAPL tester report only buy

Рисунок 11.

Как видно из рисунка 11, режим только Buy показывает положительные результаты, но все еще хуже режима, в котором разрешены и Buy и Sell позиции. Так как акция склонна к чередованию трендовых участков на падении и на росте, то одновременное использование позиций Buy и Sell позволяет сделать график доходности равномернее.

Проверим, как алгоритм работает на акциях других активно развивающихся компаний. Для начала возьмем акции «AMD». Тут тест будет проведен с  2018.06.01 по 2020.07.28, потому что у моего брокера минутная история начинается с этой даты. Тестировать будем в режиме динамического лота и с разрешенными Buy/Sell позициями. Посмотрим результаты на рисунке 12.

AMD tester chart

AMD tester report

Рисунок 12.

Как видно из рисунка 12, на акциях «AMD», алгоритм показывает стабильный, положительный результат, что совпадает с предположениями, сделанными на основе распределения, показанного на рисунке 1. Далее возьмем еще одну активно развивающуюся компанию, «Tesla», и на рисунке 13 посмотрим, как ведет себя алгоритм на ее акциях.

TSLA tester chart

TSLA tester report

Рисунок 13.

Как видно, на акциях TSLA, алгоритм показывает себя стабильно благодаря тому, что у данной компаний, как и у предыдущих, высокая инвестиционная привлекательность и большой потенциал роста.

Для сравнения проведем тест на акциях одного из лидеров российского рынка, «Сбербанка». Тестировать будем на том же периоде, что и в предыдущих случаях. Комиссии в тестере установлены такие, которые предоставляет брокер «Открытие», это 0,057% за объем. Тестирование проводилось без кредитного плеча по реальным тикам. Результат тестирования показан на рисунке 14.

SBER tester chart

SBER tester report

Рисунок 14.

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

Все настройки и отчеты с тестера стратегий приложу к статье, сможете сами детально их проанализировать.

Заключение

После анализа поведения созданного торгового алгоритма можно сделать следующие выводы:

  • Найденная закономерность позволила сделать алгоритм, который способен приносить прибыль без необходимости оптимизации параметров под каждый торговый инструмент. Настройки меняются вручную, но мы заранее знаем, почему устанавливаем тот или иной параметр в настройках.
  • Зная механизм изменения параметров, можно сделать полностью автоматический алгоритм, в котором не нужно будет менять настройки под каждый инструмент отдельно.
  • Мы четко понимаем, какую закономерность эксплуатируем для получения прибыли, а значит, в дальнейшем можем научиться прогнозировать ее усиление или ослабление.
  • Наличие закономерности на том или ином инструменте можно предсказать, имея гипотезу ее возникновения.
  • Нужно развивать гипотезу возникновения трендовости на рынках, чтобы превратить ее в полноценную теорию, описывающую закономерности ценообразования. Достаточно хорошо развив теорию, мы сможем повысить стабильность и надежность и универсальность алгоритма.
  • С развитием конкретного торгового инструмента закономерность будет становиться менее выраженной, потребуется переходить на новые активно развивающиеся инструменты.
  • Метод торговли способен приносить прибыль, но требует доработки. Нужно свести к минимуму дельту между ценой закрытия блока и ценой открытия позиции, возникающую из-за особенностей алгоритма формирования блоков. Один из вариантов, как это сделать  — переход к анализу тиковых графиков, вместо минутных.
  • Зная средний уровень трендовости инструмента, можно собрать статистику по изменению степени трендовости с течением времени и аппроксимировать ее при помощи нелинейных уравнений. В дальнейшем, зная закон изменения трендовости по инструменту во времени, можно разработать механизм контроля отклонения от средней трендовости для того, чтобы повысить прибыльность системы.
  • Данный алгоритм в текущем виде очень простой и был нужен для проверки идеи, но идея показала свою жизнеспособность и потенциал, поэтому его можно существенно доработать для работы на реальных рынках.
  • На фондовом рынке заработать проще, чем на FOREX, и одной из причин является то, что инструменты фондового рынка более трендовые. Но есть и флетовые инструменты, такие, как приведенный пример AMEZ. Для торговли на таких инструментах алгоритм можно переделать, чтобы он работал не на продолжение тенденции, а на разворот. Но это тема отдельного исследования, потому что на активах с низкой инвестиционной привлекательностью возможны проблемы с ликвидностью.
  • Алгоритм совершает сделки по рынку, для повышения доходности можно модернизировать логику под лимитные ордера. Это усложнит логику, но, возможно, позволит повысить прибыльность, нужны дополнительные исследования и разработки.
  • Был показан практический метод применения понятия трендовости, описанный в моей предыдущей статье Что такое тренды и какова структура рынков — трендовая или флэтовая? и практическое применение перехода от свечных графиков к блоковым, описанное в статье 

    Дискретизация ценового ряда, случайная составляющая и «шумы».

Автор идеи и разработки Maxim Romanov, код советника писал Sergey Chalyshev по разработанному ранее техническому заданию.

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как составить график зависимости в эксель
  • Как составить алгоритм вычисления в excel
  • Как найти девушек для тройника
  • Как же хочется найти свою половинку
  • Как найти линию пересечения плоскостей на проекции

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии