Недавно я написал и выпустил набор служебных модулей для алготрейдинга, написанных на узле, который я назвал StonksJS (в честь красивого мема stonks и в честь прекрасных людей из r/wallstreetbets «». Эта статья даст вы познакомитесь с этими инструментами вместе с несколькими примерами из реальной жизни.

Предыстория и мотивация

Недавно я попал в прекрасный и опасный мир алготрейдинга — способа автоматизации покупки и продажи рыночных ордеров (акций) с помощью программы или скрипта. В основном внутридневная торговля в терминале. Или, по крайней мере, я так думал.

Как оказалось, я не собирался быть первым человеком в истории, который превзошел рынок с моим гигантским, большим мозгом и поразительной способностью писать неряшливый код. Короче говоря, мой краткий набег на предприятие закончился быстро (но, к счастью, до того, как я потерял слишком много).

Тем не менее, я воспользовался возможностью, чтобы извлечь уроки из своей неудачи, и вместо того, чтобы уйти побежденным, у меня вместо этого была целая куча вспомогательных скриптов и файлов, которые я использовал для заполнения пробелов в моих зависимостях. С тех пор я их почистил, написал кое-какую документацию и выпустил их в огромном мире.

Функции

Уже существует множество отличных инструментов для алготрейдинга. Большинство из них написано на Python, но поскольку я по профессии фронтенд-инженер, я решил писать все на JavaScript (примечание: изначально я все писал на Python, но, поскольку я не занимался высокочастотной торговлей, я не нуждался в преимуществе скорости, которое предлагает Python). И хотя существует миллиард пакетов npm для технических индикаторов и бэкдорных API-интерфейсов Robinhood, самой большой проблемой, с которой я столкнулся, была автоматизация возможности выбирать акции для торговли. Я мог бы протестировать стратегию до чертиков, но если бы у меня не было актива, с которым можно было бы сопоставить ее, в этом не было никакого смысла.

Я мог бы протестировать стратегию до чертиков, но если бы у меня не было актива, с которым можно было бы сопоставить ее, в этом не было никакого смысла.

Некоторые из ключевых особенностей StonksJS:

Имея эти функции, мы можем получить наши потенциальные активы, а затем протестировать нашу стратегию на истории.

Пакеты

StonksJS спроектирован как монорепозиторий, поэтому каждый пакет ограничен для обеспечения модульности кода и функциональности. Доступные пакеты:

  • @stonksjs/finviz — результаты пользовательского скринера и данные компании
  • @stonksjs/stock-screener — отраслевые скринеры акций от MSN Money.
  • @stonksjs/robinhood-collections — Получите символы из любой коллекции Robinhood.
  • @stonksjs/quote — подробные финансовые данные компании и DD
  • @stonksjs/core — Сбор всех вышеперечисленных пакетов, экспортированных в удобный API

Каждый модуль имеет хорошо документированный API, поэтому, если вы заинтересованы в их использовании, ознакомьтесь с документацией по API. Там же вы найдете информацию об установке и примеры.

Следующие шаги

Разработка еще не завершена — еще много работы, которую я хочу сделать. В идеале я хотел бы, чтобы экосистема росла и включала тестирование на истории и индикаторы, но для этого уже есть инструменты, поэтому я не знаю, стоит ли дополнительная работа того.

Тем не менее, я хотел бы, чтобы проект развивался. Если вы обнаружите, что используете какой-либо из модулей области действия, дайте мне знать, что вы думаете, в комментариях или в репозитории GitHub.

Я также ищу соавторов и участников, так что если вы ищете небольшой забавный побочный проект, чтобы поработать над ним, создать и выпустить или запрос на включение и начать работать вместе.

Наслаждаться!