Блог им. robot-scalper

Нельзя просто так взять и создать прибыльного торгового робота! Часть 2


Первая часть

Вторая часть

робот, скальер, скальпинг, трейдинг, алгортейдинг, акции, фьючерсы


Вступление

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

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


Основная часть

Итак, первая версия робота Скальпера была готова. Робот выставлял заявки на открытие позиции, если цена достигала экстремума. Торговал в Статическом ценовом канале. Но часто запаздывал с выставлением заявок.
Задача с запаздыванием решалась «довольно просто». Я потратил два дня и две ночи чтобы полностью переписать логику алгоритма. Нельзя было просто добавить одно условие, всё сложнее.
Теперь робот Скальпер стал заранее выставлять две заявки: одну на покупку, на уровне минимального значения цены за последний диапазон времени, а другую на продажу, от максимального значения цены в этом же диапазоне.

При данном подходе выставления заявок обнаружился один довольно удобный момент: если срабатывает одна из заявок на открытие позиции, то вторая заявка, по сути, становится тейк-профитом! Ее не нужно снимать или передвигать. Не нужно выставлять новый тейк-профит.
Эффективность торговли значительно увеличилась! Маленькая победа меня порадовала ))

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

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

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

Благодаря такой оптимизации торгового алгоритма эффективность торговли возросла вдвое! И прибыль стала расти гораздо быстрее. Еще одна маленькая победа! ))


ТЕЙК-ПРОФИТ
На каком уровне его лучше выставлять? Если брать фиксированные X пунктов, то в одном случае цена не дойдет до заявки, а в другом случае заявка сработает, но цена пройдет значительно дальше. Тем самым робот существенно недозаработает.
Как показала статистика, статический тейк-профит — не лучшее решение.

А что если выставлять тейк-профит от противоположной границы ценового канала? Как это и было сделано изначально. Можно получить максимальную прибыль!
Но, как показали тесты, ценовые каналы часто смещаются и вероятность срабатывания такого тейк-профита меньше 50%. Это меня категорически не устраивает. Нужно улучшать данный фактор.

Уменьшая величину тейк-профита я пришел к выводу, что при 60% величины ценового канала имеется довольно высокая вероятность срабатывания прибыльной заявки. Гораздо более 50% сделок закрываются в прибыль. И при этом величина прибыли существенная! Оставляем так.

Поторговав несколько дней роботом Скальпером в данной конфигурации мне стало очевидно, что выставленный тейк-профит на 60% величины канала, это еще не самое оптимальное решение. Если канал смещается стремительно и новый ценовой канал образуется дальше чем на половину от прежнего канала, то тейк-профит "залипает". Я решил, что лучше взять 50%, или 40%, или даже 10% канала в виде прибыли, нежели дожидаться стоп-лосса (а это максимальный разовый убыток в торговой системе).

Осталась нерешенной проблема с наклонными ценовыми каналами и с тейк-профитом. Если в горизонтальном ценовом канале робот все сделки (100%) закрывает в прибыль, то при смещении ценового канала позиция могла «залипнуть» и приходилось фиксировать значительный убыток.


СТОП-ЛОСС
Как сделать так, чтобы робот не закрывался по стоп-лоссам? Ведь если не будут срабатывать стоп-лоссы — не будет и убытков! ))
Ну так, это же очевидно! Ответ лежит на поверхности!
Просто, не нужно выставлять стоп-лоссы! ))) И это не шутка!

Но если позиция "залипла", то не дожидаться ведь маржинкола. Будем выходить из позиции по наилучшим ценам.
Поясню. Если робот купил от нижней границы ценового канала, то заявку на фиксацию прибыли он выставит выше цены покупки.
Но если ценовой канал начнет снижаться, то верхняя граница канала будет тянуть за собой тейк-профит. В итоге робот либо возьмет небольшую прибыль, либо закроется примерно в безубыток, либо зафиксирует небольшой убыток. И только на сильных движениях, которые к счастью происходят не часто, убыток может даже превзойти величину тейк-профита.
К сожалению, предсказать с близкой к 100% вероятностью такое движение в моменте внутри торгового дня не представляется возможным. (Новости глазами отслеживать у меня нет никакого желания.) Поэтому придется пожертвовать частью прибыли.

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

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



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

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

Новый режим торговли я назвал Адаптивным профитом.
На сделки робота стало приятно смотреть. Создавалось такое ощущение, что робот обладает человеческим или искусственным интеллектом! Он стал очень ловко подстраиваться под рынок. Человеку еще постараться нужно так поторговать! ))

Пример сделок в направленном трендовом движении.

робот, скальер, скальпинг, трейдинг, алгортейдинг, акции, фьючерсы


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



Если вам понравилась статья и интересно узнать какие еще параметры есть у моего робота и каким образом они влияют на прибыльность торговли, ставьте плюсик! ))

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

Всем хорошего дня и прибыльной торговли!

