Блог им. Shurik

Написание торговых роботов. Шаги 0-2.

Роботы… Как много в этом слове для уха трейдера слилось!
Как? Откуда? С чего начать?

Как ни банально, но для начала необходимо определиться со стратегией. Она может быть создана либо основываясь на стратегии других трейдеров (Резвяков, привет! Ударные дни легли в основу самого первого робота, который работал и зарабатывал у меня 1.5 года назад), либо — основываясь на собственных ощущениях и понимании рынка.

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

шаг 0 — что почитать?
1) Кургузкин А.А. Биржевой трейдинг: системный подход
Лучшая книга по системному трейдингу. Полезна всем и каждому, в независимости от вашей причастности к роботам.

Далее книги по C# — учимся программировать и готовимся к тестированию / реализации своих будущих алгоритмов:
2) Герберт Шилдт. C# 4.0 полное руководство.
3) http://msdn.microsoft.com/ru-ru/library/bb383962%28VS.90%29.aspx
4) http://msdn.microsoft.com/ru-ru/beginner/ee344863.aspx
5) http://www.youtube.com/user/geekitdevelop


Шаг 1 — поиск закономерностей:

открываем график, накладываем индикаторы (хаха), ищем индикаторы/их пересечения, которые позволят нам обнаружить начало движения / его остановку / пилу /… Собственно всё то, что может стать костяком нашего будущего робота.
Кому индикаторы не внушают доверие — начинаем анализ стакана, ленты, строим объёмные уровни, анализируем дельту — и используем всё это для того же самого — понимания и осознания как что где может работать. Вот один из примеров.

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


Шаг 2 — тестирование
Для многих это первый затык, который останавливает.

Для тестирования берём либо Wealth-Lab (лучше брать версию не младше 5.0 — присутствует .Net язык C#. С помощью Wealth-Lab я умудрялся даже тестировать стратегии, основанные только на объёмах (кому интересны детали как — можно личкой / в комментах)),
либо — вариант более проффесиональный и намного лучше для будущего — библиотека Stock# (мой выбор).

Кому-то может для тестов подойдёт и TsLab. На вкус и цвет все фломастеры разные.
Для начала в любом случае советую выбрать тестировщик с визуальным редактором.



Программируем наши первоначальные идеи-закономерности, смотрим на первые результаты. Если не сливает — уже отлично.
Добавляем / тестируем разные варианты выхода / входов. Перестановки стопа, выхода по времени, добавляем фильтры, убираем фильтры,… Стараемся получить лучший результат (доходность, просадка, ...), при этом не увеличивая число параметров стратегии.
Тестируем на разных интервалах, в разные периоды.


При тестировании учитывайте:
1) Стратегия должна быть простой, она должна быть обоснованной и логичной.
Закономерность, что сбербанк надо шортить в том случае, если 47 часовых свечек назад лукойл рос — бред, на помойку.

2) Параметров не должно быть много, старайтесь не перегружать систему параметрами. Чем меньше параметров — тем лучше. Если введение параметра лишь немного улучшает систему — от такого параметра стоит вообще избавиться и сделать систему таким образом более стабильной.

3) При тестировании параметров выбирайте не лучшее значение, а среднее значение среди стабильного диапазона. Т.е. при небольшом изменении параметра система должна работать также хорошо.
К примеру, если на параметре X равном 1.2 система показывает 100% прибыли, а на 1.1 и 1.3 — 10%; при этом в диапазоне 2.1 — 2.5 система показывает в среднем 60-80%, то стоит брать параметр именно 2.3 — средний от диапазона.

4) Старайтесь тесты максимально приближать к реальным торгам — учитывайте комиссии, проскальзывания берите больше чем могут быть.

И самое главное — 5) Перепроверяйте всё по 10 раз. Все полученные сделки просмотрите — что нет заглядывания в будущее, что всё именно так, как и предполагалось.



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



Продолжение следует...
415 | ★65
56 комментариев
хорошо написал только вот второй шаг многих останавливает)
avatar
я первоначально второй шаг вообще расписал ещё больше, потом половину удалил.
надо как-то подробнее, с картинками, наверное, отдельно каждый пункт описать.

