Как я прошел курсы python и не устроился на работу программистом, но все равно зарабатываю на своих знаниях

Привет, меня зовут Рустем Гареев, я продюсер по специальным проектам в крупном региональном медиахолдинге, и да, я решил в 33 года начать изучать Python. Это не первое мое знакомство с программированием. Компьютер у меня появился в одиннадцать, через три года я уже писал свой первый код. Тогда это был язык Pascal, потом Delphi и олимпиады по программированию.

Как я прошел курсы python и не устроился на работу программистом, но все равно зарабатываю на своих знаниях

Обо мне

После школы я поступил не на факультет информатики в техническом ВУЗе, а в финансово-экономический. На дворе был 2006-й год и экономисты с юристами были как современные айтишники. Четыре года бакалавриата, магистратура, аспирантура, работа не по специальности, должность топ-менеджера в крупнейшем региональном медиа-холдинге и вот в 33 года меня приспичило изучить Python.

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

О курсах

Так я зарегистрировался на Яндекс. Практикуме, стоимость обучения тогда была 90000 рублей. (И чтобы вы не думали что это реклама, вот вам просто названия других обучающих платформ: Skillbox, Skillfactory) . После 9 месяцев обучения, я смог сам написать бэкенд на Django для дипломного проекта, скажу честно, далось мне все это с трудом. Не понимаю, как люди, которые вообще ничего не понимают в программировании, доходят до конца таких курсов.

Финальным шагом должен был стать поиск работы. В “Практикуме” (наверное как и везде) есть карьерный трек, где тебя готовят к собеседованиям, но я его не стал проходить, потому что был не готов менять работу. Рынок джунов тогда перенасытился, предложений на рынке было очень много. Таких как я, после курсов, можно было найти на каждом углу и зарплаты начинались от 30 000 рублей за стажировку (в лучшем случае) и 60 000 — 80 000 рублей за ставку джуна. Я бы очень сильно просел по зарплате, а желание сменить работу было не таким сильным, чтобы я лишал себя денег.

О пет-проектах

Кто занимается программированием знает, что если на две недели забросить это дело, то спустя 14 дней, ты смотришь на код, как на записи древних инков, поэтому я решил, что мне нужно создавать пет-проект, чтобы не забыть чему научился.

Первым делом я написал проект сбора статистики по телеграм каналам. Этакий tgstat, только в разрезе регионов России. Я до сих пор пользуюсь своим детищем, но для коммерческой реализации не хватает фронта. Я написал его на шаблонах Django, но выглядит это, мягко скажем, несовременно.

Тот самый пет-проект
Тот самый пет-проект

Я пошел по легкому пути и по сути применил все то, чему меня научили на курсах, не придумав ничего нового. Это плохой путь, потому что я не приобрел новых знаний, просто не забыл старое.

Как я стал зарабатывать

Спустя почти год, я увидел у друга телеграм бота, который автоматически торговал на криптовалютной бирже. Создатель бота брал плату за пользование — 60 долларов в месяц. Почему бы не создать этого бота самому, подумал я, и открыл vscode.

Потом понял, что поспешил, закрыл vscode и начал изучать, что такое торговые боты и какой алгоритм нужно для этого написать. Честно, я очень скептически к этому отнесся, потому что всё, к чему прибавляется приставка «крипто», отдает легким душком. Но постепенно я понял, что самое худшее что может случиться на спотовой торговле, например, биткоином — это то, что в какой-то момент у меня на руках окажется очень много биткоинов.

Схема бота была простая и основывалась на так называемом «скальпинге»: создании большого количества ордеров и отслеживании изменения их статусов. Если ордер на продажу исполнился, то нужно закупить по более низкой цене, а если исполнился ордер на покупку, то нужно выставить ордер на продажу по более высокой цене. Входные параметры — это сумма депозита и рамки цены криптовалюты. Если цена выходит за рамки, то бот прекращает свою работу и ждет возвращения цены в коридор, это нужно, чтобы обезопасить себя от провалов цены. Позже я добавил функцию изменения рамок в реальном времени, так называемого восходящего трейлинга.

