Избранное трейдера IgorMushtriev
Всем привет! Я Максим, и я алготрейдер :)
Узнал я про биржу в далеком 2008 году от своего товарища Сергея, который до сих пор торгует ручками. Сам начал торговать в 2009 году, после кризиса 2008 года и упорно весь год шортил растущий Сбер, слушая советы всяких гуру. Благо сумма тогда еще была порядка 50 тыр. Помню, торговал через ВТБ, тогда так себе был брокер.
В 2010 году худо бедно пытался что-то наторговать по Элдеру, читал огромное количество литературы по трейдингу, ходил на курсы к Андрею Сапунову, который мне и привил любовь к роботам. Были тесты в Экселе, завышенные ожидания несметной прибыли быстро и много. В конце года перешел в Финам (где и по сей день торгую) и внёс все свои сбережения в 1.5 мио на брокерский счёт. Тогда и решил подключиться к их стратегиям на комоне и рубануть побольше бабла, выбрал самые как мне показалось продвинутые: Восхождение и Точечны удар.
Так вот как раз в 2011 году рынок акций ростом не баловал и я получил убыток по счёту порядка 30%, так как само собой торговал с увеличенными рисками. Тогда я твёрдо решил, что на фондовом рынке нечего делать и пора рубануть деньжат на ФОРТСе.
Поначалу, в январе 2016 го хотел писать пост раз в месяц с итогами торговли, тогда был тренд на Смартлабе по этому делу))… потом поразмыслил и пришел к выводу, что это никому не нужно. Захламлять Смартлаб своими промежуточными итогами… ) Да у нах…
Не, я конечно могу, но я не экстраверт, скорее наоборот.
Короче иногда накатывает и хочется поделиться… ниже мое эссе на тему алготорговли, мои фишки, приемы, выводы по итогам работы над ошибками. Ну и итоги 2017го. Надеюсь кому то будет полезно.
В этом году результатами я вполне доволен, примерно 50%, в отличие от 2016го, где была ложка дегтя. Там я запустил пул систем которые как говорится «не взлетели». В этом году не все удалось реализовать, но многое получилось неплохо. На моей торговле сказывается недокапитализированность счета так как пришлось в свое время много вывести. Это заставляет больше рисковать, но в тоже время нет худа без добра. Это заставляет двигаться, нервничать и шевелить умом.)
Скачал я недавно исходники биткоина.
Одолел меня профессиональный интерес. Как же оно там всё устроено? И насколько сложно/профессионально создано?
Ссылка на исходники: https://github.com/bitcoin/bitcoin
Посмотрел, почитал, и вот что для себя выяснил:
1. Дистрибутив весит 19 МБ. В архивированном виде 7 МБ.
2. Содержит 110 директорий (папок).
3. файлов: 1 515 штук!
4. Только один файл валидации (validation.cpp) состоит из 4673 строки (211 854 символа)! А текстовых файлов, повторюсь, более тысячи!
5. Достойно реализован механизм внутренней базы данных (директория leveldb/db).
6. Проведена феноменальная работа в области криптошифрования по алгоритмам SHA-256 и SHA-512, а также другим алгоритмам (директория crypto).
7. Структура кода очень грамотная. Код чистый. Весь написан в одном стиле, с правильными комментариями на английском языке (японского языка вообще нет).
Добрый день. В предыдущих частях я описывал, как на C# сделал собственный тестер, применяя объектно-ориентированный подход, рассказывал про интерфейсы, про их реализации, и, рассказывал про работу с БД. На данный момент осталось совсем немного. В этом топике я опишу вариант расчёта результатов работы стратегии.
Чтобы не запутаться, даже не читая предыдущие топики, поясню, что есть и к чему надо придти. Есть стратегии – это некий объект программы, который выставляет заявки на основе получаемой маркет-даты. Заявки (Order) регистрируются системой. Также, регистрируются сделки прошедшие по заявке (каждая заявка имеет список сделок — List<Trades> trades). После прогона стратегии, все заявки и сделки сохраняются в БД, и после, их можно извлечь и посчитать по ним статистику работы стратегии. По сути, эта статистика состоит из двух аспектов: сами закрытые позиции и оценка эффективности на их основе. Начнём с первого. Вот интерфейс, который принимает заявки со сделками, и, выдаёт, собственно, список закрытых позиций:
interface IClosePositionManager { List<ClosePosition> ClosePositions (List<Order> orders); }