ладно, может осилю :)
я тестил свою системку вообще на екселе))
avatar
а я последнюю системку даже и не тестил. было наблюдение — запрограммировал минут за 15, теперь работает :)
10 входов, 7 в + пока. Порядка 3000пп взяла.
Блин, Шурик! Ты не нереально крут! Может выступить с коротким докладиком по теме роботостроительства 16 апреля?
сколько по времени, какой формат?
я подумаю =)
+100 баллов
ждем продолжения
avatar
если бы мог то плюсанул, спасибо за пост…
avatar
Супер! Ждем подробностей. А Резвяковская стратегия уже не работает или просто менее эффективна?
avatar
не запускается, т.к. намного менее эффективнее новых. :)
очень интересно.
продолжайте развивать тему.
avatar
Стрёмно полагаться на машину-робота, но за тему +
avatar
ничего стрёмного, если писал всё сам. =)
ошибки, если есть, довольно быстро находятся и исправляются.
Добавляю к автору-
обязательное условие тестирования:
1)тестируем на периоде где обязательно есть просадки и боковики, а не только рост.Лучше всего чтобы период тестирования начинался и заканчивался на примерно одном уровне цен (+- 20%)
2)Комиссии и проскальзывание НЕ МЕНЕЕ 0,1% от сделки! ПОВТОРЯЮ-НЕ МЕНЕЕ! Все личные довыды «да мой робот сможет быстрее реализовывать сделку»,«да я руками буду покупать сразу по сигналу» фтопку! Закладывайте лучше ваще 0,2% и нивкоем случае не принебрегайте этим показателем, я ваще считаю что он главный в тестинге.
3)обязательно оставляйте период(как правило самые свежие данные) где не проводили тестирование и после оптимизации своих показателей тестируйте на этом новом периоде.Только такой метод форвард-тестинга поможет выявить переоптимизировали ли вы или нет! ну автор думаю в дальнейших постах это опишет.

п.с.Автору мегареспект за столь понятное обьяснение этого аспекта трейдинга!
avatar
А сколько вы ставите проскальзывание на 1 сделку для RTSI в расчете на 1 контракт, а на 10?
avatar
ставлю проскальзывание — 50-100пп.
в среднем выходит 35пп (в районе 100 контрактов), поэтому результаты в реале получаются лучше тестов.
О! Я ставлю 20пп на 1 контракт и в тестах и в реале.
avatar
Еще вопрос. Расскажите, какой метод, по-вашему, является оптимальным для динамического расчета позиции?
avatar
А есть ли у вас метрики «успешной» систем, которые лично вы считаете приемлимыми для торговли? Если да, может быть опубликуете их?

Можно в формате как здесь:
smart-lab.ru/blog/mytrading/4037.php

Или в любом другом.
avatar
в след. посту попробую ответить
s#, как я понимаю, больше подходит уже для написания робота, который будет взаимодействовать с торговым терминалом, нежели для тестирования стратегий на исторических данных
avatar
хотя нет, почитал help, оказывается там тоже реализовано несколько режимов тестирования
avatar
тестировать там можно — как на истории, так и на реальных данных, так и на генерированных данных.

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

в след. посте тогда подробнее отвечу.
Вам удалось написать робота, стабильно приносящего доход?
avatar
1.5 года достаточный срок или ещё нет?
думаю об этом можно с уверенности говорить через N лет.
стратегии устаревают и постоянно разрабатываются / тестируются новые.
поэтому торговля роботами — такой же путь как торговля руками.
только время уходит на создание, а не на торговлю.
Я это прекрасно понимаю, поэтому и интересуюсь, есть ли уже результат, или вы в процессе поиска. Я сейчас тоже торгую с помощью робота, то есть мой интерес не праздный.
avatar
Те цели, которые ставил по доходности, сейчас в среднем достигаются. Поэтому да, конечно, результат есть. И именно развитие и движение в сторону дальнейшего написания роботов я вижу своё будущее.
а какая доходность примерно с какой суммы?
avatar
На S# через что лучше торговать? Через Quick или SmartCOM? Что надежнее?
avatar
Я хоть и был аналитиком Айти-Инвеста, но роботы всю жизнь работали через Квик. :)
Запускаются утром, сами вечером выключаются — всегда уверен что всё стабильно работает.
Смартком мягко говоря не стабилен.
По-поводу книжки. Я думаю, что читать про c# 4.0 не обязательно. Язык стал еще сложнее. Я не думаю, что программист, который пишет робота возликует от того, что там наконец-то появились ковариантные и контрвариантные generic types :-)