★46
53 комментария
это флетовый робот, как я понял.
avatar
аналогичный бот написан и протестирован на реальной торговле несколько недель почти год назад и сейчас бот лежит без работы....
проблема в том, что в бэктесте это
«Очередное улучшение торгового алгоритма состояло в следующем: теперьробот выставляет заявку на покупку от минимума плюс шаг ценыинструмента. И выставляет заявку на продажу от максимума минус шаг цены
действительно улучшает показатели системы, но в реальности на этих «новых» уровнях выставления заявок ТОЖЕ не хватает контрагента. И в реальности торговли получается достаточное большое количество не исполненных сделок, что съедает практически всю прибыль. Такова статистика реальных торгов в реальном стакане.
avatar
oktb, Напишите статью про своего робота, чтобы можно было сравнить насколько он аналогичный.

достаточное большое количество не исполненных сделок, что съедает практически всю прибыль

Я считаю, что неисполненные заявки никак на прибыль не влияют.
avatar
Robot-Scalper.ru, как раз влияют. Самое главное что снижается доля выигрышей, а 100% исполнение получают только стоп лоссы. Рад если у Вас все работает, но у меня похожее мнение как у oktb
avatar
antonbell, видимо мы говорим о разных вещах. Статический стоп-лосс у меня практически никогда не отрабатывает. В 99% случаев робот выходит из позиции по наилучшей цене. А если тейк-профит немного уменьшился, то это всё равно лучше, чем стоп-лосс. Но это исполненная заявка.
А выставление и снятие неисполненных заявок на доходность не влияет. Как-то так. ))
avatar
Robot-Scalper.ru, какая разница если я вижу что не срабатывает хоть сеткой хоть как — но профиты… и бетест отличается от реала именно тем что процент выполнения сделок именно профитных ниже чем практика. 
avatar
Robot-Scalper.ru, а что если кидать заявки по маркету?
avatar
athlant64, это сильно уменьшает прибыль. 
avatar
так же было сделано следующее… запущены в работы разные экземпляры бота с чуток отличающимися настройками.
В итоге мы получили сетку заявок «аля Секрет»… результат > 1000 сделок, полученная прибыль очень далека от результатов бэктеста сетки, статистика собиралась 1 неделю.
avatar
oktb, у вас совершенно другая стратегия. У меня «сетка» вообще не используется. Очевидно, что результаты будут разные.
Напишите в отдельной статье подробно про своего робота. Я думаю, всем будет интересно почитать.
avatar
Robot-Scalper.ru, да сетка «родилась» после того как один экземпляр бота в реальной работе показал сильные отличия от ожидания, из-за отсутствия контрагента на заранее выставленных заявках.
Моя статья буквально слово в слово перепишет Вашу. -) честное слово.
avatar
Ставлю +++. В конце лучше бы было написано «С удовольствием поделюсь своими знаниями и опытом, а также роботом» :)
avatar
 мой бот работает по уровням динамического канала, на нижнем уровне покупает, на верхнем продает. Уровни самого канала естественно меняются. Стоп как и у Вас, есть но в работе отключался, т.к. действительно выход и неправильной позы на откате получается лучше нежели выход по стопу.
avatar
 «Я считаю, что неисполненные заявки никак на прибыль не влияют.» — это как? если бот ДОЛЖЕН по алгоритму продать/купить на уровне а сделка не прошла из-за отсутствия контрагента, то результат становится отличным от ожидаемого. И при накоплении «таких» несполненных «сделок» результат дня не "+" а "-", т.к вместо прибыли (минимального убытка) мы получаем значительно худший результат.
avatar
Ваш замечательный робот «скальпер» заменяет обычный робот — маркет мейкер, и параметр у него ровно один — ширина спреда.
Чем проще, тем лучше и побольше бабла иметь про запас :-). Потому как с заумными сокращениями позиции ваш «скальпер» на движениях типа V (или перевернутая V) сольет, а «простецкий» ММ  заработает.
avatar
Alexey Kulikov, если все заявки исполнятся!!! (что не достижимо), то полученный + на флэте с лихфой перекроет "-" на V движениях
Плюс еще такого рода бот легко переделывается на трендовый и в совокупности два разных подхода дают положительный результат.
Но повторюсь, проблема исполнения заявок убивает все!!!
avatar
Alexey Kulikov, не всё так просто. V-образные движеня робот нормально отрабатывает. В плюс. 
avatar
oktb, ну я не про «мнение» а про опыт, и тоже про свой. Ну в итоге ваш опыт же приводит к формированию мнения в голове, хотя да лучше его назвать знанием)
avatar
робот продается?
avatar
Влад, да, конечно. Оставляйте заявки на моем сайте.
avatar
Послание тролям: флуд и другие неприемлемые комментарии будут удаляться без объяснения причин. Не тратьте свое время. И всегда думайте что пишете. Важно, чтобы ваш комментарий нравился не только вашему самолюбию, но и еще тем, кто будет его читать. Уважайте трейдеров и сообщество! 

За это отдельный респект!!

Этот коммент тоже можно удалить, полезности ноль, просто хотел сказать))

