Розробка бота на базі MACD

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка бота на базі MACD
Простий
~3-5 днів
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1121
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    856

Розробка бота на базі MACD

MACD (Moving Average Convergence Divergence) — один з найпопулярніших трендових індикаторів. Показує співвідношення двох експоненціальних скользящих середніх та дозволяє ідентифікувати momentum та розвороти тренду.

Як працює MACD

MACD складається з трьох ліній:

  • MACD лінія: EMA(12) - EMA(26) швидкої та повільної
  • Signal лінія: EMA(9) від MACD лінії
  • Histogram: MACD - Signal (візуалізує розходження)

Стандартні параметри: (12, 26, 9).

Реалізація бота

import pandas_ta as ta
import ccxt

class MACDBot:
    def __init__(self, symbol: str, fast=12, slow=26, signal=9):
        self.exchange = ccxt.bybit({'apiKey': API_KEY, 'secret': SECRET})
        self.symbol = symbol
        self.fast = fast
        self.slow = slow
        self.signal = signal
    
    async def get_signal(self) -> str:
        ohlcv = await self.exchange.fetch_ohlcv(self.symbol, '4h', limit=200)
        df = pd.DataFrame(ohlcv, columns=['ts','open','high','low','close','vol'])
        
        # Обчислюємо MACD
        macd_df = ta.macd(df['close'], fast=self.fast, slow=self.slow, signal=self.signal)
        
        macd = macd_df[f'MACD_{self.fast}_{self.slow}_{self.signal}']
        signal = macd_df[f'MACDs_{self.fast}_{self.slow}_{self.signal}']
        hist = macd_df[f'MACDh_{self.fast}_{self.slow}_{self.signal}']
        
        # Сигнал: пересічення MACD та Signal ліній
        prev_cross = macd.iloc[-2] - signal.iloc[-2]
        curr_cross = macd.iloc[-1] - signal.iloc[-1]
        
        if prev_cross < 0 and curr_cross > 0:
            return 'BUY'   # бичий пересічення
        elif prev_cross > 0 and curr_cross < 0:
            return 'SELL'  # ведмежий пересічення
        
        # Додатковий фільтр: histogram змінює знак
        if hist.iloc[-2] < 0 and hist.iloc[-1] > 0:
            return 'BUY'
        elif hist.iloc[-2] > 0 and hist.iloc[-1] < 0:
            return 'SELL'
        
        return 'HOLD'

Налагодження параметрів

MACD (12, 26, 9) — для денних та 4-часових таймфреймів. Для коротших таймфреймів:

  • 1h: MACD (5, 13, 4) — швидше реагує, більше хибних сигналів
  • 15m: MACD (3, 10, 16) — дуже агресивний, тільки з додатковими фільтрами

Дивергенція — більш сильний сигнал ніж просто пересічення: ціна робить новий лоу, MACD — ні. Це ознака ослаблення нисходящого тренду.

Бот на базі MACD з базовою логікою управління ризиками розробляється за 1–2 тижні.