Паттерны не работают

Паттерны не работают

Алготрейдинг.рф - https://xn--80agadetfnxfwx.xn--p1ai/

Всем привет! Продолжаю настраивать для себя lightweight-charts, по сути сильно урезанный Tradingview получается, но с одним важным плюсом - на него можно вытащить любой свой анализ.
Руки дошли до первого знакомства с библиотекой Ta-lib https://ta-lib.github.io/ta-lib-python/. Что однозначно - работает молниеносно. Любую аналитику не надо даже пытаться сохранить для дальнейших операций, т.к. рассчитывается она после запуска скрипта за доли секунды.

Короче пост этот посвящен паттернам, типа тех, что из фундаментального труда Швагера "Тех.анализ".

В Ta-lib есть Pattern Recognition Functions https://ta-lib.github.io/ta-lib-python/func_groups/pattern_recognition.html , - это функции, которые распознают различные ценовые паттерны на графике исторических данных и вроде бы могли использоваться для принятия торговых решений.

В общем каждая функция возвращает число:

  • Положительное значение (100) указывает на бычий (восходящий) паттерн.
  • Отрицательное значение (-100) указывает на медвежий (нисходящий) паттерн.
  • Ноль означает, что паттерн не был найден.

Всего можно отыскать аж 61 паттерн, список в конце статьи.

Проводим эксперимент на Сбере. Исторические данные (106 тыс баров 10 минуток) отправляем в датафрейм и понеслась..

Создаем 61 колонку с наименованиями всех паттернов, если найден паттерн - пишет 100 или -100, если нет - 0.
Затем добавляем 2 колонки с подсчетом количества паттернов на каждом баре, говорящих о предстоящем росте или наоборот снижении. Максимум на одной свече до 10 паттернов нашлось несколько раз и один раз - 12шт! А так их море, пол графика усеяно. Сколько я не смотрел - эффект стремится к нулю. Но после той свечи, на которой 12 паттернов показало рост - реальный рост пошел, а после другой, с 10 паттернами о сигнале вверх, график наоборот завалился.

Мое мнение - кофейная гуща эти паттерны.

код:

length_time_chart = 20000  # количество баров для графика

secid = "SBER"

period = 10

listcolumns = ["time", "open", "high", "low", "close", "volume"]

filestocks_path = os.path.join(folder, f"{secid}-{period}.parquet")

df = pd.read_parquet(path=filestocks_path, columns=listcolumns)

# Список всех функций распознавания паттернов

patterns = [

    "CDL2CROWS",

    "CDL3BLACKCROWS",

    "CDL3INSIDE",

    "CDL3LINESTRIKE",

    "CDL3OUTSIDE",

    "CDL3STARSINSOUTH",

    "CDL3WHITESOLDIERS",

    "CDLABANDONEDBABY",

    "CDLADVANCEBLOCK",

    "CDLBELTHOLD",

    "CDLBREAKAWAY",

    "CDLCLOSINGMARUBOZU",

    "CDLCONCEALBABYSWALL",

    "CDLCOUNTERATTACK",

    "CDLDARKCLOUDCOVER",

    "CDLDOJI",

    "CDLDOJISTAR",

    "CDLDRAGONFLYDOJI",

    "CDLENGULFING",

    "CDLEVENINGDOJISTAR",

    "CDLEVENINGSTAR",

    "CDLGAPSIDESIDEWHITE",

    "CDLGRAVESTONEDOJI",

    "CDLHAMMER",

    "CDLHANGINGMAN",

    "CDLHARAMI",

    "CDLHARAMICROSS",

    "CDLHIGHWAVE",

    "CDLHIKKAKE",

    "CDLHIKKAKEMOD",

    "CDLHOMINGPIGEON",

    "CDLIDENTICAL3CROWS",

    "CDLINNECK",

    "CDLINVERTEDHAMMER",

    "CDLKICKING",

    "CDLKICKINGBYLENGTH",

    "CDLLADDERBOTTOM",

    "CDLLONGLEGGEDDOJI",

    "CDLLONGLINE",

    "CDLMARUBOZU",

    "CDLMATCHINGLOW",

    "CDLMATHOLD",

    "CDLMORNINGDOJISTAR",

    "CDLMORNINGSTAR",

    "CDLONNECK",

    "CDLPIERCING",

    "CDLRICKSHAWMAN",

    "CDLRISEFALL3METHODS",

    "CDLSEPARATINGLINES",

    "CDLSHOOTINGSTAR",

    "CDLSHORTLINE",

    "CDLSPINNINGTOP",

    "CDLSTALLEDPATTERN",

    "CDLSTICKSANDWICH",

    "CDLTAKURI",

    "CDLTASUKIGAP",

    "CDLTHRUSTING",

    "CDLTRISTAR",

    "CDLUNIQUE3RIVER",

    "CDLUPSIDEGAP2CROWS",

    "CDLXSIDEGAP3METHODS",

]

