Войти
Главная / Data science в трейдинге / 🤖 ИИ бот для трейдинга Trade2Good: автоматизация торговли на бирже

🤖 ИИ бот для трейдинга Trade2Good: автоматизация торговли на бирже

Биржевые торговые роботы помогают отказаться от ручного анализа и сэкономить время, а автоматизированная торговля на бирже упрощает принятие решений для трейдера. Рассказываем, как торговый ИИ-бот Trade2Good анализирует графики, определяет паттерны, ищет тренды и уровни.

Как через торгового бота ИИ автоматически анализировать графики OHLC

График OHLC — это диаграмма изменения цены актива за период времени. 

Диаграмма показывает 4 параметра: 

  • O — open (цена открытия бара); 
  • H — high (максимальная цена бара) 
  • L — low (минимальная цена бара)
  • C — close (цена закрытия бара)
График OHLC
График OHLC

Графики OHLC помогают трейдерам понять, как развивается цена в течение дня и какие основные характеристики движения цен были в этот день: 

  • начальная (open); 
  • максимальная (high); 
  • минимальная (low); 
  • заключительная (close) цена

Обычно трейдеры анализируют графики OHLC вручную, чтобы: 

Выявлять тренды. Например, если цена закрытия выше цены открытия и тело свечи зелёное — цена росла в течение времени и актив находится в восходящем тренде. 

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

Выбирать время для покупки/продажи.  Например, если актив находится в восходящем тренде, это хороший момент для его покупки.

Торговый робот бот анализирует графики OHLC

Определяет восходящий тренд. Бот находит, когда максимумы, минимумы и цены закрытия находятся выше цен открытия. 

Восходящий тренд на графике. Бот Trade2Good. 
Восходящий тренд на графике. Бот Trade2Good. 

 if (data[‘high’][l_idx] > data[‘high’][l_idx — 1]) and \

            (data[‘low’][l_idx] > data[‘low’][l_idx — 1]) and \

            (data[‘close’][l_idx] > data[‘close’][l_idx — 1]):

        return ‘Upward Trend’

Определяет нисходящий тренд. Бот находит, когда максимумы, минимумы и цены закрытия находятся ниже цен открытия.

Нисходящий тренд на графике. Бот Trade2Good.
Нисходящий тренд на графике. Бот Trade2Good.

elif (data[‘high’][l_idx] < data[‘high’][l_idx — 1]) and \

            (data[‘low’][l_idx] < data[‘low’][l_idx — 1]) and \

            (data[‘close’][l_idx] < data[‘close’][l_idx — 1]):

        return ‘Downward Trend’

Определяет флэт. Флэт — состояние рынка, при котором цена движется в определенном диапазоне без четкого направления. Бот Trade2Good автоматически определяет флэт. 

Флэт на графике. Бот Trade2Good.
Флэт на графике. Бот Trade2Good.

 elif (data[‘high’][l_idx] < data[‘high’][l_idx — 1]) and \

            (data[‘low’][l_idx] > data[‘low’][l_idx — 1]):

        return ‘Flat Trend’

    else:

        return ‘Error’

Trade2Good — ваш умный помощник в трейдинге

Бот Trade2Good создан, чтобы сделать вашу торговлю проще и эффективнее.

Что делает Trade2Good:
📊 Анализирует рынок. В реальном времени бот обрабатывает данные, чтобы находить лучшие точки входа и выхода из сделок.
⚡ Экономит время. Вам не нужно следить за графиками круглосуточно — бот работает за вас, отслеживая движение рынка.
🛠️ Подстраивается под ваши цели. Вы задаете параметры торговли, а бот действует в рамках выбранной стратегии.
🛡️ Контролирует риски. Все сделки проходят с учетом установленных вами лимитов и правил.

📈 Сейчас Trade2Good доступен в тестовом режиме, и вы можете использовать его бесплатно.

Бот определяет уровни сопротивления и поддержки

Уровни сопротивления и поддержки помогают прогнозировать движение цен. На этих уровнях цена останавливается и начинает движение в противоположную сторону: 

  • на уровне поддержки цена прекращает снижаться и начинает расти; 
  • на уровне сопротивления цена прекращает расти и начинает падать.  

С помощью бота Trade2Good можно находить уровни, чтобы: 

  • легче прогнозировать цены. С помощью уровней можно определить, где цена может остановиться или развернуться. 
  • лучше планировать сделки. Уровни можно использовать, чтобы находиться точки входа ,ставить стоп-лоссы и вовремя выходить из сделки . 
  • лучше понимать рынок. Информация об уровнях помогает глубже понимать изменения рынка, видеть тренды и видеть причины действий других участников. 
