Блог им. SergeyEgorov

Программируем простейший бэктестер (часть 1)

Один из самых частых вопросов, который начинающие программисты-трейдеры задают мне в почту или скайп это — «Как написать бэктестер?». Глобализовать задачу не хочется, дабы она не умерла из-за потери концентрации и мотивированности, поэтому пойдем поступательно, от простейшего, к простому и за несколько итераций реализуем набор алгоритмов, которые позволят тестировать торговые стратегии, базирующиеся на свечках (Bar). Первый бэктестер должен будет уметь исполнять рыночные заявки, по цене закрытия самого последнего бара, присутствующего в контексте торговых данных, для нашего финансового инструмента. Примерный план действий такой:

  1. Реализуем класс, который эмулирует сделки для наших заявок.
  2. Реализуем класс, который последовательно читает свечки из текстового файла и добавляет их в контекст торговых данных.
  3. Реализуем к примеру пробойный обработчик на открытие позиции.
  4. Реализуем обработчик на закрытие позиции.
  5. Реализуем консольное приложение, которому можно будет передавать имя текстового файла с историческими данными и которое будет выполнять бэктест для этих данных.

Видео по первому пункту:

★11
32 комментария
А зачем это делать? Можно взять любую программу. Допустим АмиБрокер. Или тот сайт, что я вам рекомендовал. Зачем свой писать?
avatar
Евгений, Я люблю программировать, программирование — это fun :-)
avatar
SergeyEgorov,
сделай лучше доброе дело… напиши биржевой тренажер…
avatar
ves2010, добрые дела это конечно не наш профиль но… что подразумевается под выражением «биржевой тренажер»?
avatar
SergeyEgorov,
это имитатор торгов типа opentrainer.ru chartgame.com
загоняешь данные минутки лет за 5… из них формируются другие таймфреймы… главная фишка три экрана — ни у кого такого нет… если сделаешь в виде плагина к смартХ от айтиинвест то тебе денежку заплотят… вообще биржевой тренажер крайне важная и полезная штука… smart-lab.ru/blog/155810.php тут один абзац про них
avatar
ves2010, это официальное приглашение обсудить заказ на аутсорс разработки плагина для смарт Икс? :-)
avatar
SergeyEgorov, неа это типа совет… как поднять деньги на околорынке… обсуди с сидором на форуме айтиинвест…
avatar
SergeyEgorov, ваши записи и ролики мне кажется смотря 2-3 человека постоянно. На фоне общих записей после выходных они как обычно будут не видны. Создайте отдельный блог. Например, в ЖЖ. Так вы найдете своих читателей. Здесь же сплошные трейдеры, которым вам записи не скажут ни слова.
avatar
Евгений, мне здесь нравится. Я познакомился уже с несколькими интересными трейдерами. Мы общаемся в скайпе и по почте, они у меня учатся программированию, я у них учусь торговле. Этакий творческий натуральный обмен :-)

Отдельный блог на самом деле есть, его очень легко найти, надо всего лишь взять фрагмент пространства имен ru.sazan.trader, перевернуть его, и добавить в начале префикс http :-)

Еще есть отдельный канал на Ётьюбе, его тоже очень легко найти :-)

Ну и еще в декабре появился микроблог в Тумблере, куда я пытаюсь нарезать коротенькие фрагменты для тех, кто вообще не умеет программировать и пытается этому научиться.
avatar
SergeyEgorov, теряете время. Если бы трейдеры были стоящие, то они бы не программировать учились, а вам бы предложили на пару создавать профитные стратегии. Но как знаете.
avatar
Евгений, я здесь познакомился и с такими трейдерами, которые не хотят сами программировать, но готовы приобретать услуги разработчиков.

Почему теряю время? Я люблю общаться, я не социофоб, если бы за способность приобретать новые знакомства и умение приятно поболтать платили деньги, я бы уже наверное давно миллиардером был. Я вообще не поклонник Глеба Архангельского и это не в моем характере сжав зубы и собрав жопу в горсть «идти к цели». Surf's Up смотрели? Так вот для меня тоже главное чтобы было в кайф :-)
avatar
SergeyEgorov, я написал про эффективность в денежном плане. Социальное мировоззрение предпочитаю не обсуждать в интернете.
avatar
Евгений, у меня есть ощущение что вообще никто еще не разгадал секрета гарантированной денежной эффективности на рынке кастомных услуг. Все очень долго, заморочено и чертовски индивидуально. Клиент начинает работать с тобой только тогда, когда ему не просто нравится то, что ты делаешь, но когда он ощущает что ты и он чем-то похожи. Или я таки в этой части отстал от жизни?
avatar
SergeyEgorov, если вы так пишите, то значит еще не встретили трейдеров, с которыми можно работать. Иначе бы вы давно уже торговали на рынке роботами с долями.

Если вы хотите писать за деньги программы, то я могу сразу сказать — это копейки. Мы сами раньше заказывали стратегии, пока не нашли своих программистов. Средний заказ обычно не превышал 30 т.р. При это такая стратегия генерировала прибыль с пятью нулями за 1 месяц. Программистам никто не дает секретные стратегии. Обычно это какая-то исполнительная часть (вывести приказы на биржу, закрыть позиции, переворот). Логику делаем всегда сами. Думаю, мы не одни такие.

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