# Для каждой функции добавляем результат в соответствующую колонку

for pattern in patterns:

    pattern_function = getattr(ta, pattern)  # Получаем функцию по имени

    df[pattern] = pattern_function(df["open"], df["high"], df["low"], df["close"])

# Добавляем колонки для подсчета значений "up" и "down"

df["up"] = (df[patterns] == 100).sum(axis=1)  # Количество "100" в строке

df["down"] = (df[patterns] == -100).sum(axis=1)  # Количество "-100" в строке

print(timeit.default_timer() - timer)

df.to_parquet("output.parquet", index=True)

Список паттернов:
CDL2CROWS
— Паттерн "Две вороны". Медвежий разворотный паттерн из двух свечей.

CDL3BLACKCROWS — Паттерн "Три черные вороны". Медвежий разворотный паттерн из трех длинных свечей.

CDL3INSIDE — Паттерн "Три внутри". Паттерн продолжения или разворота тренда.

CDL3LINESTRIKE — Паттерн "Три линии удара". Возможный разворот после тренда.

CDL3OUTSIDE — Паттерн "Три снаружи". Бычий или медвежий разворотный паттерн.

CDL3STARSINSOUTH — Паттерн "Три звезды на юге". Бычий разворот.

CDL3WHITESOLDIERS — Паттерн "Три белых солдата". Бычий разворот из трех длинных свечей.

CDLABANDONEDBABY — Паттерн "Брошенный младенец". Сильный бычий или медвежий разворот.

CDLADVANCEBLOCK — Паттерн "Блокировка продвижения". Медвежий разворот.

CDLBELTHOLD — Паттерн "Удержание пояса". Бычий или медвежий разворотный паттерн.

CDLBREAKAWAY — Паттерн "Прорыв". Бычий или медвежий разворот.

CDLCLOSINGMARUBOZU — Паттерн "Закрывающий марубозу". Бычий или медвежий продолжение тренда.

CDLCONCEALBABYSWALL — Паттерн "Скрытие поглощенного младенца". Медвежий разворот.

CDLCOUNTERATTACK — Паттерн "Контратакующий". Разворотный паттерн.

CDLDARKCLOUDCOVER — Паттерн "Темное облако". Медвежий разворот.

CDLDOJI — Паттерн "Доджи". Свеча неопределенности (равенство цен открытия и закрытия).

CDLDOJISTAR — Паттерн "Звезда доджи". Разворотный паттерн.

CDLDRAGONFLYDOJI — Паттерн "Стрекоза доджи". Бычий разворотный сигнал.

CDLENGULFING — Паттерн "Поглощение". Бычий или медвежий разворот.

CDLEVENINGDOJISTAR — Паттерн "Вечерняя звезда доджи". Медвежий разворот.

CDLEVENINGSTAR — Паттерн "Вечерняя звезда". Медвежий разворот.

