Недавно я написал и выпустил набор служебных модулей для алготрейдинга, написанных на узле, который я назвал StonksJS (в честь красивого мема stonks и в честь прекрасных людей из r/wallstreetbets «». Эта статья даст вы познакомитесь с этими инструментами вместе с несколькими примерами из реальной жизни.
Предыстория и мотивация
Недавно я попал в прекрасный и опасный мир алготрейдинга — способа автоматизации покупки и продажи рыночных ордеров (акций) с помощью программы или скрипта. В основном внутридневная торговля в терминале. Или, по крайней мере, я так думал.
Как оказалось, я не собирался быть первым человеком в истории, который превзошел рынок с моим гигантским, большим мозгом и поразительной способностью писать неряшливый код. Короче говоря, мой краткий набег на предприятие закончился быстро (но, к счастью, до того, как я потерял слишком много).
Тем не менее, я воспользовался возможностью, чтобы извлечь уроки из своей неудачи, и вместо того, чтобы уйти побежденным, у меня вместо этого была целая куча вспомогательных скриптов и файлов, которые я использовал для заполнения пробелов в моих зависимостях. С тех пор я их почистил, написал кое-какую документацию и выпустил их в огромном мире.
Функции
Уже существует множество отличных инструментов для алготрейдинга. Большинство из них написано на Python, но поскольку я по профессии фронтенд-инженер, я решил писать все на JavaScript (примечание: изначально я все писал на Python, но, поскольку я не занимался высокочастотной торговлей, я не нуждался в преимуществе скорости, которое предлагает Python). И хотя существует миллиард пакетов npm для технических индикаторов и бэкдорных API-интерфейсов Robinhood, самой большой проблемой, с которой я столкнулся, была автоматизация возможности выбирать акции для торговли. Я мог бы протестировать стратегию до чертиков, но если бы у меня не было актива, с которым можно было бы сопоставить ее, в этом не было никакого смысла.
Я мог бы протестировать стратегию до чертиков, но если бы у меня не было актива, с которым можно было бы сопоставить ее, в этом не было никакого смысла.
Некоторые из ключевых особенностей StonksJS:
- Извлечение символов из надежных отраслевых фильтров, используемых в MSN Money.
- Возможность получить результаты из настраиваемого скринера finviz
- Получение символов из любой коллекции Робин Гуда
- Чрезвычайно подробные финансовые данные DD/компании для данного тикера
Имея эти функции, мы можем получить наши потенциальные активы, а затем протестировать нашу стратегию на истории.
Пакеты
StonksJS спроектирован как монорепозиторий, поэтому каждый пакет ограничен для обеспечения модульности кода и функциональности. Доступные пакеты:
- @stonksjs/finviz — результаты пользовательского скринера и данные компании
- @stonksjs/stock-screener — отраслевые скринеры акций от MSN Money.
- @stonksjs/robinhood-collections — Получите символы из любой коллекции Robinhood.
- @stonksjs/quote — подробные финансовые данные компании и DD
- @stonksjs/core — Сбор всех вышеперечисленных пакетов, экспортированных в удобный API
Каждый модуль имеет хорошо документированный API, поэтому, если вы заинтересованы в их использовании, ознакомьтесь с документацией по API. Там же вы найдете информацию об установке и примеры.
Следующие шаги
Разработка еще не завершена — еще много работы, которую я хочу сделать. В идеале я хотел бы, чтобы экосистема росла и включала тестирование на истории и индикаторы, но для этого уже есть инструменты, поэтому я не знаю, стоит ли дополнительная работа того.
Тем не менее, я хотел бы, чтобы проект развивался. Если вы обнаружите, что используете какой-либо из модулей области действия, дайте мне знать, что вы думаете, в комментариях или в репозитории GitHub.
Я также ищу соавторов и участников, так что если вы ищете небольшой забавный побочный проект, чтобы поработать над ним, создать и выпустить или запрос на включение и начать работать вместе.
Наслаждаться!