Сайт находится в процессе разработки
Войти
Главная / Data science в трейдинге / Как автоматизировать торговлю и анализ графиков с телеграм-ботом Trade2Good

Как автоматизировать торговлю и анализ графиков с телеграм-ботом Trade2Good

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

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

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

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

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

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

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

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

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

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

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

Бот анализирует графики OHLC автоматически

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

Восходящий тренд на графике. Бот 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.

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.

 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.

 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.

 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.

  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 в боте:

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 (серые прямоугольники слева)

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

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

Индикатор 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.

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

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

  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 упрощает торговлю для трейдеров 

Уже сейчас с помощью бота Trade2Good можно:  

  • определять тренды и точки разворота цены; 
  • находить уровни поддержки и сопротивления; 
  • применять индикаторы, находить другие сигналы и паттерны. 

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

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

Уровни поддержки и сопротивления: полная стратегия тестирования
Хотя многие трейдеры недооценивают торговлю по уровням, это один из самых эффективных инструментов. В этом материале расскажем, как правильно тестировать...
Читать далее
Как протестировать торговую стратегию: полный гайд
Торговать на очень нестабильном рынке без стратегии — не лучшая идея как для новичка, так и для опытного трейдера. Рассказываем,...
Читать далее
Теория рыночного аукциона: самое важное, что нужно знать трейдеру
Сегодня биржи меняются и развиваются с огромной скоростью и современные трейдеры могут торговать из любой точки мира. Но в прошлом...
Читать далее