CDLGAPSIDESIDEWHITE — Паттерн "Белые свечи по бокам". Продолжение тренда.

CDLGRAVESTONEDOJI — Паттерн "Могильный камень доджи". Медвежий разворот.

CDLHAMMER — Паттерн "Молот". Бычий разворот.

CDLHANGINGMAN — Паттерн "Висячий человек". Медвежий разворот.

CDLHARAMI — Паттерн "Харами". Бычий или медвежий разворот.

CDLHARAMICROSS — Паттерн "Харами с крестом". Бычий или медвежий разворот.

CDLHIGHWAVE — Паттерн "Высокая волна". Свечи неопределенности.

CDLHIKKAKE — Паттерн "Хиккаке". Ложный пробой, возможный разворот.

CDLHIKKAKEMOD — Модифицированный паттерн "Хиккаке". Аналог предыдущего.

CDLHOMINGPIGEON — Паттерн "Голубь". Бычий разворот.

CDLIDENTICAL3CROWS — Паттерн "Идентичные три вороны". Сильный медвежий разворот.

CDLINNECK — Паттерн "В шее". Медвежий продолжение.

CDLINVERTEDHAMMER — Паттерн "Перевернутый молот". Бычий разворот.

CDLKICKING — Паттерн "Пинок". Сильный бычий или медвежий разворот.

CDLKICKINGBYLENGTH — Паттерн "Пинок по длине". Сильный разворот по длине свечей.

CDLLADDERBOTTOM — Паттерн "Дно лестницы". Бычий разворот.

CDLLONGLEGGEDDOJI — Паттерн "Длинноногий доджи". Неопределенность, возможный разворот.

CDLLONGLINE — Паттерн "Длинная свеча". Бычий или медвежий сильный сигнал.

CDLMARUBOZU — Паттерн "Марубозу". Свеча с полным телом, бычий или медвежий тренд.

CDLMATCHINGLOW — Паттерн "Совпадение низов". Бычий разворот.

CDLMATHOLD — Паттерн "Мат-холд". Продолжение тренда.

CDLMORNINGDOJISTAR — Паттерн "Утренняя звезда доджи". Бычий разворот.

CDLMORNINGSTAR — Паттерн "Утренняя звезда". Бычий разворот.

CDLONNECK — Паттерн "На шее". Медвежий продолжение.

CDLPIERCING — Паттерн "Пронзающая линия". Бычий разворот.

CDLRICKSHAWMAN — Паттерн "Рикша". Неопределенность, возможный разворот.

CDLRISEFALL3METHODS — Паттерн "Метод трех повышений/понижений". Продолжение тренда.

CDLSEPARATINGLINES — Паттерн "Разделяющие линии". Продолжение тренда.

CDLSHOOTINGSTAR — Паттерн "Падающая звезда". Медвежий разворот.

CDLSHORTLINE — Паттерн "Короткая линия". Слабый бычий или медвежий сигнал.

CDLSPINNINGTOP — Паттерн "Волчок". Свеча неопределенности.

CDLSTALLEDPATTERN — Паттерн "Застопорившийся". Медвежий разворот.

CDLSTICKSANDWICH — Паттерн "Сэндвич из свечей". Бычий разворот.

CDLTAKURI — Паттерн "Такури". Бычий разворот.

CDLTASUKIGAP — Паттерн "Разрыв Тасуки". Продолжение тренда.

CDLTHRUSTING — Паттерн "Проникающая свеча". Медвежий продолжение.

CDLTRISTAR — Паттерн "Три звезды". Разворот тренда.

CDLUNIQUE3RIVER — Паттерн "Уникальная река". Бычий разворот.

CDLUPSIDEGAP2CROWS — Паттерн "Разрыв вверх с двумя воронами". Медвежий разворот.

CDLXSIDEGAP3METHODS — Паттерн "Три метода с разрывом". Продолжение тренда.



Report Page