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

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка бота на базе MACD
Простая
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1062
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка бота на базе 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'   # bullish crossover
        elif prev_cross > 0 and curr_cross < 0:
            return 'SELL'  # bearish crossover
        
        # Дополнительный фильтр: 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) — очень агрессивный, только с дополнительными фильтрами

Дивергенция — более сильный сигнал чем просто crossover: цена делает новый лоу, MACD — нет. Это признак ослабления нисходящего тренда.

Бот на базе MACD с базовой логикой управления рисками разрабатывается за 1–2 недели.