Пожалуй, единственное, что будет интересно, это dynamic и optional params в функциях.
avatar
так-то да, но пусть лучше будет свежий вариант книги — со всеми исправлениями и дополнениями. :)
А позицию как открываешь в 100 контрактов? По рынку, лимитом, котировщиком?
avatar
Насторожённо я отношусь однако к робототехнике, в плане конфликта робот-человек. У меня любимый способ входа в рынок по рецепту Эда Сейкоты --> повесил график эмитента на стену, отошёл в другой конец комнаты, если виден явный тренд, бум брать в направлении тренда.
Ну я инвестор, мне проще.Мне эти шумы и мелкие телодвижения не интересны.
А инфа выложена грамотно.Даже мне понятно.
avatar
Хех, особенно круто со зрением -3.5 такое проделывать :-)
avatar
Скажите, пожалуйста, нужно ли читать и Кургузскина, и Шилдта? Нельзя ли обойтись одним автором? Боюсь, с двумя я не справлюсь…
avatar
Шилдт — по программированию, Кургузкин — по бирже.
Если программировать умеете — то можно только Кургузкина. Его советую читать всем и каждому настоятельно.
Александр, привет!
Очень интересная инфа, продолжай писать!

Скажи, а через что ты торгуешь и на чем робот?
Я тоже занимаюсь роботостроением, пока правда только на начальной стадии, есть небольшая программка на Qpile, напрямую в QUIK ее гружу и работает)

Понимаю, что дальше надо юзать чтото посерьезнее — но никак не определюсь с выбором.

Как выбирал ты? Другие комментарии будут также интересны)
Wealth-Lab для тестинга идеально? а программа сама на чем и как коннектиться к квику?

спс)
avatar
привет.

я торгую через квик, робот на C# — по DDE получает инфу из квика, через Trans2Quik — передаёт заявки. Сделано через библиотеку Stock#.

Я тоже начинал с qpile. Потом быстро ушёл с него.
В следующем посте напишу свой опыт.

Wealth-Lab — хороший вариант для тестирования. Лучше многих.
просто я пытаюсь тестить в Metastock'e.

а вот с DDE и Trans2quik — там задержек нет при передаче данных? или они несущественны
avatar
задержки минимальные.
если не скальперская стратегия — то всё отлично.
если скальперская — надо под плазу писать.

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

Десятки тысяч заявок в минуту тоже тянет — больше, чем потянет плаза.
для Wealth-Lab какие недорогие и надежные способы получать датафид имеются? можно ли прикрутить к квику?
avatar
Wealth-Lab я использую только для тестов.
Те стратегии, которые сейчас реализую в Wealth-Lab'e вообще невозможно реализовать. Вроде Церих рекламировал какой-то адаптер к квику, можно к ним обратиться если вдруг такое желание возникло.
ну оттестировал, в том числе то, что невозможно реализовать — а потом что с ним делать, как автомат работать будет?
avatar
ну вот с финама в wealthlab сгрузить реально?
avatar
Конечно, именно так и делаю — с финама в Wealth-Lab.
Хорошо, Александр, если вы говорите, что надо, то я прочитаю. Только я программировать не умею. Это, наверное, сложно? Может, вы дадите мне пару уроков в индивидуальном порядке? Я способная.
avatar
если будут вопросы — задавайте в скайп
А нет готового привода для альфадирект? ну чтобы там свои данные можно было втыкать (разные индикаторы) и тестить на прошлом. Программировать неумею.
avatar
какие данные?
если тестить на истории — используйте Wealth-Lab / TsLab /…
простые стратегии можно программировать в TSLab, с помощью кубиков. Научиться их строить можно быстро, там все понятно.
TSLab в демо доступ на месяц дает Финам, берите и пробуйте.
avatar
полезная статья, спасибо)
avatar
Чушь больных! Завтра допустим война или экономика рухнет и в Жо… все твои роботы и твои домыслы… И людей только путаешь навязиваешь ахинею
avatar
Александр, зато вы пишите крайне полезные вещи в блоге! :)
Александр Муханчиков, Я в блоге ничего не пишу, мой блог взломал Муха… и теперь там пишет что хочет
avatar

Читайте на SMART-LAB:
Фото
Актуальный состав портфеля и взгляд на рынок 2026: по-прежнему 0% позитива.
Добрый вечер! С момента предыдущего поста, касающегося моего портфеля, прошел квартал.  Пришло время актуализировать его состав. Также поделюсь...
Фото
Биткоин попробует разыграть «треугольную карту»?
«Цифровое золото» прорвало верхнюю границу восходящего треугольника на уровне 94 500 и сейчас тестирует пробитую горизонталь, формируя серию...
Фото
Индикатор Fractal: торговые сигналы и робот для OsEngine. Видео
В этом видео разбираем индикатор Fractal Билла Вильямса — один из самых известных инструментов в трейдинге. Покажем, как формируются фракталы,...
Фото
Стратегия 2026 по рынку акций от Mozgovik Research: трудный год, но, возможно, последний год низких цен
Сегодня у меня первый день официального отпуска. За окном темная звездная ночь, яркая белая луна, +24С и шум волн Андаманского моря. Неудачный...

теги блога Александр Муханчиков

....все тэги



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