Александр Муханчиков
Александр Муханчиков личный блог
13 апреля 2011, 22:09

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

Итак, долгожданное продолжение первой части.



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

Что делать дальше, как поскорее начинать заполнять чемоданы деньгами?
Как запустить стратегию на биржу?

Здесь, как обычно, вариантов несколько.
1) Вы тестировали стратегию в тестере, который поддерживается вашим брокером — TS Lab (АйтиИнвест, Алор, Финам), Wealth Lab (Церих),… — просто напросто пользуясь средствами программы и вашего брокера посылаете приказы на биржу.

Этот вариант очевиден своей простотой.
На мой взгляд, все плюсы на этом заканчиваются.

Минусы:
1) зависимость от стороннего софта;
2) зависимость от адаптера между программой и брокером;
3) неспособность глубоко воздействовать на робота.
По сути — кроме самой стратегии вы ничего редактировать не можете. Ни как часто стратегия обрабатывается, ни как часто надо проверять переподключение, ни подключение к другому серверу в случае разрывов — Н И Ч Е Г О!;
4) порой большая ограниченность в стратегиях.
Попробуй на Wealth-Lab напиши стратегию на тиках, которая будет хранить дневную историю и считать определённые значения по объёмам / дельте / хреньте /… Мой компьютер начинал жестоко тормозить, стратегии тормозились, не было лёгкости в управлении.
Я знаю, что многие под TS Lab покупают сервера отдельные с 8 ядрами процессора и 8 Gb оперативки. Моё мнение — бред.

Первый пункт я никогда не приветствовал. Может после более глубокого изучения TS Lab моё мнение изменится.


2) Программирование стратегии.
Большой пункт.
Есть 2 варианта:
a) о чудо, в школе / институте вы изучали Basic/Pascal/C/… И вы умеете программировать на одном из современных языков — С++/C#.
b) вы программировать не умеете.
b1) учиться хотите — берёте книжку из первого поста и вперёд, постигать практикой азы.
b2) учиться не хотите. Пишите ТЗ стратегии. Как можно лучше расписывая детали о том, как должны задаваться параметры, что должен робот уметь, какие кнопки должны быть помимо кнопки «Рубить бабло», «Вывести бабло» и так далее и как можно подробнее. И в общих чертах, без мелких деталей, описываете свою стратегию. Далее с этим ТЗ обращаетесь к программисту (ко мне, к примеру :D ) c вопросом сможет ли он и если да, сколько по времени / деньгам это займёт.


Если вы всё же решили всё запрограммировать сами, то есть следующие варианты:
1) у вас простейшая стратегия на скользящих средних, которая не требовательна к скорости, которой задержки по 2-3 секунды ничего не значат. Берёте Qpile (встроенный язык в квик) и реализовывайте стратегию на нём. Подробная документация прилагается к квику; квик есть почти у каждого брокера — проблем быть не должно.
Замечу, что первые 4 стратегии, которые у меня зарабатывали, были написаны именно на Qpile. Сейчас на Qpile ничего не работает, всё переписано.

Минусы — скорость; невозможность реализации сложных стратегий.
Плюсы — простота.


У вас продвинутая стратегия и хочется реализовать её максимально удобно / продвинуто. Чтоб управление соединением, котировками, обработкой стратегии было полностью на ваших плечах.
2) SmartCom
не стоит, см. пункт 4
3) Plaza2
не стоит, см. пункт 4
4) Stock#
Библиотека, которая позволяет подключаться напрямую к терминалам / шлюзам / API брокера, минуя сторонние программы.
Всё что надо — находится под вашим полным контролем.
Доступны: SmartCom, Quik, Alpha Direct. В ближайшее время будет доступна и Plaza2.
Самое главное — не надо переписывать стратегию, если переходите от Альфы в Открытие или из Алора в Айти. Всё что будет необходимо — заменить пару строчек кода.
Более того — доступно тестирование на истории.

В общем уверен на 100%, что на российском рынке именно за этой библиотекой будущее.
Именно её простота, но в тоже время и глубина, позволяет писать абсолютно любые стратегии которые приходят в голову.
На моей машине работают одновременно порядка 12 стратегий с 4 квиками — всё реализовано в одной программе, процессора всё это есть порядка 5-10% — большинство едят квика, по 0-2%.

Почему Stock#, а не SmartCom или Plaza2? Доступны удобные интерфейсы, многие ошибки исправлены / обработны именно внутри Stock#, нет необходимости обрабатывать их самому.
В общем луче один раз увидеть / попробовать.


Минусы — необходимо время, чтоб разобраться / написать свою архитектуру; сложность не для программиста.
Плюсы — скорость, удобоство, платформонезависимость, возможность тестировать стратегии, множество удобных вспомогательных функций — реализована отправка смс, e-mail, .....

Именно здесь всё лежит в ваших руках.

Нетрудно догадаться, что именно через Stock# в настоящее время у меня и реализованы все роботы. :)


Пост получился небось опять сумбурным и очень длинным. Спасибо тем, кто дочитал. :)

Продолжение следует… (а надо ли? :) )
64 Комментария
  • rusalgo.com
    13 апреля 2011, 22:26
    отличная статья!
  • dk777
    13 апреля 2011, 22:30
    конечно давай продолжения, неплохо было бы какие нить простенькие уроки показать))
  • Вадим
    13 апреля 2011, 22:31
    Сам ниписал бота именно с помощью Stock#.
  • Deleted
    13 апреля 2011, 22:36
    >Я знаю, что многие под TS Lab покупают сервера отдельные с 8 ядрами процессора и 8 Gb оперативки.
    А еще бабки на лавке много чего говорят.

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

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

    Я писал голого робота на c# под АльфаДирект. Это сложнее, а главное нету никакого смысла все усложнять.

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

    Stock# в принципе неплоха, но лишняя абстракция — это потенциально лишние баги. И снова усложнение.

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

    «Роботов» которые используются большими организациями типа инвест-банков мы не берем. Это частному трейдеру просто не потянуть.

    У меня работают две стратегии сейчас под VirtualBox: 1 ядро, 1 GB памяти. Нагрузка минимальная.

    В TSLab например вполне себе полноценный c# и возможность цеплять любые готовые библиотеки. При этом вы имеет среду запуска, отладки, тестирования и эксплуатации. Плюс у вас уже есть GUI для графиков и прочего.

    Вот простой пример. TSlab предоставляет thread-safe среду для вашего робота. Когда же выпишите сами, то вам надо быть приличного уровня программистом, чтобы управляться с несколькими потоками, синхронизацией, обработкой сетевых ошибок и т.д. и т.п. Как правило среди программистов-прикладников, которых большинство среди тех кто делает роботы, таких не очень много(их и в профессии то немного).

    Кстати, еще один минус stock# что оно требует еще и терминала. TSlab, например, не требует. Это еще минус один уровень сложности и багов.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн