Використання Python-бібліотек для розробки торгової стратегії крипто бота

4 Червня 2024

наступна стаття
Віталій Бабаєвський

Backend Developer

Віталій  Бабаєвський
Використання Python-бібліотек для розробки торгової стратегії крипто бота

Про автора: Віталій Бабаєвський, бекенд Python-розробник. Один з наймолодших членів нашої команди, який, однак, вирізняється креативним підходом до завдань та нестандартним мисленням. Це дає змогу брати участь у складних проектах та ефективно вирішувати будь-які проблеми наших клієнтів.


Передмова

Торгові стратегії для крипто ботів — принципова справа кожного трейдера. Кожен вкладає у розробку власні знання та навички, використовує «хитрощі» та вчить машину купувати й продавати так, як би робив це сам. Однак, на відміну від людини, бот працює у тисячі разів швидше та оперує великими масивами даних, що дає небувалий буст.

Одним зі завдань для нашої команди розробників була розробка крипто боту з цікавою торговою стратегією, що базується на аналізі історичних даних про обставини ринку і транзакції у цей час. Жоден аналітик не може одночасно брати до уваги мільйони цифр та значень, але це під силу автоматизованій системі. Тож мені доручили втілити в життя торгову стратегію клієнта. А для цього якнайкраще підходить бібліотека Backtrader.

Практичне використання

Перш, ніж використовувати торгові системи на реальному ринку, потрібно переконатися, що вони налаштовані правильно. Мова Python чудово підходить для подібних завдань, оскільки це досить потужна мова програмування для роботи з великими масивами даних. Backtrader — це Python бібліотека з відкритим кодом, що дозволяє тестувати торгові системи на методичному аналізі історичних даних.

Хоча існує безліч інших бібліотек, особисто я надаю перевагу саме Backtrader. І зараз я хочу навести приклади деяких основних можливостей цієї бібліотеки:

  • Тестування на історичних даних;

  • Оптимізація, що дозволяє знаходити найкращі параметри для ваших стратегій;

  • Побудова графіків, які можна налаштовувати відповідно до ваших потреб;

  • Розширюваність, що дозволяє розробляти власні індикатори, аналізатори, спостерігачі та інші функції;

  • Відкритий вихідний код, що дає всі переваги використання безкоштовного та відкритого рішення;

  • Можливість торгівлі в реальному часі, підключаючи backtrader до деяких брокерів для автоматичної торгівлі за вашими стратегіями;

  • Велика спільнота, яка завжди готова допомогти у разі виникнення проблем з цією бібліотекою.

За допомогою Backtrader можна аналізувати історичні дані для відтворення торгових угод, використовуючи сигнали, що генеруються торговою системою. Для поліпшення продуктивності обчислень Backtrader має можливість використовувати паралельні обчислення, які використовують кілька ядер процесора. Крім того, він забезпечує інтеграцію з matplotlib для візуалізації даних у вигляді привабливих графіків.

Початок роботи

Перш, ніж ми перейдемо до створення та тестування торгової стратегії, нам потрібно встановити необхідні бібліотеки та імпортувати їх у наш проект:

  • pip install backtrader;

  • pip install yfinance.

Після успішного встановлення бібліотек ми можемо переходити до створення торгової стратегії. Для нашого прикладу ми використаємо просту стратегію перетину середніх з індикаторами SMA (проста рухома середня).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from datetime import datetime
import backtrader as bt


class SmaCross(bt.Strategy):
    params = dict(
        pfast=10,
        pslow=30
    )

    def init(self):
        sma1 = bt.ind.SMA(period=self.p.pfast)
        sma2 = bt.ind.SMA(period=self.p.pslow)
        self.crossover = bt.ind.CrossOver(sma1, sma2)

    def next(self):
        if not self.position:
            if self.crossover > 0:
                self.buy()

        elif self.crossover < 0:
            self.close()


cerebro = bt.Cerebro()

data = bt.feeds.YahooFinanceData(dataname='BTC-USD',
                                 fromdate=datetime(2020, 1, 1),
                                 todate=datetime(2024, 1, 1))

cerebro.adddata(data)

cerebro.addstrategy(SmaCross)
cerebro.run()
cerebro.plot()

У цьому коді ми спочатку імпортуємо необхідні бібліотеки. Потім ми визначаємо клас SmaCross, який успадковує від bt.Strategy, що дозволяє нам реалізувати нашу торгову стратегію. Ми використовуємо дві прості рухомі середні і встановлюємо умови для входу та виходу з позиції на ринку.

Після цього ми створюємо екземпляр Cerebro, який є "мозком" нашої торгової системи Backtrader. Ми завантажуємо історичні дані за допомогою yfinance, вказуючи символ, дати початку та кінця. Дані додаються до Cerebro, після чого ми додаємо нашу стратегію і запускаємо її з cerebro.run(). Нарешті, ми візуалізуємо результати за допомогою cerebro.plot().

graph.png

Висновки

Як бачите, не так багато зусиль необхідно для початку використання бібліотеки Backtrader безпосередньо у проекті. Однак встановлення та візуалізація — це лише початок роботи. Надалі необхідно зробити ще багато операцій, щоб крипто бот міг грамотно використовувати отримані історичні дані та робити правильні висновки для власних транзакцій. Але це вже інші питання до розробників Авіві. Тож якщо у вас є власна торгова стратегія, ми завжди готові втілити її у кас томному рішення. Не гайте час, звертайтеся до нас за консультацією.


Схожі статті
Записатись на консультацію

Ми зв'яжемось з Вами протягом 10 хвилин