avatar
Величина ценового канала равна ATR более старшего ТФ =)
avatar
Андрей К, не всегда нужно привязываться к индикаторам. Всё гораздо проще. 
avatar
Robot-Scalper.ru, ну так любой индикатор — это характеристика рынка =). Если понимать его суть, то в конкретных задачах можно красиво его вписать. Например ценовые каналы на М5 = АТР на H1. Под такие характеристики хорошо можно подстраивать стопы и тейки. Будет самоподстраивающийся под рынок робот =) В вашей задаче, если канал начнет смещаться, тейк, например, тоже поедет куда надо =)
avatar
на чем робот реализован и насколько грузит машину
avatar
ICWiener, на LUA. 5 роботов торгуют одновременно на одном компьютере без проблем. 
avatar
а где-же сам робот?
avatar
witwayer, есть на моем сайте. 
avatar
Robot-Scalper.ru, ясно. хорошо. сколько стоит?
avatar
Не могли бы Вы пояснить некоторые моменты?
1. Вы пишите "30 минутТаймфрейм 1М. То есть, получается 30 расчетных свечей. И с помощью условия записанного на языкеLUA (QLUA) будем определять минимальное (min) и максимальное (max) значение цены в данном диапазоне времени."
На скриншотах же можно увидеть, что ценовой канал рассчитывается по 3-м свечам на тф=1 мин. Как это соотносится с тем, что Вы написали ранее?
2. Вижу на скринах и в параметрах робота EMA. Какова ее роль (если это не секрет)?
3. Как выставляются тейки в последней описываемой редакции робота так и не было нормально описано. Вы пишите: «Если робот купил от нижней границы ценового канала, то заявку на фиксацию прибыли он выставит выше цены покупки.
Но если ценовой канал начнет снижаться, то верхняя граница канала будет тянуть за собой тейк-профит»
Можно подробнее? Вот робот открыл лонг — Где он выставляет начальный тейк (по какому правилу)? Вот ценовой канал начал снижаться — По каким правилам изменится тейк, учитывая снизившуюся верхнюю границу нового ценового канала?
4. Что означают значения указанные в скобках для минимума и максимума ценового канала в параметрах робота? На всех скринах они у вас совпадают со значениями без скобок.
5. Что за параметры «Фаза» и «Прогресс»? Для чего они?

З.Ы.: Сам в свое время писал подобного робота по просьбе одного трейдера. Сначала робот вроде бы зарабатывал, но когда начался достаточно длительный период сильных направленных внутридневных движений, то робот слил все что заработал, плюс ушел в просадку более 40%, после чего был остановлен (я вообще не очень люблю контртрендовые системы). Вот теперь пытаюсь понять — может я упустил что-то очевидное?

avatar
Prophetic, пунктами 2 и 3 Вы просите чуток приоткрыть суть алгоритма. Что ж, мне тоже будет интересно послушать автора. Ведь не часто увидишь действительно рабочие стратегии.
avatar
Prophetic,
1. изначально была задумка использовать 30 свечей. Потом тесты показали, что при уменьшении количества свечей сделок становится больше, эффективность стратегии увеличивается и доходность становится более ровной.
2. по ЕМА можно включать/выключать режим однонаправленной торговли (только от Лонга или только от Шорта). Сейчас робот торгует в обе стороны.
3. Подробнее, к сожалению, не могу. Прочитайте медленно ещё раз. Суть я же изложил.
4. в скобках указан предыдущий экстремум. Чтобы обновлять заявки только если экстремумы изменились. Иначе робот будет каждую секунду их переставлять, что не эффективно. Значения не всегда совпадают. На скринах, так получилось.
5. Фаза, чтобы понимать в какой фазе находится алгоритм. Выставил заявку; не выставил; отработала заявка и открылась позиция; есть поза, но нет тейка; есть поза, но есть выставленная заявка, но она не тейк, а осталась с прошлого раза; есть поза и заявка есть и она тейк. Плюс много других проверок на частичное исполнение набора заявки и на соответствие объему тейка набранной позиции и т.д.


avatar
спасибо, пишИте еще!
avatar
Спасибо за информацию.
1. Проводили тесты системы при помощи аналитической части программ тех анализа
 Велс-лаб ТС-лаб?, покажите результаты на встроенных туда коэффициентах?,
за 1 год, лучше за 3 года?
2. Как скальпер ищет новые идеи для торговой стратегии кроме заимствования?
avatar
круто мен, прочитав твою статью, я понял что люди мыслят одинакого… Было очень интересно, читать аналогичные мыли которые посещали мою голову когда то
avatar
Robot-Scalper.ru, интересно пишете! Когда можно ждать обещанных дополнительных красивых решений? ;)
avatar
kofesutra, спасибо. Ведется работа над фильтрами. Скоро будет информация. По датам пока не могу сказать когда именно.
avatar
kofesutra, с выходом фильтров цены на робота значительно поднимутся. Действующие клиенты получат обновление бесплатно.
avatar

теги блога Robot-Scalper.ru

....все тэги



UPDONW
Новый дизайн