Для теста я остановился на бирже Mexc, у нее бесплатное API и спотовая торговля без комиссии. Торговую пару выбрал kasusdt, как наиболее волатильную при относительно надежной криптовалюте, позже добавил еще btcusdc. Я использовал библиотеку python-telegram-bot, так как пользовался ей до этого и мне она кажется наиболее понятной.

Интерфейс бота в Телеграм. 
Интерфейс бота в Телеграм. 

Это был мой первый опыт подключения к «взрослому» внешнему API, документация была на английском, но в целом все понятно. Единственное, у меня возникла проблема с шифрованием, я не сразу понял, чего от меня хотят. Для запросов, которые поступают от пользователей биржи, API использует подпись (signature) , зашифрованную алгоритмом SHA256. К счастью, среди библиотек python есть всё, чтобы решить эту проблему: я использовал библиотеки hashlib и hmac для этих целей.

Документация MEXC
Документация MEXC

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

Для двустороннего общения большинство бирж используют websocket соединение, это еще один пробел, который мне пришлось восполнить при написании бота. Ранее с websocket соединениями мне сталкиваться не приходилось. Я подключил к моему боту библиотеку websocket-client, долго мучился с реализацией, но ChatGPT подсказал как это сделать правильно — соединение заработало.

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

5 проблем, с которыми я столкнулся при написании

  • Уложить у себя в голове алгоритм бота. Вы можете придумать его сами или взять существующий, но в любом случае перед написанием бота вам нужно понять как это работает. Я был не знаком с трейдингом, поэтому мне было тяжело создавать все с нуля. Зато теперь я знаю про это больше.
  • Websocket соединение было нестабильным, несмотря на то, что я соблюдал все рекомендации и требования биржи. Соединение жило максимум несколько часов, после чего терялось. Мне пришлось потратить много времени, чтобы придумать способ правильно его перезапускать.
  • Для того, чтобы websocket соединение корректно работало, необходимо было освоить многопоточность. В примерах кода API Mexc ежеминутная отправка сообщения PING для поддержания соединения реализована через модуль threading в python
  • Это породило следующую проблему. Нужно было контролировать количество потоков, чтобы они не задваивались при восстановлении соединения. На этом этапе я понял, что многопоточность в python реализована так себе. И неплохо бы начать изучать асинхронность. Я даже шагнул в ту сторону, но чуть не упал, поэтому отложил это дело, до возможного масштабирования.
  • Была большая проблема с остановкой бота по желанию пользователя. Потоки в python просто так не остановить и надо придумывать костыли, чтобы это сделать. Я реализовал это через статусы в базе данных, которую я подключил к боту. Вот, кстати, еще одно новое знание: я начал использовать sqlalchemy, хотя до этого не был знаком с этой библиотекой.

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

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

Мне интересно какое количество пользователей может выдержать этот бот, можно сказать, что это мой первый продукт, который я сделал сам и им может пользоваться любой желающий. Стадию “рассказать друзьям” я уже прошел, поэтому хочу пригласить вас к открытому бета тестированию.

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

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

Ссылка на бот: https://t.me/algatrade_bot

FAQ бота: https://algatrade.pro/

44
9 комментариев

Долго разрабатывали бота?

Со старта до более менее живого экземпляра месяц, до нынешнего релиза месяца три.

1

Великолепно! То есть бот получает доступ к моему кошельку?

Нет, на бирже мекс есть ограничение доступа, вы предоставляете боту право от вашего имени выставлять ордера и проверять баланс. Это настраивается вами при получении API key и Secret Key на бирже.

1% в день? 365% годовых? Где-то, в какой-то сказке я такое уже слышал...
"В Стране Дураков есть волшебное поле, — называется «Поле Чудес»… На этом поле выкопай ямку, скажи три раза: «Крекс, фекс, пекс», положи в ямку золотой, засыпь землёй, сверху посыпь солью, полей хорошенько и иди спать. Наутро из ямки вырастет небольшое деревце, на нём вместо листьев будут висеть золотые монеты."

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

Комментарий недоступен