Инфраструктурно меня конкретно штормило раньше). Видимо, строить инфраструктуру (где-то в глубинах внутренних предпочтений) мне ничуть не менее интересно, чем рисёчить стратегии. Поштормило-поштормило, да подотпустило. Зато теперь у меня внутри нет никакой недосказанности вида «а что если своё попробовать написать», «а что если готовую вот эту специализированную взять» и прочих. Лучше жалеть о то, что сделал… и я делал)).
Сейчас самописная инфрастуктура. Не разраб, не кодер, не архитектор, но кой какие-то принципы усвоил – какие-то из своего опыта вынес, какие-то из курсов или ещё откуда. Соблюдение банальной IT гигиены на порядки облегчает жизнь. Пример: раньше мог запилить коннектор какой-нибудь, который корнями врастал в остальную часть инфраструктуры и чтобы заменить его на другой коннектор, если понадобится, приходится выкорчёвывать, а это долго, сложно и отличный повод запустить прокрастинационный цикл. А надо-то, банально, написать базовый класс и, много не надо, буквально несколькими с указанием сигнатур, дальше от этого класса наследоваться – всё. Пример: щас сделать Yahoo Finance адаптер для получения исторических данных конечно совсем не рокет саенс, но когда ты всё делаешь по красоте щас можно сделать ещё проще (так): уважаемый ChatGPT-4, вот базовый класс, отнаследуйся от него, сделай пож. класс для получения исторических данных по US Stocks с Yahoo Finance. Обязательно писать «Уважаемый», иначе ничего не получится). Ну и собственно почти всё, дальше небольшие корректировки и новый поставщик исторических данных готов, а главное готов для работы с имеющейся инфраструктурой.
Ну и в целом, пилить инфраструктуру с нуля – все этим вспомогательные библиотеки, классы – не тривиальная задача, много челленджей по ходу возникает. Но когда все готово и работает, дальше очень удобно переиспользовать. В этом аспекте мне нравилась S# — у тебя есть доступ к лоулевелу, у тебя есть готовые собранные из лоулевела детальки, у тебя есть целые отдельные «постройки» собранные из деталек, но если надо ты можешь всегда вернуться на лоулевел и поколдовать на этом уровне если требуется. У меня что-то похожее.
Взаимодействие с инфраструктурой условно-хардкорное. В сторону инфраструктуры (а, я наверно, не раскрыл что в это понятие вкладываю – ну сами библиотеки, бэктестеры, торговалки, коннекторы и прочее) это конфиги, код подшаманить и перезапустить, ну Jupyter. Со стороны инфраструктуру в мою сторону это логи, консоль, алерты в телегу и… снова Jupyter. А, ещё в сторону инфраструктуры – есть API простенький.
Как это работает (в общих чертах).
Начинается процесс с торговой идеи, понятно. Наследуюсь от базового класса стратегии, пишу стратегию. Когда эту часть разрабатывал один из основных приоритетов был чтобы при создании стратегии не надо было лишний код писать: вот мы что-то инициируем, вот ещё что-то, а вот без этой строчки ничего не запустится и т.д., такое тоже видел в других системах. Да, человечество изобрело такие штуки как шаблоны, но всё равно не то и как минимум ухудшает наглядность.
Сейчас чтобы разрабатывать стратегию на первом этапе у меня есть Jupyter Notebook под это. Не громоздкий, с понятной структурой, удобный. Не громоздкий потому что код не в нём, код в библиотеке, а Jupyter просто создаёт объекты, инициирует переменные и подобный stuff.
Набросал стратегию, прогнал на паре тикеров, тут же в отдельной ячейке можно отрисовать свечи, вход, выход и что вокруг проиходит. На этом этапе я убеждаюсь, что стратегия находит то, что я ожидаю. На этих этапах часто рождаются инсайты относительно того, а то ли я ищу, относительно очертаний того, что я ищу и т.д. На этом же этапе делаю прикидки по разным параметрам и фильтрам. Jupyter в этом месте, конечно, супер удобен: notebook (Jupyter) для разработки стратегий он предполагает некий пайплайн (план, считай), но в любой момент можно отойти от него и сделать что-то ответвляющееся – трейды покрутить, графики какие-то доп. построить или что-то такое.
Когда поигрался со стратегией, дальше её путь в другой ноутбук – ноутбук про бэктесты – там указываю диапазоны параметров, кол-во прогонов, набор тикеров и прочее и погнали.
Дальше увесистый csv с резалтами идёт на вход следующему ноутбуку, который – деталей здесь не будет – анализирует результаты бэктеста. В общем тот этап где обычно определяют диапазоны или значения параметров и что-то такое).
Дальше отдельным приложением торговалка конкретной стартегией (на наборе тикеров). Запустили – погнали. Она генерит сигналы, сигналы идут на Execution API — оно берет сигналы и роутит их по соответствующим коннекторам. В будущем это API будет делать, конечно, много всего интересного, пока не много и не особо интересного. Всё. Создал новую стратегию – делаю под неё приложение запускаю, ничего перезапускать не надо.
Ещё есть некоторые блоки инфраструктуры, отражающие логику общего алго флоу, но их оставим за скобками.
Что удобно, когда инфраструктура своя – то, что ты всем управляешь (в рамках архитектуры, потому что если ты сделал криво, теоретические ты можешь сделать что угодно, конечно, но фактически скорее всего ты не сможешь или не будешь и не захочешь). Хочешь поменять процессы (например, ты провел какой-то мета-рисеч, который сказал, что сам процесс разработки стратегий нужно поменять вот так-то) – берешь и меняешь. Инфраструктура отражает твой подход, нет ничего лишнего. Также инфраструктура позволяет эволюционировать твоему подходу и подстраивать инфраструктуру под него.
Ну и микро кусок Jupyter тетради, где разрабатываю стратегии)).
на счет яши… и дневок… проблема дневок в том, что надо разбираться дневки за тоговую сессию с 9:30 по 16:00 или за 24 часа (в 4 утра прошла рендомная сделка на 1 штуку и появился клос)...
мораль в том, что дневки надо лепить из 15ти минуток...
я кстати принципиально не торгую бумаги ниже 1 мио шт оборота в день… т.к проблемы с исполнением лимиток
ves2010, )).
Я торгую уже дохрена лет так-то).
полюбому успехов тебе и профитов )
ves2010, Ну на Америке немного давно торговал, щас да, не торгую. Ну там есть премаркеты всякие. Посмотрим, если будут основания скорретировать логику исполнения в бэктестах — ну поправлю. Пока граалей раскиданных по полу на Америке не вижу в тестах, подозревать бэктесты в завышении метрик поводов нет).
За пожелания спасибо :).
Так может быть Вы поясните Вашу же терминологию. Что подразумевается под термином «инфраструктура»? И почему он так отличается от общепринятого?
Дак а вот же в тексте). Просто то, что отличается я не говорил), я сказал что может. Есть железная инфраструктура, есть софтовая, по-моему всё в рамках общепринятых алго понятий. Не знаю, почему у вас вопросы возникли тут).
Вы же еще используете термин «архитектура». Причем то, что Вы называете инфраструктурой скорее ближе к архитектуре.
PS. Мой интерес к этой теме вызван тем, что, на первый взгляд, «крутые программисты» делающие алгопродукты на продажу тоже путаются в этих терминах.
У меня по другому сделано.
Есть Тестер и Бот, которые не содержат внутри никакой зашитой стратегии. Стратегия задается в виде текста (по аналогии с Метастоком), например, OPEN LONG: «С>ma(20) and T>141000» и т.д.
Все, что понравилось в Тестере можно добавить в Бота, который может одновременно оперировать до сотни таких систем и писать исторические котировки в БД.
Кроме этого есть Загрузчик исторических котировок, Анализатор сделок, Исполнитель сделок (если к Квику нужно подключить несколько ботов или делать заявки лимитками) и т.д.
Т.е. для разработки системы и запуска бота ничего компилировать не приходится.
У меня есть свое хранилище всей истории по всем тикерам секций фортс, фондовой (кроме 3-го эшелона), валютной. Там у меня хранятся минутки, из которых я могу сделать любой ТФ, даже нестандартный без квика и метастока.
Странно что на создание стратегии вы тратите меньше всего времени чем на игры с инфраструктурой. Стратегия дается потом и кровью в течении многих лет, а не походя...
В любом случае удачи!
monomah,
В алгоритмической торговле обычно сильно по-другому это делается.
Хорошая стратегия всё а инфраструктура это дополнение к стратегии а не иначе.
За программистов не скажу — может и так. Мне стратегию, если есть подходящая инфраструктура, работающую стратегию написать легче.
А вообще «программирование» в данном случае это инвестиции. Инвестиции в качество стратегий, качество портфеля стратегий, инвестиции в скорость разработки портфеля и т.д.
А это бесценно
За программистов не скажу — может и так. Мне стратегию, если есть подходящая инфраструктура, работающую стратегию написать легче.
А как вы определите, что ваш алгоритм прибыльный? Путем тестирования? А что, если это будет лишь подгонкой под историю (и, скорее всего, так и будет!)? Тому доказательства — какое-то n-ное количество систем в портфеле и постоянная оптимизация параметров. А ведь«ручные трейдеры» часто обходятся одной системой, которая у них работает на всех рынках и всех фазах рынка! А причина превосходства ручного трейдинга над алгоритмическим проста — рынок это не математика, а взаимодействие толпы народа с целью отобрать друг у друга деньги. И никакими формулами это взаимодействие не описать. А вот понаблюдать со стороны и составить совершенно субъективное мнение вполне возможно. Например, как вы определите алгоритмически момент пробоя зоны сопротивления? Это сложно. Потому что каждый пробой не похож на предыдущий, входных параметров может быть много…
… А большое количество параметров повлияет отрицательно на универсальность системы. В то же время, подготовленный трейдер справится с этой задачей гораздо легче. Ведь он подойдёт к решению куда гибче, и обратит внимание лишь на то, что в данной конкретной ситуации важно, а что не важно — отбросит. А вот алгоритм такой гибкостью не обладает.
1. При правильной инфраструктуре можно неделями не подходить к компу, в то время как ручной трейдер ежедневно теряет нервы, зрение и зарабатывает кучу болячек от сидячего образа жизни.
2. Алготрейдинг это часто точный системный трейдинг, исключающий эмоции, тильт, лудоманию, чего как правило не скажешь о ручном.
3. И т.д. и т.п.
Чтобы не углупляться в бесполезный спор, показываю результаты, они меня вполне устраивают:
Опять же, я не утверждаю, что прибыльный алготрейдинг невозможен. Я лишь говорю, что этот подход не оптимален.
Михаил К.,
1. Я руками тоже торгую. В том числе это позволяет не терять связь с рынком и ощущением рынка.
2. Стандартный холивар ручная торговля vs алго, не хочется снова эту тему поднимать и обсуждать).
JC-trader ☮, Сыроват-с). Я почти подстроил его под свой подход, но вот с частью execution так и не получилось нормально процесс торговли настроить — ни с их коннектором, ни без их коннектора, я заколебался мучиться и забил. Мне принципиально было чтобы я эту же отрисёченную стратегию мог в торговлю запустить и портфель стратегий тут же бы и торговал — эта часть не пошла.
Своя инфраструктура тоже может быть «сыроватой», но ты знаешь, что тебе конкретно щас нужно вот это и вот это и ты берешь и правишь/дебажишь/допиливаешь/добавляешь вот это нужное. В стороннем продукте уровень контроля на порядки меньше, тем более там этот Евген/Юджин со своими тараканами)) — с ними ещё нужно бороться).
Это точно. За что ни возьмись, какой-нибудь баг вылезет. Я до сих пор, в основном, старой шестой версией пользуюсь. Но чтобы ею пользоваться приходится платить за новую :)
JC-trader ☮, Да, потому что нельзя просто помнить как работал нормальный уже устаканенный 6-й велс, не переиспользовать его кодовую багу, написать всё с нуля и не получить долгий период с багами. Ну в смысле я их не обвиняю, я к тому что это вот эти все баги это ожидаемое состояние, ожидаемые явления в описанном контексте.
Оно плавает как утка, крякает как утка… но не утка ещё)).
JC-trader ☮, а не было мыслей перейти на TSLab? тот же C#
Причем TSLab удобнее и меньше ограничений, чем в WLD
PS
Несколько лет торговал через WLD4, потом перевел на WLD6. В итоге пару лет назад благодаря Дмитрию Власову перевел все на TSLab и сейчас очень доволен
В общем, для моих целей он не годится. Если бы торговал внутри дня Si и Ri, то может это и был бы идеальный вариант, но у меня в основном количественный анализ на американском рынке.
Вот именно из-за таких постов я иногда захожу на смартлаб!
Михаил, спасибо!