Подумайте на досуге, нужны ли вам заказы. Поверьте, куда больше денег вы получите, если будете работать с трейдерами. А чтобы найти хороших трейдеров, внимание, вам нужна не программирование бэктестеров делать, а начать делать самостоятельно рисерчи и делать мини папиры. Тогда вас сами найдут люди, с которыми вы так захотите сильно работать, что ни на какие Ютюб ролики у вас времени не будет оставаться ;-)
avatar
Евгений,

«Программистам никто не дает секретные стратегии»

«начать делать самостоятельно рисерчи и делать мини папиры»

Это разве не противоречие?
avatar
facepalm, не вижу противоречия.
avatar
Евгений, в одном предложении говорится, что секретные стратегии никому не рассказываются, в другом — что нужно исследования в паблик выкладывать. Или имеется ввиду: выкладывать в паблик исследования, от которых не было результата?
avatar
facepalm, как-то вы меня странно читаете :-)

В одном предложении говориться, что наемным программистам никто ничего давать секретного не будет (исключение, если человек сидит в офисе, подписал договор, и следует политике компании).

В другом предложении написано, как не наемным программистам привлечь к себе внимание трейдеров или команду трейдеров. Чтобы человека взяли к себе в команду и он начал работать на себя в команде.
avatar
Евгений, ок, понял. Просто не понятно, зачем программисту, умеющему грамотно проводить исследования, может понадобится помощь трейдеров. А программист, не умеющий проводить исследования, вряд ли привлечёт их внимание.
avatar
facepalm, понятие «грамотно» субъективно. Предлагаю сразу убрать такие маркеры из обсуждения.

А вот зачем специалисту нужна команда, могу сразу ответить. Навскидку:

1) Обучение друг друга. В команде нет лишних людей. Каждый знает что-то, чего не знаю (или плохо знают) другие.

2) Диверсификация рисков. Одному просадить счет значительно проще, чем всей команде.

3) Разделение навыков. Кто-то хорошо умеет искать вменяемых инвесторов (если у вас есть опыт ДУ, то вы понимаете, что не все деньги, что дают, одинаково хороши). Кто-то умеет хорошо координировать действия. Кто-то хорошо анализирует. Кто-то занимается серверами. Кто-то маркет данными. Кто-то оптимизирует комиссии и налогообложение. Кто-то следит за новостями брокеров и бирж.

Человек-оркестр быстро выгорит. Плюс нет смысла работать ради работы. У любого психически нормального человека потребность в деньгах только одна — ради себя и своей семьи (близких).

Поэтому работа в команде является золотой серединой. Есть плюсы работы «на дядю» (минимальные соц гарантии). И есть плюсы частной работы в виде дележа прибыли (и убытков, конечно же :-) )
avatar
Евгений, команда нужна обязательно!!! Как опять же свидетельствует мой опыт, сработавшаяся команда, даже маленькая, хорошо понимающих друг друга профессионалов, способна творить чудеса. Но такие команды чрезвычайно редки. Лично мне за всю жизнь встретились всего две.
avatar
SergeyEgorov, значит вы плохо искали.
avatar
Евгений, благодарю за развёрнутый ответ.
avatar
Евгений, не вполне я понимаю как может измениться ко мне отношение присутствующих трейдеров, если я завтра вместо видео о программировании выложу здесь описание стратегии для торговли к примеру пары SLB/HAL??? Хеджирование вроде как не вчера придумали и как мне кажется арбитраж по прежнему одна из самых привлекательных стратегий. Может быть я конечно и ошибаюсь, я же не совсем трейдер.
avatar
SergeyEgorov, если вы такое будете выкладывать, то вряд ли будет изменение интереса к вашей персоне.

Писать нужно на своем сайте. С кросс постом тут. Еще лучше свой ЖЖ завести. Писать так же на фейсбуке.

Сильно не надейтесь на смарт лаб. Он несколько для другого создан, чем поиск команды.
avatar
Евгений, я не буду с вами спорить на тему стоимости разработки программ. Мой персональный опыт свидетельствует что заказы и заказчики все очень разные и ценообразование на рынке custom software весьма индивидуально. Иногда бывают цифры с пятью нулями в месяц, иногда с четырьмя нулями, например тридцать тысяч рублей, иногда вообще заказов нет. Это кстати вообще характерная особенность фриланса.

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

Что такое «мини папиры»?
avatar
SergeyEgorov, papers — статьи.
avatar
facepalm, :-) а я голову сломал, думал даже что это S&P mini :-)
avatar
facepalm, правильный перевод — труд. Статьи статьям рознь. Что пишется тут, такое и за бесплатно не нужно :-) Разве что 4 fun как пишет Сергей.
avatar
SergeyEgorov, тогда я вам советую изучить хорошо американский и азиатский рынки, научиться программам MultiCharts и NinjaTrader и писать-писать на биг майке, линке и фейсбуках. Как и на форумах этих программ. Тогда ваши ценники достаточно быстро обрастут одним нулем в конце с той же самой нагрузкой, что вы делаете для российского рынка.
avatar
Евгений, мне кажется что чтобы хорошо изучить американский и азиатский рынки, может потребоваться вся жизнь :-)
avatar
SergeyEgorov, если вы хотите писать за деньги, то вас это не сильно коснется. Если есть опыт на нашем рынке, то пол года на изучение максимум. Американский рынок к слову совершеннее российского. Поэтому на нем сложнее зарабатывать и его проще понимать. Азиатский сложнее, но все равно это проще, чем наш рынок.
avatar

теги блога SergeyEgorov

....все тэги



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