Привет всем! Хотел опубликовать серию постов с описанием, как я на C# разработал систему для тестирования и торговли. Уклон будет больше в программирование, но в рамках алго.
Смысл в том, что я старался придерживаться правил ООП и сделать систему простой и конфигурируемой. В нескольких статьях я простыми словами расскажу про фишечки программирования, которые использовал. Расскажу про подходы к написанию объектно-ориентированного кода и про соответствующие библиотеки, которые использовал. Уделю внимание базам данных, как можно связываться с базами посредством объектно-реляционных преобразований и про сам SQL. Опишу, что такое внедрение зависимостей и IoC контейнер, и как благодаря этому, только от одной переменной зависит режим работы – тестовый или торговый. Приведу пример реализации стратегии в рамках системы.
Оговорюсь, что это не hft – здесь не будет специальной оптимизации, работы с драйверами, памятью и т.д. В разработке использовал SmartCom и открытые библиотеки на C#. Чтобы не получилось слишком объёмно – буду сокращать, и опишу только часть моментов, опустив остальное (многопоточнось, проверки, защиту от сбоев и т.д.) Знаю, что есть StockSharp и пр. но… но… у меня с этим не пошло… мне проще оказалось сделать самому, чем от кого-то зависеть.
Оговорюсь так же, что всё нижесказанное – это моё личное мнение, сформированное в рамках моего понимания, не претендующее ни на что. Я всё буду объяснять своими словами, и лишь хочу осветить тот материал, который здесь не обсуждался, либо обсуждался мало. В своё время, смарт-лаб очень много дал мне, что бы не говорили, это очень хороший ресурс, где много интересных людей! Я хочу внести и свою лепту в копилку, может кому-то, когда-нибудь пригодиться. Буду публиковать по одной – две статьи в неделю, всего будет 11 статей.
Известно, что все биржевые трейдеры делятся на две большие категории. Это т.н. “квалифицированные” – разной величины инвестиционные компании и “не квалифицированные” – в основном, одиночки физ. лица. Между ними есть огромная принципиальная разница. И дело тут вовсе не в размере торгового капитала как может показаться на первый взгляд, а в том, что “квалифицированные” это те, кто осуществляет торговлю системно. То есть, в компании всегда есть различные службы — такие как анализ информации, например, и служба оценки и учета рисков — “риск менеджмент”, который выдвигает перед трейдером ряд правил, обязательных к выполнению перед открытием позиции. Это означает, например, что каким бы верным ни казалась трейдеру какое-то решение, и как бы кого он ни умолял разрешить ему это решение принять, риск менеджер не даст ему превысить установленный лимит — не позволит взять на себя дополнительный, не просчитанный риск. Риск менеджер сам не торгует, а занимается только оценкой рисков, аналитик тоже не торгует – он делает только анализ имеющейся информации и т.д.
Таким образом, каждый занимается только свои кусочком одной большой задачи – зарабатывать торговлей на бирже. При этом критерии оценки труда различных служб разные. Это и есть система. Разница между разными системами только в степени фрагментации общей задачи и количества ресурсов выделяемых для решения различных кусочков – подзадач. В одной компании могут быть весьма сильна аналитика, но относительно слабый риск менеджмент, в другой — риск менеджмент сильнее, и разделен на еще более узкие подзадачи и т.д. Таким образом, ”квалифицированный” инвестор торгует системно. Сила системы в том, что она вычищает из всего массива принимаемых решений те из них, которые были продиктованы не какими-то объективными причинами, а — были вызваны стремлением потешить наше эго, которое вечно кому-то чего-то хочет доказать. Эго никуда не денешь и не выключишь — оно неизбежно в какой-то момент обходит толщу запретов и, замаскировавшись псевдообъективностью, берет контроль над принятием решения, что приводит к серьезным ошибкам. И не только в трейдинге, кстати. “Не квалифицированный” инвестор физ. лицо — одиночка вынужден в своем лице сочетать все эти составные части системы, и от этого он становится похож на многоликую индийскую богиню Кали. Но Кали богиня и может находиться в каждый момент времени в каждом своей лике, еще таким свойством обладает электрон в составе атома. Мы же простые смертные люди и с нами происходит следующее: в самом начале мы много времени уделяем разработке какой-то своей системы учета рисков, и часто она выходит весьма неплохой, что приносит свои плоды в виде первых успехов. Эти успехи становятся отличным удобрением для нашего эго, оно быстро вырастает и начинает подменять собой все разумное, лишенное эмоций. Именно поэтому, самая распространенная кривая, которая символизирует карьеру большинства одиночек это перевернутая латинская V. 99% трейдеров одиночек теряют весь свой капитал в пределах года — двух. Нетрудно догадаться, кому достаются их деньги – это ”квалифицированные” инвесторы. Вот, собственно, и все — других причин, объясняющих, почему одни всегда выигрывают, а другие всегда проигрывают, не существует.
Ну что же тогда делать бедному “не квалифицированному” инвестору? Как уравнять шансы и перестать быть добычей для акул трейдинга? Ответ напрашивается сам собой: стать хищником самому — создать систему, исключающую эмоциональную торговлю. Кто-то возразит: постойте, мы же живые люди, а эмоций нет только у бездушных машин. Все верно, стало быть, перед нами выбор: либо стать машиной самому (и именно те, кому это удалось, становятся стабильно зарабатывающими трейдерами), либо поставить нужную машину себе на службу. К счастью, такая машина есть — она называется торговый робот. Что это значит? Торговля через робота это не просто и не столько автоматизация, сколько способ уйти от эмоций к беспристрастной системе. Не больше — не меньше. Это возможность успешно найти свою нишу и спокойно зарабатывать, не вертясь полночи в постели в тревожных думах. Это, если хотите, способ вновь обрести себя, а вашей семье — вас. Знаете, в принципе можно и сейчас, допустим, совсем не иметь ни смартфона, ни просто мобильника даже и продолжать пользоваться телефонными будками – они еще кое-где сохранились, поддерживая тем самым, необходимый в настоящее время уровень коммуникаций. Но что это будет за жизнь? Вряд ли такой способ добавит вам конкурентных преимуществ. Причина — телефонная будка это устаревшая технология. Торговля вручную это тоже устаревшая технология, такая же, как телефонная будка. Робот – инновационная технология и торговать через робота значит идти в ногу со временем. *** WWW.TREIDING-ROBOT.COM
Робот, который Вам не понравится!? (Часть !!!)
(с картинками…)
Для начала картинки. Сейчас я покажу результаты тестирования, а не реальные результаты по счету.
2017.01.01 — 2017.08.22
Робот, который Вам не понравится!? (Часть !!)
(с картинками…)
Начало тут: https://smart-lab.ru/blog/416059.php
В предыдущем посте я попытался развить тему, что робот, не обязательно HFT. Бывают и другие.
Конечно, мой пост не стал фурором на смартлабе, но к этому я и не стремился. Но, заметил, что некоторые немного гневно отнеслись к моему повествованию, другие просто почитали, а кто-то и плюсов понаставил!
Развилась небольшая дискуссия, но вялая и не продуктивная, хотя интересные мысли присутствуют. Я это расцениваю так – тема интересна, но нет продукта для обсуждения.
Народ явно опечалился отсутствием картинок!
И я солидарен и согласен, что к таким постам должны быть картинки!
И они будут!
Но, прежде – немного предыстории:
Я, в далеком 2009 году решил написать робота. До этого тоже были попытки, но на языке QPile – это просто жуть. К тому же, ни как не протестируешь. Затем был МТ4, и вполне успешно, но это другая история. И вот, в ноябре 2011, я начал писать проект, в котором хотел воплотить то, чего не было ни в одной среде для разработки роботов. Я принял решение и купил лицензию на Embarcadero Delphi. Решение спорное и я одно время часто задумывался, а правильно ли я поступил? Но, я это сделал и поэтому мучить мозг не стал! В итоге я написал свою торговую систему полностью на Delphi, с использованием TransaqConnector. Этого не хватает для коммерческого использования, но для личных нужд – вполне! Поэтому, всё то, что вы увидите – это то, чего почти достаточно! Я многое хотел бы доделать и переделать, но это пока не цель.