Уровни поддержки. Бот Trade2Good.
Уровни поддержки. Бот Trade2Good.
Уровни сопротивления. Бот Trade2Good.
Уровни сопротивления. Бот Trade2Good.

 levels = {}

    lowest_value = min(data.low)

    highest_value = max(data.high)

    values = [val for i in range(len(data) — n_weeks, len(data)) for val in (data.high[i], data.low[i])]

    intervals = [(i, i + delta) for i in np.arange(lowest_value, highest_value, delta)]

    for low, high in intervals:

        count = sum(1 for v in values if low <= v < high)

        if count > 1:

            print(list(v for v in values if low <= v < high))

            levels[(low+high)/2] = count

    return levels

Бот ищет точки разворота 

Бот находит графические фигуры, которые говорят о высокой вероятности разворота цены. 

Определяет разворот тренда — с нисходящего в восходящий

Разворот из нисходящего тренда в восходящий. Бот Trade2Good.
Разворот из нисходящего тренда в восходящий. Бот Trade2Good.

 if (data.close[i] > data.close[i — 1]) and \

                (data.close[i — 1] < data.close[i — 2]) and \

                (data.high[i] > data.high[i — 1]) and \

                (data.high[i — 1] < data.high[i — 2]) and \

                (data.low[i] > data.low[i — 1]) and \

                (data.low[i — 1] < data.low[i — 2]):

            if i == (len(data) — 1):

                flag = True

            data[‘local_bottom’].iloc[i — 1] = data.low[i — 1]

Определяет разворот тренда — с восходящего в нисходящий

 if (data.close[i] < data.close[i — 1]) and \

                (data.close[i — 1] > data.close[i — 2]) and \

                (data.high[i] < data.high[i — 1]) and \

                (data.high[i — 1] > data.high[i — 2]) and \

                (data.low[i] < data.low[i — 1]) and \

                (data.low[i — 1] > data.low[i — 2]):

            if i == (len(data) — 1):

                flag = True

            data[‘local_top’].iloc[i — 1] = data.high[i — 1]

Робот трейдер применяет индикаторы 

Индикатор Фракталы

Фракталы — индикатор, который помогает определить направление развития цены. Выглядит он как набор из 5 свечей, где цена средней свечи выше (или ниже) двух свечей по обе стороны от нее. Центр фрактала — локальный минимум или максимум в зависимости от его направления. На графике индикатор выглядит как стрелки вверх и вниз. 

Находить фракталы вручную трудоемко — проще воспользоваться ботом. Торговый робот для биржи автоматически определяет фракталы на графике и помогает увидеть потенциальные точки разворота рынка.

Фракталы — красные и зеленые стрелки. Бот Trade2Good.
Фракталы — красные и зеленые стрелки. Бот Trade2Good.

  upper_fractal = (data[‘high’].shift(2) < data[‘high’].shift(1)) & \

                            (data[‘high’].shift(1) < data[‘high’]) & \

                            (data[‘high’] > data[‘high’].shift(-1)) & \

                            (data[‘high’].shift(-1) > data[‘high’].shift(-2))

    lower_fractal = (data[‘low’].shift(2) > data[‘low’].shift(1)) & \

                            (data[‘low’].shift(1) > data[‘low’]) & \

                            (data[‘low’] < data[‘low’].shift(-1)) & \

                            (data[‘low’].shift(-1) < data[‘low’].shift(-2))

    return upper_fractal, lower_fractal

Индикатор ZigZag

Индикатор ZigZag определяет на графике самые важные ценовые минимумы и максимумы — их он соединяет прямыми линиями и игнорирует мелкие колебания цены. На графике ZigZag выглядит как ломаная линия, наложенная поверх цены. 

Индикатор также встроен в бота Trade2Good — c его помощью можно определять ключевые движения цены, принимать обоснованные решения об открытии и закрытии позиции.

Индикатор ZigZag — ломаная синяя линия Бот Trade2Good.
Индикатор ZigZag — ломаная синяя линия Бот Trade2Good.

Часть кода для индикатора ZigZag в боте:

