Блог им. Mistakokz

Сложный торговый робот. История создания.

Все кругом только и говорят про торговлю через алгоритмы, пытаются что-то сделать, даже обращаются к программистам, но, если это и доходит до какого-то логического завершения, то ограничивается галимой работой на рынке forex, используя внутренние инструменты MetaTrader. Все как всегда хотят легких денег, воображают себе программу, которая без оперативного управления будет генерить им капитал, а они будут попивать коктейль на пляже. Хочу немного опустить этих людей с небес, рассказать как это происходит по-настоящему на профессиональном уровне и вкратце изложить историю титанического труда, математических расчетов, программирования командой людей и конечно же танцев с бубном. Скажу сразу, что эта статья, пускай и без углубления, но все равно потребует Вашего вникания в саму суть, но обещаю, что будет интересно.
Идея торгового робота построена на неэффективности российского рынка. В своем корне это новаторский подход к арбитражу, но чуть больше является все же парным трейдингом. Если конкретнее, то мы командой рассматривали два инструмента, а именно USDRUB(TOM), в дальнейшем будем называть его «Spot», то есть покупка/продажа долларов США за российские рубли со сроком исполнения обязательств на следующий день после дня проведения торгов, так как торговать наш робот будет Интрадэй, и фьючерс Si на доллар/рубль, в дальнейшем будем называть его «Fut». И идиоту понятно, что большей корреляционной зависимости придумать трудно; номинальный порядок Spot двузначный, то есть 31,xxx; номинальный порядок Fut пятизначный, то есть 31xxx. Рассматривать, анализировать и в дальнейшем торговать будем по минутному графику М1. Приведем Fut к стилю Spot (исключительно для математической аналитики), разделив каждое его значение на 1000. Построим из полученного массива значений два графика в одной системе координат:


Сложный торговый робот. История создания. 
Что же мы видим? Оба графика «пляшут» параллельно. Так где же тут мы заработать можем? Ручной торговлей этого не сделать или жить у кнопки как генералу в ядерном бункере 40 лет назад. Далее анализируем цифры, используя Excel, для этого необходимо свести все минутные значения котировок, я говорю свести, потому что реальность такова, что биржевые каналы составляют базу котировок криво, пропуская некоторые значения М1, причем и по Fut и по Spot неодинаково. Этого не заметить, не работая с голыми цифрами, так как, торговый терминал, где все Вы работаете, автоматически заполняет пробелы данных повтором значений. Так вот, посмотрите на таблицу, а далее я опишу, что все это значит: 

Сложный торговый робот. История создания. 
Мы видим котировку Spot вначале, дату, время и показатели свечей(открытие, хай, лоу и закрытие). Как вы понимаете, имеет смысл анализировать и работать с ценами закрытия Close. Выделено светло-синим у Spot и светло-красным у Fut. Далее мы приводим Fut к внешнему виду Spot, разделив его на 1000 (FUT SPOTlook). На графиках сравнения мы увидели, что Spot и Fut на расстоянии друг от друга, некое стандартное расхождение между двумя инструментами. Следующий столбец и называется Расхождение, это разница каждой М1 фьючерса, приведенного к внешнему виду спота, со спотом. И вот тут начинается самое интересное!
Мы видим, что значение имеет порядок 0,18xx. В реальности каждое значение расхождения 0,0001 является одним пунктом движения цены. Мы видим, что расхождение не абсолютная и неизменная величина, а, на самом деле, она меняется, чего не увидеть никогда на графике глазами. Далее мы будем искать отклонение от расхождения. Что это такое? Мы построим график расхождения (черным на картинке ниже) и возьмем некое усредненное значение по нему, наложив скользящую среднюю SMA_100(красным на картинке ниже), берущую среднее значение от 100 свечей, как вы уже поняли.

Сложный торговый робот. История создания. 
 
