Всем привет).
В процессе углубления знаний языка C# пришла такая мысль, хочется получить обратную связь на предмет незамеченных подводных камней и аналогичного — буду благодарен.
Собственно: богатый арсенал языков программирования, а в частности C# — в т.ч. наследование и прочее, позволяют реализовать торгующий модуль какой угодно архитектуры, структуры, с нужными названиями классов, полей и методов. Посему, предположительно, можно написать такой проторговщик, который будет принимать код стратегий из Wealth-Lab как родной, без необходимости его менять, подгонять, править, дебажить, искать ошибки переноса и прочее. Все что я написал после слов «без необходимости» — как бы известные плюсы использования одного кода для тестов и торговли (наверняка, не все плюсы даже перечислил). Т.е. тут один раз качественно убеждаемся, что код интерпретируется полностью аналогично и всё — дальше Ctrl + C, Ctrl + V.
Или если можешь написать такой проторговщик, то проще и Велс свой написать и не иметь мозг?))
Что думаете? :)
UPD.: как это часто бывает, комментарии достаточно волатильно отходят от непосредственно затрагиваемого вопроса)), но все равно есть интересные мысли.
Очень-очень многие явления, процессы и системы в целом подпадают под модель: есть открытый внешний слой и скрытый внутренний. Данная модель конечно относительна — в том смысле что если ты часть системы — для тебя скрытый слой может быть ни таким уж и скрытым, или вообще не скрытым, а полностью понятным и прозрачным.
Открытый слой — это как некий интерфейс взаимодействия (он выдаёт инфу, а иногда и позволяет взаимодействовать с системой, опять же анализируя обратную связь на воздействия). Скрытый (темный слой) — внутренняя кухня системы, она закрыта для внешних пользователей, для внешних объектов. Как работает темный слой внешний пользователь дедуктивно никоим образом вывести не может, индуктивно — да — со всеми вытекающими плюсами и минусами индуктивных процессов. Плюс здесь наверно только один — это собственно сама возможность заглянуть за ширму и попробовать понять, как работает скрытый слой. Ну а минусы — легко набрести на заблуждения и прочие искажения информации разной степени ошибочности и критичности.
Ненавижу дебажить код.
Код стратегий, код чего угодно. По типу задачи (задача найти баг или оценить код на предмет: есть ли баги) – задача моя – т.е. я такое люблю – найди то, не зная что, так не зная как. Но блин – итак много задач, эти задачи они как бы не входили в твои планы, это как бы внеплановые задачи. Задача найти баги – плановая – но каждый конкретный новый баг – это внеплановая фигня – поэтому она напрягает. Это не задача, двигающая вперед, а задача, решение которой тебя возвращает в текущую точку развития после откидывания назад. Когда возникнет такая возможность, в первую очередь делегирую QA.
Больше меня напрягает искать баги когда нет формальных свидетельств их наличия. Код компилируется, трейды совершаются, но ты, блин, очень не уверен, что в таком объёме кода нет ни одного бага)). Приходится планомерно проверять корректность. Пожалуй я начинаю переходить именно к такому подходу: планомерно всё проверять, а не на финальном этапе вдруг выяснить, что «похоже, что-то работает не так как надо». Думаю, с опытом процесс будет всё системней, а как следствие данную систему можно оптимизировать и она будет протекать всё легче, всё менее затратней, всё приятней в конце концов.
Ещё хочется верить, что опыт приводит к уменьшению кол-ва ошибок, ну и повторное использование кода (читай, библиотеки) тоже.
Легко оставаться оптимистом когда всё хорошо, сложнее — когда всё похуже). Хотя нет — конечно же от человека зависит — кого-то заставляют шевелиться неудачи, кого-то воодушевляют его победы.
Смогли догадаться по эпиграфу, какая будет эмоциональная окраска поста?))
Я не особо доволен своими результатами, хотел, конечно, большего. Но если посмотреть объективно, отодвинуть загораживающие обзор недостижения крупных целей или значимых результатов, то в принципе всё вполне позитивно. Местами будет достаточно абстрактно написано — сорри, это мой стиль)).
1. Результаты торговли за год (любой), аккурат в районе нуля. Ну ± 1%, ну скорее минус конечно)). А вообще я так и не знаю, как считать %% дохода в случае если ты периодически довносил/довыносил)) — по-моему в любом подходе к вычислению % в этом случае будет достаточно высокий процент условностей — если я не прав — напишите в комментариях).
Комментарии: как торговал — особо никак — одну бумажку мучил весь год, инвестиционно, пытаясь перезаходить частью пакета по лучшей цене. Идея долгосрочная, то что в нулях остался на таком небольшом горизонте — можно сказать, везение.
Одна из формул). Ну и этот грааль не окончателен, скорее размышления на тему.
Составляющие успеха следующие:
— Иметь набор зарабатывающих алгоритмов.
— Иметь систему, увязывающую эти алгоритмы в единое целое таким образом, чтобы эффективность связки была оптимальной для данного набора.
— Иметь понимание, когда и почему зарабатывают эти стратегии.
— Уметь понимать, когда и почему зарабатывают любые стратегии.
— Уметь генерировать работающие стратегии.
Это если говорить о долгосрочных горизонтах, с более короткими горизонтами можно без части этих компонентов оставаться на плаву, но обвалиться когда сменится фаза рынка, или перестанут работать работавшие раньше алгоритмы и т.д.
Не судите строго. Не, ну а чё, не каждый же раз гениальные посты выдавать)))
Вселенная откликается на мой зов) – плотнее врастаю в алгоритмическую торговлю и алгоритмическую среду общения, всего становится больше и в целом много), а учитывая, что я пока не оторвался от островка безопасности в виде не связанной с трейдингом наёмной работы, это может представлять некоторые сложности)). Один из секторов этого «много» — самописный тестер. Сейчас буду проводить тесты скорости, сравнивать в Велс-лабом. Что-то мне подсказывает, что на длинной дистанции (большое кол-во баров) Велс вообще сломается, не говоря о скорости)). А скорость, действительно, любопытно замерить. Если она будет не хуже – это для меня уже победа, если лучше – вообще супер. Хотя я знаком с выражением «архитектура приложения» поскольку-постольку, но тем не менее постарался архитектурно заложить большой потенциал)). Когда всё заработало (написанная удобным образом простенькая стратегия посчиталась и выдался результат прогона) – испытал неизведанное доселе и довольно приятное ощущение от того, что ты точно ЗНАЕШЬ, как работает твое приложение и ты можешь в рамках архитектуры править всё что хочешь, нет табу, нет нельзя, нет ограничений, есть только приоритеты, ну и конечно, как сказал выше – архитектура. Одна из целей написания своего тестера – желание реализовать свои идеи в процесс оптимизации, которые невозможны/не удобные в случае существующего на рынке софта. В общем, посмотрим.
Быстро сказка сказывается, да не быстро дело делается)).
Напишу немного про прогресс. Отсутствие позитивной обратной связи на мои теоретизирования и обвинения в перегибе в сторону теории охладили моё желание изливать свои теоретические рассуждения и мысли), ну ничего, оно вернётся со временем — мысли то не пропали)). Это почему я не пишу. По поводу конкретного прогресса теперь. Я искал — я нашел — нашел компаньона — теперь работаем вдвоём. Пока всё пучком, надеюсь тандем выстрелит, в любом случае опыт интересный и полезный получится. А в целом по поводу тандема — сценарий обычный — первичная эйфория сменилась более объективным отношением. Определили схемы взаимодействия, набросали роудмап со сроками, двигаемся согласно установленного плана)).
Плюсы тандема (не любого, а именно этого):
— Я закрыл те области, которые у меня проседали, могу сконцентрироваться на том, что умею и люблю — рисёч. Кроме технических вопросов кстати скомпенсировал свой перекос в теорию и пространные рассуждения, в запрягание нежели езду и т.д.
Только сегодня и только для вас!: дочитай пост до конца — и ты услышишь увлекательную историю о рисовании графика ликвидного фьючерса.
Но по порядку. Вообще-то те, процессы, которыми я занимался для создания первой работающей схемы, я не очень люблю. Я больше люблю неторопливо исследовать, чем это. А собственно, что «это»?
Я как человек, любящий долго запрягать, когда речь зашла об алготрейдинге — долго запрягал)). Долго выбирал стек-технологий, тыкался-мыкался и остановился на некоторой связке, а именно Wealth-Lab (тестирование стратегий и всяческий рисёч) + Transaq connector (получение маркет данных, отправка ордеров) + готовый коннектор (для того, чтобы связать два предыдущих товарища между собой). Как я сказал, я долго выбирал, и когда выбрал подумал: ну всё, понеслась, запускаю и погнали алготрейдить)). Нифигаа..
Как оказалось парень, которого я назвал «готовый коннектор» не так прост. У меня нет его исходного кода (хотя кого я обманываю, даже если бы был, мой C# пока не так хорош, чтобы ломаться при слове delegate или чем-то подобном, что скорее всего я в коде встречу). А работать с чем-то, что не работает идеально, или вообще не очень хорошо (или даже вообще не работает), не имея возможности посмотреть внутрь, ну очень не комфортно. Развитые аналитические способности, конечно, в некоторой степени позволяют заглянуть внутрь сквозь черноту черного ящика, но это совсем не то же самое что реально видеть, как оно работает. Ну короче, коннектор не отправлял корректно заявки — часть отправлял, а часть упорно игнорил — мне такое не подходит)). Общался с разрабом — не помогло. Сам исследовал — не помогло (строил гипотезы, проверял, строил новые — проверял, конкретизировал гипотезы — проверял, факторный анализ проводил, чего только не делал, успехи были, но остались области полностью черные когда ты тупо не видишь никакой закономерности в том, почему оно вот сейчас работает, а вот сейчас не работает). После этих заглядываний через черноту черного ящика я собственно и решил форсировать апгрейдинг своего C# — никто тебе не помешает заглянуть внутрь того, что ты сам написал и сам понимаешь)).
I’m back!
Было сложно? – было. Сделал ли я так, как хотел бы чтобы выглядело исполнение приказов, и получение маркет даты в идеале? – даже близко нет. Рад ли я, что оно хоть в каком-то виде, но заработало? – очень!
В общем первая связка — done. Здесь всё как я люблю (сарказм) – и тебе необходимость последовательного выполнения набора ручных действий чтобы стартануть механизм (нарушишь порядок или что-то пропустишь и твоя шарманка не заработает) и шаткость конструкции – чуть сильнее дунет ветер — и оно развалится. Но блин всё равно приятно. Это как в B2B секторе приходят бизнесмены-клиенты с копеечными оборотами – для компании они – больше убытки чем прибыль, но они сами очень горды собой и своими оборотами, я их понимаю, и всегда понимал.
Когда приступал к настройке-построению системы, думал: настрою, сконцентрируюсь на рисёче)). Ну да, наивный). Теперь скорректированный план такой: