Введение

Я начал этот проект, потому что хотел улучшить свои навыки работы с Python, в основном я работаю с C++ и использовал Python только для небольших инструментов.

Мне нравится учиться по проектам, таким образом меня мотивирует сам факт создания чего-то полезного (иногда… 😆)

В этой статье я объясню процесс, которому я следовал, чтобы стать лучше в python, разрабатывая то, что я хотел.

Вы найдете код и другие технические подробности в моем репозитории GitHub.

Не стесняйтесь пробовать и предлагать улучшения!

⚠️ Отказ от ответственности: этот проект только о программировании. Цель не в том, чтобы дать вам волшебный инструмент, который будет зарабатывать миллионы, пока вы спите.

1. Станьте лучше с Python

Сначала я начал с изучения основ Python с помощью этого курса OpenClassrooms (на французском языке).

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

2. Настройка среды разработки

Я решил работать на Kali Linux, но подойдет любой дистрибутив Linux или Windows, это одна из сильных сторон Python. В зависимости от ОС способ установки python и его зависимостей будет отличаться, но сам код может вообще не нуждаться в каких-либо изменениях.

Затем я подумал о структуре файлов и папок, которые мне нужны для этого проекта. Я начал с простого с папки src и файла main.py. Я знаю, что этого будет недостаточно для более крупного проекта, но я предпочитаю, чтобы он развивался позже, а не ограничивался структурой, которая не соответствует проекту.

Наконец, я создал проект git и репозиторий GitHub. Две важные вещи, которые я добавил на этом этапе (перед любым кодированием):

  • файл README.md, чтобы я мог писать полезные технические подробности при написании кода, такие как установка зависимостей
  • файл .gitignore, чтобы предотвратить добавление некоторых файлов в проект git. Я буду использовать файлы JSON в качестве файла конфигурации, и они будут содержать ключи API и личные данные, поэтому я не хочу, чтобы они находились в общедоступном репозитории GitHub. Хорошей практикой является никогда не включать токены аутентификации в код, даже если это частный репозиторий, чтобы вы могли безопасно делиться кодом.

3. План

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

На этот раз я использовал проект GitHub, иногда я использую Trello, чтобы создать минимальную канбан-доску. Я делаю это просто с 4 колонками и без автоматизации, потому что цель состоит в том, чтобы помочь мне быть организованным, а не тратить часы на создание красивой и автоматизированной доски. Сам код писать не будет.

Вот столбцы, которые я создал:

  • Бэклог: идеи и функции, которые могут быть включены без какого-либо приоритета или выбора.
  • Следующий выпуск (в данном случае MVP): функции, выбранные для включения в следующий выпуск.
  • Выполняется: текущая задача, цель состоит в том, чтобы выполнять одну задачу за раз.
  • Готово: выполненные задачи. Потому что одновременно приятно и полезно отслеживать прошлые задачи и связанные с ними заметки.

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

Затем я выбираю как можно меньше, чтобы создать функциональную версию того, что я себе представлял, известного MVP (минимально жизнеспособного продукта).

Теперь я наконец-то готов приступить к программированию! 🎆

4. Разработка MVP

Файлы конфигурации

Как объяснялось ранее, я решил использовать файлы конфигурации JSON, чтобы исключить конфиденциальную информацию из кода. Это также позволяет легко изменять параметры, не проходя код. Библиотека Python JSON предоставляет все необходимое для чтения пар ключ/значение из файла JSON.

Бинанс API

Следующее, что мне нужно было выяснить, это как подключиться к Binance API. Binance — это криптовалютная биржа (на самом деле самая большая), которую я использую, и я знал, что они предоставляют API для взаимодействия с платформой из кода. Прежде чем углубиться в написание кода для взаимодействия с этим API, я решил поискать, возможно, кто-то уже сделал это на Python. Не удивительно, кто-то это сделал! Библиотека python-binance помогает взаимодействовать с Binance. В программировании большую часть времени эффективнее искать подходящий существующий инструмент, чем разрабатывать все с нуля.

Торговая стратегия

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

Коммуникация

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

Полученные результаты

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

Это то, что я имел в виду, когда думал о минимальной версии помощника. Это позволяет мне экономить время на просмотре графиков и вместо этого сосредоточиться на стратегии.

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

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

Спасибо за прочтение !