История создания биржевого торгового советника PIAdviser

adviser6.pngМое первое знакомство с фондовым рынком и биржей началось с прочтения книг Теодора Драйзера «Финансист», «Титан» и «Стоик» еще до 90-х. Позже, в 1994 году я приобрел свои первые акции, это были привилегированные акции ММТ. Важно то, что инвестиции в российские акции на протяжении многих лет приносили мне стабильный ежегодный  доход, исключением был только кризисный 1998 год. Моя же трейдерская деятельность, наоборот, чаще приносила мне разочарования и потери. Однако, трейдинг отличается от инвестирования примерно также, как коробка передач отличается от двигателя. Несмотря на то, что два этих устройства используются для передвижения. В те времена я очень желал  заниматься активным трейдингом.

Я читал много материалов на тему трейдинга и проникся идеей создания эффективной торговой системы (далее – ТС). Я анализировал графики и придумывал торговые правила для ТС. Постепенно я пришел к выводу, что надо создавать персональную торговую систему – только для себя. Накопив практического опыта в трейдинге, а именно в спекулировании российскими акциями через торговый терминал NetInvestor, в 2000 году было принято окончательное решение о создании своей ТС. В этот период времени я служил в отделе ценных бумаг в Банке Петровский (Санкт-Петербург).

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

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

Поиски программиста длились достаточно долго, я специально не предпринимал особых усилий, просто распространял информацию среди своих знакомых. И однажды на мой зов откликнулись. Я познакомился с Дмитрием - молодой студент ЛГУ. Чуть позже к нам присоединился веб-мастер Алексейю. Как я уже писал ранее, у меня было что-то похожее на техническое задание (далее – ТЗ), но его пришлось переписывать, т.к. Дмитрий его забраковал. У меня возникли первые сложности, так как понимать и рассказывать об этом это одно, а изложить на бумаге в виде понятных и логических алгоритмов, чтобы это понял программист, - совершенно другое. Оказалось это не просто. Мое первое настоящее ТЗ примерно на 10 страницах я писал наверное три месяца. Впоследствии мне пришлось писать и переписывать эти ТЗ наверное до сотни раз. Надо было готовить много логических выражений и формул, рисовать много разных блок-схем и прочее. На Рисунке 1 приведен пример одного листа из технического задания. За пять лет, в течении которых разрабатывалась программа, были написаны многие сотни листов технической документации. Если посчитать, то только на их написание ушел примерно год работы. Представьте себе целый год, - год кропотливой,  но интересной работы.
 


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

Вспоминаю, что в начале моего проекта, один мой хороший знакомый, директор компании «Петербургского Межбанковского Финансового Дома» (ПМФД) Андрей Язев, кстати разработчик программы NetInvestor, как-то сказал мне примерно следующее: «…то, какую программу мы себе представляем и какую получаем в результате, большая разница…». Смысл его слов я осознал уже намного позже, когда наша программа приняла некие визуальные контуры. Вспоминаю, первый впечатления от программы, что-то грубое, бесформенное, напоминающее скорее плохую пародию на настоящую программу.  Многие визуальные компоненты и опции реализовать в программе сразу не получилось, а что было реализовано, не особо нравилось. Но все равно, факт появления самой программы, вдохновлял, и немного опьянял. Первой нашей проблемой было то, что не существовало аналогичных программ, на которые можно было ориентироваться, а вторая проблема, мы и сами еще не имели цельного мнения, как должна выглядеть наша программа. Поэтому интерфейс программы и функционал приходилось разрабатывать что называется на ощупь. Я мечтал быстрее закончить работу над программой и быстрее использовать ее в торговле. Однако, оказалось, что создание программного продукта – это процесс практически бесконечный, как и эволюция. Для тертых разработчиков это не является секретом, более того, это единственно-возможный путь разработки качественного коробочного программного обеспечения, но для меня дилетанта ай-ти дел, это стало неожиданным сюрпризом. Мы с Дмитрием постоянно договаривались о сроках сдачи, но новые задания все увеличивались, а сроки выпуска все отодвигались. Постоянно надо было что-то доделать, переделать и конца и краю этому не было видно. Получается, что мы сами росли и развивались вместе с программой, поэтому и постоянно выдвигали все более новые критерии и требования к нашей разработке.

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

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

Помню, как много усилий было отдано созданию функции «Тестирование и оптимизация торговой системы - ТС». Я просиживал за ПК дни на пролет, включаю ночи, делая и делая тесты, - сотни тестов, проверяя корректность работы торговой системы и расчета показателей ТС. Процесс тестирования настолько мне опостылел, что порой только от одной мысли о нем, хотелось вопить. Иногда для тестирования программы я привлекал знакомых студентов, оказывая им материальную поддержку. Не передать моего счастья,  когда Дмитрий выпустил версию с частичной автоматизацией процесса тестирования!

Оглядываясь в прошлое, вспоминая сделанную работу: сотни листов документации – ТЗ, сотни экспериментов и тестов, бесконечные встречи и переговоры, - не верится, что мы все это осилили. Сейчас же пользователь может легко и просто протестировать торговую систему на истории за несколько лет и получив все основные показатели и даже график кривой счета.

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

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

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

Существенно то, что совместная работа над проектом позволила всем ее участникам лучше разобраться в деталях трейдинга, методах оценки торговых систем, а также в потребностях трейдеров и инвесторов. Безусловно, что за время разработки все мы более стали опытнее, а программа - совершеннее. Мне повезло, что моим партнером по проекту  выпало стать именно Дмитрию. Думаю, так как без его энтузиазма, творческого подхода и огромного трудолюбия программа не стала бы такой уникальной и классной. Кстати, название персональный торговый советник - Personal Investment Adviser, а сокращенно PIAdviser придумал Дмитрий.     

Первая публичная версия программы для пользователей была выпущена в августе 2005 года. С этого момента она находится на сайте i-tt.ru в свободном доступе, ее можно cкачать и 14 дней бесплатно протестировать. Немного позже  появились три модификации программы: версии Web Edition для вэб-браузера и локальные версии: Classic Edition и Premier Edition.

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

Personal Investment Adviser