Как автоматизировать торговлю и анализ графиков с телеграм-ботом Trade2Good
Ручной анализ рынка не всегда точен и отнимает много времени. Вы можете автоматизировать торговлю и принимать более эффективные решения на рынке — с ботом Trade2Good. Рассказываем, как бот помогает анализировать графики, находить тренды и уровни, определять паттерны и лучше понимать рынок.
Как через бота автоматически анализировать графики OHLC
График OHLC — это диаграмма изменения цены актива за период времени.
Диаграмма показывает 4 параметра:
- O — open (цена открытия бара);
- H — high (максимальная цена бара)
- L — low (минимальная цена бара)
- C — close (цена закрытия бара)
Графики OHLC помогают трейдерам понять, как развивается цена в течение дня и какие основные характеристики движения цен были в этот день:
- начальная (open);
- максимальная (high);
- минимальная (low);
- заключительная (close) цена
Обычно трейдеры анализируют графики OHLC вручную, чтобы:
Выявлять тренды. Например, если цена закрытия выше цены открытия и тело свечи зелёное — цена росла в течение времени и актив находится в восходящем тренде.
Находить границы торгового диапазона. Например, если верхние тени свечей находятся примерно на одном уровне, этот уровень может быть верхней границей торгового диапазона. Аналогично можно определять и нижнюю границу.
Выбирать время для покупки/продажи. Например, если актив находится в восходящем тренде, это хороший момент для его покупки.
Бот анализирует графики OHLC автоматически
Определяет восходящий тренд. Бот находит, когда максимумы, минимумы и цены закрытия находятся выше цен открытия.
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’
Определяет нисходящий тренд. Бот находит, когда максимумы, минимумы и цены закрытия находятся ниже цен открытия.
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 автоматически определяет флэт.
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 можно находить уровни, чтобы:
- легче прогнозировать цены. С помощью уровней можно определить, где цена может остановиться или развернуться.
- лучше планировать сделки. Уровни можно использовать, чтобы находиться точки входа ,ставить стоп-лоссы и вовремя выходить из сделки .
- лучше понимать рынок. Информация об уровнях помогает глубже понимать изменения рынка, видеть тренды и видеть причины действий других участников.
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
Бот ищет точки разворота
Бот находит графические фигуры, которые говорят о высокой вероятности разворота цены.
Определяет разворот с нисходящего тренда в восходящий
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 свечей, где цена средней свечи выше (или ниже) двух свечей по обе стороны от нее. Центр фрактала — локальный минимум или максимум в зависимости от его направления. На графике индикатор выглядит как стрелки вверх и вниз.
Находить фракталы вручную трудоемко — проще воспользоваться ботом. Он автоматически определит фракталы на графике и поможет увидеть потенциальные точки разворота рынка и принять более эффективное решение о действиях на рынке.
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 в боте:
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. Помогает определять, на каких уровнях цены проходило большинство торговых операций и насколько сбалансирован рынок.
Если цена движется вне области, где проходило большинство сделок, это может указывать на начало нового тренда. Индикатор выглядит как серые прямоугольники слева от графика. Чем больше высота у прямоугольника, тем больше в этот период происходило сделок.
Индикатор External Timeframe. Дает возможность смотреть на рынок с разных перспектив, определять более крупные тренды или уровни поддержки/сопротивления, которые могут быть не так заметны на меньших таймфреймах.
На графике External Timeframe выглядит как 4-часовые интервалы в виде свечей, объединенные в большие дневные интервалы цветными прямоугольниками. Цвет прямоугольника аналогичен цвету свечи. Например, на графике ниже видно общий восходящий дневной паттерн с 12 по 16 сентября.
charts.chart_mpet(df, symbol, interval, period)
chart = open(‘images/chart_’ +
chart_name + ‘_’ +
symbol + ‘_’ +
str(interval) + ‘_’ +
str(period) + ‘.png’, ‘rb’)
Бот выявляет паттерн пустоты
Паттерн пустоты («void fill pattern») говорит о том, что на рынке есть сильное давление на покупку или продажу, из-за чего цена быстро двигается через разные уровни.
«Пустота» паттерна — зона, где за короткое время не было значительной торговли между конкретными уровнями цен — минимумом/максимумом двух периодов назад или текущего периода. Паттерн пустоты помогает предположить,что рынок вернется к этим зонам-«пустотам», чтобы их заполнить.
Определяет восходящий паттерн пустоты
Паттерн определяется, если даже минимальная цена текущего периода выше максимальной цены два периода назад. Это говорит о сильном восходящем движении, когда текущий период начинается и заканчивается выше максимальной цены прошлого периода.
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 можно:
- определять тренды и точки разворота цены;
- находить уровни поддержки и сопротивления;
- применять индикаторы, находить другие сигналы и паттерны.
Бот автоматизирует и облегчает анализ рынка. Обычно трейдеры анализируют графики вручную — бот дает возможность автоматизировать анализ. С ним вы можете быстро интерпретировать большие объемы данных с бирж. С ним вы можете автоматизировать принятие решений о сделках, глубже понимать рыночную админку и принимать обоснованные решения на основе конкретных данных о рынке.
Бот экономит время. Трейдеру, который использует бот, не нужно вручную анализировать каждый сегмент данных. Это помогает принимать более быстрые и эффективные решения на рынке, а также снизить количество ошибок.