def pivots(src_raw, length, isHigh):

        src = list(reversed(src_raw))

        bar_index = list(range(len(src)))

        for start in range(0, len(src)):

            if start + 2 * length + 1 > len(src) — 1:

                return

            p = 0

            if length < len(src) — start:

                p = src[start + length]

            if length == 0:

                yield 0, p

            else:

                isFound = True

                for i in range(start, start + length):

                    if isHigh and src[i] > p:

                        isFound = False

                    if not isHigh and src[i] < p:

                        isFound = False

                for i in range(start + length + 1, start + 2 * length + 1):

                    if isHigh and src[i] >= p:

                        isFound = False

                    c = not isHigh and src[i] <= p

                    if c:

                        isFound = False

Индикаторы Market Profile и External Timeframe

Индикатор Market Profile помогает определять, на каких уровнях цены проходило большинство торговых операций и насколько сбалансирован рынок. Если цена движется вне области, где проходило большинство сделок, это может указывать на начало нового тренда. Индикатор выглядит как серые прямоугольники слева от графика. Чем больше высота у прямоугольника, тем больше в этот период происходило сделок.

Индикатор Market Profile (серые прямоугольники слева)
Индикатор Market Profile (серые прямоугольники слева)

Индикатор External Timeframe дает возможность смотреть на рынок с разных перспектив, определять более крупные тренды или уровни поддержки/сопротивления, которые могут быть не так заметны на меньших таймфреймах.

На графике External Timeframe выглядит как 4-хчасовые интервалы в виде свечей, объединенные в большие дневные интервалы цветными прямоугольниками. Цвет прямоугольника аналогичен цвету свечи. Например, на графике ниже видно общий восходящий дневной паттерн с 12 по 16 сентября.

Индикатор External Timeframe (крупные цветные прямоугольники)
Индикатор External Timeframe (крупные цветные прямоугольники)

charts.chart_mpet(df, symbol, interval, period)

chart = open(‘images/chart_’ +

                                 chart_name + ‘_’ +

                                 symbol + ‘_’ +

                                 str(interval) + ‘_’ +

                                 str(period) + ‘.png’, ‘rb’)

Бот трейдер выявляет паттерн пустоты

Паттерн пустоты («void fill pattern») говорит о том, что на рынке есть сильное давление на покупку или продажу, из-за чего цена быстро двигается через разные уровни. 

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

Зона пустоты на графике — прямоугольник бежевого цвета. Бот Trade2Good.
Зона пустоты на графике — прямоугольник бежевого цвета. Бот Trade2Good.

Определяет восходящий паттерн пустоты 

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

  if (data.high[l_idx] > data.high[l_idx — 1] > data.high[l_idx — 2]) and \

            (data.low[l_idx] > data.low[l_idx — 1] > data.low[l_idx — 2]) and \

            (data.low[l_idx] > data.high[l_idx — 2]):

        return True, data.low[l_idx], data.high[l_idx — 2]

Определяет нисходящий паттерн пустоты 

Паттерн определяется, если даже максимальная цена текущего периода ниже минимальной цены два периода назад. Это говорит о сильном нисходящем движении.

  elif (data.high[l_idx] < data.high[l_idx — 1] < data.high[l_idx — 2]) and \

            (data.low[l_idx] < data.low[l_idx — 1] < data.low[l_idx — 2]) and \

            (data.high[l_idx] < data.low[l_idx — 2]):

        return True, data.high[l_idx], data.low[l_idx — 2]

Коротко: как робот для трейдинга упрощает торговлю

Вот для чего можно использовать торговых роботов — и бота Trade2Good в частности:

Поиск и определение: трендов и точек разворота цены, уровней поддержки и сопротивления, индикаторов, поиска сигналов и паттернов.

Ускоренный анализ рынка. Обычно трейдеры анализируют графики вручную — робот торгов на бирже дает возможность автоматизировать анализ. С ним вы можете быстро интерпретировать большие объемы данных с бирж. С ним вы можете автоматизировать принятие решений о сделках, глубже понимать рыночную админку и принимать обоснованные решения на основе конкретных данных о рынке. 

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

🔖 Что такое рыночный, лимитный и стоп-ордера
Рыночный или лимитный ордер – какой выбрать? Что такое стоп ордер на бирже? Какие еще бывают ордера? Рассказываем в статье....
Читать далее
💵 Какие финансовые инструменты нужны трейдеру
Успешная торговля требует не только глубокого понимания рынка и ясной стратегии, но и умения пользоваться инструментами, которые помогают принимать обоснованные...
Читать далее
Как построить среднюю скользящую Moving Average на Python
Средняя скользящая (Moving Average, MA) — это один из самых популярных индикаторов технического анализа, используемый трейдерами для определения трендов на...
Читать далее