Так вот, вернемся к таблице, далее черный столбец Отклонение. Это разница между Расхождением и SMA_100, которая считается каждую М1 после собранного пула из 100 значений. Мы получили наше Отклонение от Расхождения, а это именно то, что нам и интересно, это именно то, с чего мы и будем генерировать нашу прибыль посредством алготорговли. Например, в моменты, когда наше отклонение от расхождения больше, чем 0,0050, означает, что Fut и Spot отклонились от их нормированного расхождения на 50 пунктов. Это означает, что в этот конкретный момент какой-то из этой пары инструментов либо недооценен, либо переоценен, либо оба сразу в разных направлениях. Далее необходимо в эту же самую секунду проанализировать оба инструмента одновременно и получим мы, например, что фьючерс отклонился и переоценен на 40 пунктов, а спот отклонился и недооценен на 10 пунктов. Вся прелесть такой математики в том, что мы уверены с вероятностью 99.3%, что они сойдутся обратно к своему нормированному расхождению, а значит входим в шорт по переоцененному и в лонг по недооцененному и забираем наши 50 пунктов.
Далее основу этой идеи надо изложить в коде. Как дикими кодерами, изложено это было на собственноручно написанном софте на С++, была разработана своя небольшая платформа с динамической базой данных, которая собирала поставку котировок из доработанного нами терминала Quik. Далее сам алгоритм изложили на C#, не буду углубляться в подробности, ибо есть колоссальное количество нюансов, связанных с расчетом рисков, временными интервалами работы софта, расчет лота и зависимость от времени и поведения рынка и тд. Во-первых, это не интересно читать, во-вторых, мы этим зарабатываем. Сам код представляет собой километры текста, а вот его кусочек с приветом сайту SmartLab:

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

Сложный торговый робот. История создания. 
Мы вывели в своем софте внешний удобный интерфейс оптимизации во время тестирования, где есть 11 параметров, такие как: величины отклонений от расхождения, СтопЛоссы и ТэйкПрофиты и тд. Протестировав робота и проведя оптимизацию(естественно аналитически-математическую, а не под историю), мы приняли решение запустить его в работу. Посмотрим графики после запуска. На картинке ниже мы видим, что сделок по Споту значительно больше, это может сказать о том, что USDRUB более нестабилен как инструмент относительно адекватности рынка, а значит, в основном, именно его неэффективность мы используем. Как в дальнейшем оказалось, мы ловили шум по несколько пунктов и отдавали прибыль на комиссию брокеру, а основную прибыль делали в итоге с фьючерса.
Сложный торговый робот. История создания. 
А вот и сами сделки, тут не все:

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

Сложный торговый робот. История создания. 
2049 пунктов, заработанных нами за интервал в 2 с небольшим месяца.
Не опускайте руки, работайте командой, забудьте про игры в Форекс, если хотите зарабатывать деньги и строить на трейдинге бизнес. Вся сила внутри Вас самих, все получится. Спасибо за Ваше внимание, я очень надеюсь, что статья была Вам искренне интересна.
---------------
Mistakokz 
ссылка на статью:
http://stockwork.ru/archives/548 
★5
10 комментариев
емкость вашего алгоритма? в контрактах?
и сколько людей надо кормить с этих 2049 пунктов?
avatar
Рустам TradeInWest.ru, 12 в пике переваривал. 3 человек
avatar
2 месяца всего и уже поучительная история для целого сайта? Ох уж мне эта человеческая самонадеянность.
avatar
Евгений, умник, специально для тебя напишу, что это далеко не первая разработка, а конкретно эта система уже 7 месяцев работает и вообще это лишь одно из 4 направлений деятельности этого профиля.
avatar
Mistakokz, я написал конретно по данному посту замечание. Чем вы еще подрабатываете (будете ли продавать сигналы или еще что) меня не сильно волнует.
avatar
AndreiSk, спасибо. Сам алгоритм изложен как раз в c#. На C++, обрабатывающая данные, платформа
avatar
Глупый вопрос: где торгуется USDRUB(TOM?
В квике он у меня есть, но торговать по нему мне не разрешено.
avatar
Антон Кротов, В Квике он торгуется) Советую уточнить у брокера)
open, да, в квике нашел, но сделки по нему запрещены. Буду звонить брокеру. Спс.
avatar

теги блога Mistakokz

....все тэги



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