2
Подписаться
410
Подписчики

Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование?

Создано: 2025-12-25 14:35:55, Обновлено: 2026-01-09 11:16:40
comments   0
hits   189

[TOC]

Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование?

📢 Многослойная броня

Эта статьяНаучно-популярное руководство по вейвлет-преобразованию для практической торговлиДанный код представляет собой упрощенную учебную версию (в которой отсутствуют сложные шаги, такие как многоуровневое разложение, пороговое шумоподавление и реконструкция стандартных вейвлетов с помощью обратного преобразования), сохраняя только основные идеи:Используйте вейвлет-коэффициенты для выполнения многомасштабного сглаживания цен с целью извлечения информации о тренде.Подходит для разработки стратегий и быстрой проверки, но не для академических исследований или публикации научных работ.


I. Введение: Развенчание мифа о «гуру Чжиху» (эксперте)

Те, кто часто просматривает финансовые и количественные темы на Zhihu, наверняка сталкивались с подобной ситуацией:

Некоторые “эксперты” продолжают утверждать:

  • шумоподавление с помощью вейвлет-преобразования
  • период извлечения преобразования Фурье
  • Метод сглаживания Лапласа удаляет выбросы.

Он всех ошеломил, словно овладел ядерным оружием количественной торговли.

Но вы хотите, чтобы он показал вам код?
«Это… коммерческая тайна, и я не могу её разглашать».

Попросите его объяснить этот принцип.
«Это… требует применения сложной математики, вы бы не поняли, даже если бы я вам объяснил».

Сегодня мы рассмотрим темы, часто упоминаемые этими «экспертами по Чжиху», познакомим с практическим применением вейвлет-преобразования на финансовом рынке и поможем всем сформировать правильное понимание этой технологии.


II. Что именно представляет собой вейвлет-преобразование?

Простое объяснение

Представьте, что вы слушаете песню, но в записи присутствует фоновый шум:

Исходная запись = человеческий голос + фоновый шум + помехи

Вейвлет-преобразование похоже наУмные фильтры

  • Сохраните голос
  • Отфильтруйте шум
  • Также можно определить, какая часть является припевом, а какая — куплетом.

Переключитесь на финансовый рынок:

Первоначальная цена = Истинный тренд + Краткосрочные колебания + Случайный шум

Вейвлет-преобразование может вам помочь:

  • Выявление истинного тренда(Долгосрочное направление)
  • Фильтрация краткосрочных колебаний(Внутридневные колебания)
  • Выявление ключевых переломных моментов(Разворот тренда)

Основная концепция: разложение по базисным функциям.

Суть вейвлет-преобразования заключается в следующем:Разложите исходный сигнал, используя определенный набор «базисных функций» (вейвлетов).

Представьте, что вы хотите описать внешность человека:

  • Традиционный метод: описание каждого пикселя по отдельности, что очень утомительно.
  • Вейвлет-метод: использование таких факторов, как «размер глаз, высота носа и контур лица».особенностьДля объединения описаний

В финансовых ценах:

Исходная последовательность цен = Базовая функция 1 × Вес 1 + Базовая функция 2 × Вес 2 + … + Шум

Базисные функции представляют собой «шаблоны», соответствующие вейвлет-коэффициентам.Различные типы вейвлетов (Хаара, Даубеши, Мексиканская шляпа и т. д.) используют разные шаблоны, подобно использованию различных «извлекателей признаков» для разложения цен.

Фильтр: Решето в частотной области

Вейвлет-преобразование по сути является…Многомасштабный банк фильтров:

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

Почему это называется “вейвлетом”?

  • Традиционное преобразование Фурье используетБесконечно длинная синусоидаКак бесконечно длинная линейка
  • Используется вейвлет-преобразование.Волна “маленькой” конечной длиныКак набор линеек разной длины

Проблема использования синусоидальных волн для анализа финансовых цен: синусоидальные волны предполагают периодическое повторение сигнала, а финансовые рынки — нет! BTC может вырасти на 10% сегодня и упасть на 8% завтра, без какой-либо цикличности.

Преимущества вейвлетов:Анализ локализацииЭто может указывать на то, что “в период с 15:00 до 17:00 20 декабря 2025 года тенденция цен была преимущественно восходящей”, а не на общий вывод, например, “рынок в целом колебался”.

Реконструкция: от распада к реконструкции

Вейвлет-преобразование — этоОбратимыйЭто очень важно!

Первоначальная цена —> Вейвлет-разложение —> Компонент тренда + Компонент волатильности + Компонент шума Трендовая составляющая + составляющая волатильности + шумовая составляющая —> вейвлет-реконструкция —> исходная цена

Процесс рефакторингаЭто означает разложение на отдельные компоненты.Выборочно объединить обратно

  • Компонент тренда =[99800, 99850, 99900, 99950, …] # Чего мы хотим
  • Компонент флуктуаций =[[+200, -150, +180, -120, …] # Может быть полезно
  • Компонент шума =[±10, ±15, ±8, ±12, …] # Отбросить!

При реконструкции используйте только компоненты тренда.

После разложения было получено следующее.

  • Реконструированная цена = Компонент тренда + Компонент частичной волатильности

В реальных сделках мы обычноВосстановите только низкочастотную часть.(Тренд) Высокочастотные компоненты (шум) отбрасываются напрямую. Это принцип вейвлет-«шумоподавление».

Основы математики (упрощенная версия)

Давайте опустим формулы комплексных интегралов и объясним это простыми словами:

Вейвлет-преобразование = взвешенное среднее ценовых рядов с использованием набора «вейвлет-коэффициентов».

Основная формула:

Сглаживание цен[i] = Σ(первоначальная цена)[i-j] × коэффициенты вейвлета[j])/Σ(вейвлет-коэффициенты)[j])

Фильтр перспективы

Исходная цена фильтруется с помощью вейвлет-фильтра → отбираются компоненты разных частот.

Ключ в том,Выбор вейвлет-коэффициентов

  • Различные вейвлеты = различные характеристики фильтра = различные частотные характеристики
  • Разные уровни = разные временные масштабы = разные циклы тренда

Например

Если использовать вейвлеты Даубеши 4, то коэффициенты будут следующими:[0.483, 0.837, 0.224, -0.129]:

Этот набор коэффициентов определяет фильтр:

  • Положительные коэффициенты (0,483, 0,837, 0,224) → Сохраняем цену для этих позиций.
  • Отрицательный коэффициент (-0,129) → Подавляет предыдущие движения цен.
  • Взвешивание коэффициентов → определяет вклад каждой цены.

Вейвлет-преобразование завершается, когда вы «скользите» этим фильтром по всему ряду цен. Каждое скольжение включает в себя вычисления.Взвешенное среднее цен в текущем временном окнеВ качестве весов используются вейвлет-коэффициенты.

Почему оно способно «разлагать» сигналы?

Потому что математически можно доказать, что:Любой сигнал может быть представлен в виде линейной комбинации базисных вейвлет-функций.Подобно тому, как любой цвет можно получить, смешивая три основных цвета RGB, любой ряд цен можно вывести, комбинируя базисные функции вейвлетов. Различные типы вейвлетов предоставляют различные «библиотеки базисных функций», подходящие для различных типов анализа сигналов.


III. Данная попытка: Практическое применение 7 вейвлет-преобразований.

Прикладной подход: упрощение от теории к практике.

В учебниках по обработке сигналов вейвлет-преобразование обычно включает в себя сложные…Многоуровневое разложение, реконструкция и пороговое шумоподавлениеШаги:

Полный рабочий процесс вейвлет-анализа:

  1. Многомасштабное разложение → позволяет получить коэффициенты аппроксимации и коэффициенты детализации.
  2. Пороговая обработка → Мягкая/жесткая пороговая обработка коэффициентов детализации для снижения шума
  3. Реконструкция с помощью обратного преобразования → восстановление обработанных коэффициентов в сигнале.
  4. Расширение границ → Обработка эффектов границ сигнала
  5. Нормализация энергии → обеспечивает сохранение энергии до и после преобразования.

НоПрактическое применение финансовых транзакцийВ Китае нам не нужно, чтобы всё было так сложно. Потому что:

1. Для успешной торговли достаточно знать направление тренда; точная реконструкция не требуется.

В академических исследованиях погрешность реконструкции может составлять менее 0,01%, но в торговле достаточно определить, будет ли цена «расти или падать». Даже если погрешность реконструкции составляет 5%, стратегия все равно может быть прибыльной, если направление тренда правильное.

2. Требования к работе в режиме реального времени упрощают вычисления.

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

3. Особые характеристики финансовых сигналов

Финансовые цены не являются стабильными сигналами и не демонстрируют строгой цикличности. Комплексное частотное разложение здесь не имеет большого смысла; более практичным является простое выделение тренда.

Эта стратегия упрощения

Таким образом, данная статьяИзвлечение сути вейвлет-преобразованияСосредоточимся на наиболее практических аспектах финансовых рынков:

Основное упрощение 1: Используйте только приблизительные коэффициенты (тенденции низкой частоты).

Традиционное вейвлет-разложение → коэффициенты аппроксимации + коэффициенты детализации (многослойная структура) Данное приложение: сохраняет только приблизительные коэффициенты → напрямую получает сглаженный тренд.

Упрощение основы 2: Прямая свертка без порогового шумоподавления

Традиционное вейвлет-разложение → пороговая обработка коэффициентов детализации → реконструкция Данное приложение: Прямая свертка → для получения сглаженных цен

Основное упрощение 3: Игнорирование обработки границ

Для обработки традиционных вейвлетов требуются такие операции, как симметричное и периодическое расширение границ сигнала. Данное приложение ориентировано только на среднюю часть; погрешности на границах допустимы.

Метод реализации: Фильтровая свертка

def convolve(src, coeffs, step):
    """
    核心算法:用小波系数对价格序列做加权平均
    
    src: 价格序列 [100000, 101000, 99000, ...]
    coeffs: 小波系数 [0.483, 0.837, 0.224, -0.129]
    step: 采样步长(用于多层级)
    """
    sum_val = 0.0   # 加权和
    sum_w = 0.0     # 权重和
    
    for i, weight in enumerate(coeffs):
        idx = i * step
        if idx < len(src):
            sum_val += src[idx] * weight
            sum_w += weight
    
    return sum_val / sum_w  # 归一化

Эта функция…Суть вейвлет-фильтров

  • Для каждой свечи анализируются данные за N предыдущих свечей (N = количество вейвлет-коэффициентов).
  • Вычислите взвешенное среднее, используя вейвлет-коэффициенты в качестве весов.
  • Путем корректировкиstepПараметры позволяют осуществлять многоуровневое сглаживание (Уровень 1/2/3…).

Почему такое упрощение оправдано?

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

Хотя полный вейвлет-анализ является более точным методом, в финансовой торговле:

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

Сбор данных: удобство платформы FMZ

использоватьЛокальный механизм тестирования обратной связи платформы Inventor Quantization (FMZ).Получать данные очень удобно!

'''backtest
start: 2025-12-17 00:00:00
end: 2025-12-23 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","fee":[0,0]}]
'''
from fmz import *

task = VCtx(__doc__)

def main():
    exchange.SetCurrency("BTC_USDT")
    exchange.SetContractType("swap")
    
    records = exchange.GetRecords(PERIOD_H1, 500)
    return records

records = main()

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

Цель тестирования

На основе сравнения эффективности семи распространенных типов вейвлетов (Хаара, Даубеши 4, Симлета 4, Биортогонального 3.3, Мексиканской шляпы, Морле и Дискретного Мейера) при анализе цен на криптовалюты представлена ​​следующая визуальная демонстрация:

  • Различия в интенсивности сглаживания между различными вейвлетами.
  • Вариации эффекта на разных уровнях одного и того же вейвлета
  • Какие вейвлеты подходят для краткосрочной торговли, а какие — для следования за трендом?

Основное внимание уделяется не строгости математического вывода, а визуальному сравнению практических результатов.Это помогает трейдерам развить интуитивное понимание и выбрать тип вейвлета, подходящий для их стратегии.


IV. Подробное объяснение 7 типов вейвлетов

1. Вейвлет Хаара – простейшее среднее

Вейвлет Хаара — это самый простой тип вейвлета, имеющий всего два коэффициента:[0.5, 0.5]По сути, это простое среднее арифметическое двух смежных цен.

Основной код:

coeffs = [0.5, 0.5]

# 对价格序列 [100000, 101000, 99000, 102000, 98000] 处理
def smooth(prices, i):
    return (prices[i] * 0.5 + prices[i-1] * 0.5) / 1.0

# 结果:[100000, 100500, 100000, 100500, 100000]

Как видите, первоначально сильно колеблющаяся цена (от 99 000 до 102 000) после обработки Хаара становится относительно стабильной. Это эффект «шумоподавки» с помощью вейвлетов — сглаживания краткосрочных, резких колебаний, что позволяет увидеть более плавный тренд цены.

Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование?


2. Формоши 4 — широко используется в инженерных проектах.

Вейвлет Даубеши 4 (сокращенно db4) — один из наиболее часто используемых в инженерной практике. Его коэффициенты:[0.483, 0.837, 0.224, -0.129]Обратите внимание, что последний коэффициент равен…отрицательное числоИменно это делает его уникальным.

Основной код:

coeffs = [0.483, 0.837, 0.224, -0.129]

# 处理第i个价格点
def smooth(prices, i):
    weighted_sum = (prices[i]   * 0.483 +    # 当前价格
                   prices[i-1] * 0.837 +     # 前1根,权重最大!
                   prices[i-2] * 0.224 +     # 前2根
                   prices[i-3] * (-0.129))   # 前3根,负权重
    
    weight_sum = 0.483 + 0.837 + 0.224 + (-0.129)  # = 1.415
    return weighted_sum / weight_sum

# 示例:smooth([100000, 101000, 99000, 102000], 3) ≈ 100251

Основные характеристики:Вес предыдущей свечи (0,837) больше, чем вес текущей цены (0,483)! Это означает, что db4 уделяет больше внимания «только что появившейся цене», а отрицательный коэффициент веса будет оказывать «компенсирующее» воздействие на предыдущую цену, еще больше усиливая сглаживание.

Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование?


3. Симлет 4 — симметричная улучшенная версия

Symlet 4 — это улучшенная версия алгоритма Даубеши, направленная на достижение большей симметрии. Коэффициенты:[-0.076, -0.030, 0.498, 0.804, 0.298, -0.099, -0.013, 0.032]

Основной код:

coeffs = [-0.076, -0.030, 0.498, 0.804, 0.298, -0.099, -0.013, 0.032]

# 向前看8根K线
def smooth(prices, i):
    weighted_sum = sum(prices[i-j] * coeffs[j] for j in range(8))
    weight_sum = sum(coeffs)
    return weighted_sum / weight_sum

# 平滑效果比Haar和db4都强,但反应速度更慢

Основные характеристики:Длина окна в 8 свечей позволяет дольше сохранять «память» о ценах. Истинный разворот тренда может быть не виден на плавной кривой до тех пор, пока не пройдет 8 свечей.

Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование?


4. Биортогональная 3.3 - Идеальная симметрия

Биортогональный вейвлет 3.3 (сокращенно bior3.3) — это идеально симметричный вейвлет с коэффициентами:[-0.066, 0.283, 0.637, 0.283, -0.066]

Основной код:

coeffs = [-0.066, 0.283, 0.637, 0.283, -0.066]
#           ↑              中心↑              ↑
#         完全对称的两端

# 处理中间价格点
def smooth(prices, i):
    # 实际应用:只向前看,不使用未来数据
    weighted_sum = (prices[i-4] * (-0.066) +   # 前4根
                   prices[i-3] * 0.283 +       # 前3根
                   prices[i-2] * 0.637 +       # 前2根,权重最大
                   prices[i-1] * 0.283 +       # 前1根
                   prices[i]   * (-0.066))     # 当前
    
    weight_sum = sum(coeffs)  # = 1.071
    return weighted_sum / weight_sum

Основные характеристики:Симметрия гарантирует отсутствие «фазовых искажений» — сглаженная кривая не будет необъяснимо смещаться влево или вправо.

Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование?


5. Мексиканская шляпа - Охотник за переломным моментом

Коэффициенты вейвлета «мексиканская шляпа» (также называемого вейвлетом Рикера):[-0.1, 0.0, 0.4, 0.8, 0.4, 0.0, -0.1]Оно имеет форму мексиканской сомбреро.

Основной код:

coeffs = [-0.1, 0.0, 0.4, 0.8, 0.4, 0.0, -0.1]
#         负值  零  正值  最大  正值  零  负值
#         ↓                            ↓
#       "惩罚"两端,增强拐点检测能力

def smooth(prices, i):
    weighted_sum = (prices[i-6] * (-0.1) +     # 左3,负权重
                   prices[i-5] * 0.0 +         # 左2
                   prices[i-4] * 0.4 +         # 左1
                   prices[i-3]   * 0.8 +         # 中心,权重最大
                   prices[i-2] * 0.4 +         # 右1
                   prices[i-1] * 0.0 +         # 右2
                   prices[i] * (-0.1))       # 右3,负权重
    
    weight_sum = sum(coeffs)
    return weighted_sum / weight_sum

Основные характеристики:Благодаря своей структуре “большой посередине, с отрицательными значениями на обоих концах”, он особенно эффективен для обнаружения.точка перегиба- Критический момент, когда цены меняют восходящий тренд на нисходящий (или наоборот). Отрицательный весовой коэффициент “наказывает” цены на более поздних этапах, быстро отслеживая изменения тренда.

Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование?


6. Морле — Король гауссова сглаживания

Вейвлет Морле основан на гауссовском (нормальном) распределении с коэффициентами:[0.0625, 0.25, 0.375, 0.25, 0.0625]

Основной код:

coeffs = [0.0625, 0.25, 0.375, 0.25, 0.0625]
#          ↓      ↓      ↓中心   ↓      ↓
#        远端   近端   最高    近端   远端
#         完美的高斯钟形曲线

def smooth(prices, i):
    weighted_sum = (prices[i-4] * 0.0625 +     # 左2,6.25%
                   prices[i-3] * 0.25 +        # 左1,25%
                   prices[i-2]   * 0.375 +       # 中心,37.5%
                   prices[i-1] * 0.25 +        # 右1,25%
                   prices[i] * 0.0625)       # 右2,6.25%
    
    # 权重和正好 = 1.0,无需除法
    return weighted_sum

Основные характеристики:Это самый «мягкий» из всех вейвлетов, он не имеет отрицательных весов, и все цены плавно включаются в расчет. Полученная кривая чрезвычайно гладкая, но ее недостаток — медленная реакция: внезапные изменения цен могут отразиться лишь через несколько свечей.

Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование?


7. Discrete Meyer - Ultimate Smoothing

Дискретный вейвлет Мейера — это наиболее сложный вейвлет, имеющий следующие коэффициенты:[-0.015, -0.025, 0.0, 0.28, 0.52, 0.28, 0.0, -0.025, -0.015]

Основной код:

coeffs = [-0.015, -0.025, 0.0, 0.28, 0.52, 0.28, 0.0, -0.025, -0.015]
#           ↑       ↑            ↑    ↑中心↑   ↑            ↑       ↑
#                        完全对称,中心权重超过50%

def smooth(prices, i):
    # 向前看9根K线
    weighted_sum = sum(prices[i-j] * coeffs[j] for j in range(9))
    weight_sum = sum(coeffs)  # = 1.0
    return weighted_sum

# 注意:第4根之前的K线权重是0.52,超过50%!
# 实际上在告诉你"4根K线之前的中期趋势"

Основные характеристики:Он имеет наибольшее количество коэффициентов (9), самый длинный исторический период и самый сильный эффект сглаживания. Он подходит для извлечения «недельных трендов», но имеет огромную задержку — даже если цена упала на 10%, ее кривая может все еще показывать «продолжение роста».

Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование?


5. Почему наблюдаются различия в эффекте сглаживания?

После ознакомления с семью типами вейвлетов вы, вероятно, заметили закономерность:

Больше коэффициентов = подробнее = более сильное сглаживание = большая задержка

Коэффициент Хаара (2 коэффициента) → Рассматривается только 1 столбик → Практически негладкий Дубовые палочки 4 (4 штуки) → См. 3 перед → Слегка гладкие Мексиканская шляпа (7) → См. 6 перед → Умеренное сглаживание Дискретный Мейер (9) → Перед просмотром 8 полос → Сильное сглаживание

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

Хаар/Морле (без отрицательных весов) → Мягкий и плавный, нечувствительный Мексиканская шляпа (отрицательное значение с обоих концов) → Чувствительна к точкам перегиба Даубеши 4 (отрицательный) → Чувствителен к изменениям тренда

Роль симметрии = отсутствие искажений = сохранение первоначальной формы

Асимметрия (Даубеши) → Может смещаться влево/вправо Симметрия (биортогональная/Мейера) → Сохранение центрального положения


VI. Влияние уровней сглаживания

Вейвлет-преобразование можно применять рекурсивно, подобно матрешкам. Первое применение называется уровнем 1, повторное применение к результату уровня 1 называется уровнем 2 и так далее.

Временные масштабы, наблюдаемые на разных уровнях:

Предположим, мы используем часовые свечные графики для торговли BTC:

Уровень 1 → Наблюдение за кратковременными колебаниями в течение 2-4 часов Уровень 2 → Наблюдайте за трендом в течение 4-8 часов Уровень 3 → Наблюдение за среднесрочным трендом в течение 1-2 дней (распространенная стратегия) Уровень 4 → Наблюдайте за ценовым диапазоном в течение 2-4 дней. Уровень 5 → Отслеживайте основные тенденции в течение 4-8 дней

Сравнение фактических результатов:

Исходная цена BTC (график за 1 час):99500, 99800, 99200, 100200, 99800, 100500, 100100, ...

Обработка уровня 1: 99600, 99650, 99500, 99900, 99950, 100200, 100250, … (Немного сглажено, но колебания все еще заметны)

Обработка 3-го уровня: 99620, 99650, 99700, 99800, 99950, 100100, 100200, … (Сглажено, что указывает на среднесрочную тенденцию)

Обработка 5-го уровня: 99630, 99640, 99660, 99700, 99760, 99840, 99930, … (Очень плавное изображение, показывающее лишь общее направление)

Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование? Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование? Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование? Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование? Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование?

Принцип выбора прост: используйте соответствующий уровень в зависимости от срока владения активом.

Скальпинг за 15 минут → Уровень 1-2
Внутридневная торговля → Уровень 2-3
Несколько дней занимайтесь свингом → Уровень 3-4
Анализ долгосрочных трендов → Уровень 4-5


VII. Идеи практического применения

Применение вейвлет-преобразования в торговле очень простое: используйте сглаженную кривую цены, которую оно генерирует, для определения направления тренда и торгуйте, когда тренд меняется. В частности, если сглаженная цена закрытия выше предыдущей, это указывает на восходящий тренд, поэтому открывайте длинную позицию; если сглаженная цена закрытия ниже предыдущей, это указывает на нисходящий тренд, поэтому закрывайте позицию или открывайте короткую. Эта логика эффективна, потому что вейвлет-преобразование отфильтровывает краткосрочные случайные колебания, оставляя «вверх» или «вниз» как высокую вероятность подлинного изменения тренда, а не как ложный сигнал, вызванный шумом.

# 执行小波变换
transformed = transformer.transform_ohlc(df)

# 获取最近两根K线的平滑收盘价
w_close_current = transformed['w_close'].values[-1]  # 当前平滑收盘价
w_close_prev = transformed['w_close'].values[-2]     # 前一根平滑收盘价

# 判断趋势方向
signal = 0
if w_close_current > w_close_prev:
    signal = 1   # 平滑价格向上 → 做多
elif w_close_current < w_close_prev:
    signal = -1  # 平滑价格向下 → 做空

# 获取账户信息
account = exchange.GetAccount()
ticker = exchange.GetTicker()

if not account or not ticker:
    Log("[Warning] Failed to get account/ticker info")
    Sleep(5000)
    continue

current_price = ticker['Last']

Log(f"[Price] 原始: {df['Close'].values[-1]:.2f}, "
    f"平滑当前: {w_close_current:.2f}, 平滑前值: {w_close_prev:.2f}")
Log(f"[Trend] {'↑ 向上' if signal == 1 else '↓ 向下' if signal == -1 else '→ 横盘'}")

# 执行交易逻辑
if signal == 1 and position != 1:
    # 平滑价格向上 → 做多
    Log(f"[信号] 趋势向上,开多 @ {current_price:.2f}")
    
    if position == -1:
        # 先平空仓
        exchange.SetDirection("closesell")
        exchange.Buy(current_price, 1)
        Log(f"[平仓] 平空仓")
    
    # 开多仓
    exchange.SetDirection("buy")
    exchange.Buy(current_price, 1)
    Log(f"[开仓] 开多仓")
    position = 1
    
elif signal == -1 and position != -1:
    # 平滑价格向下 → 做空
    Log(f"[信号] 趋势向下,开空 @ {current_price:.2f}")
    
    if position == 1:
        # 先平多仓
        exchange.SetDirection("closebuy")
        exchange.Sell(current_price, 1)
        Log(f"[平仓] 平多仓")
    
    # 开空仓
    exchange.SetDirection("sell")
    exchange.Sell(current_price, 1)
    Log(f"[开仓] 开空仓")
    position = -1

else:
    Log(f"[持仓] 当前{'多头' if position == 1 else '空头' if position == -1 else '空仓'},无需操作")

Раскрываем три основных метода обработки финансовых данных: что же такое вейвлет-преобразование?

Конечно, на практике все не так просто. Можно использовать несколько уровней вейвлетов одновременно, например, уровень 2 показывает краткосрочный тренд, а уровень 4 — долгосрочный. Открывайте позицию только тогда, когда оба уровня движутся в одном направлении, что значительно снижает количество ложных сигналов. Также можно добавить другие условия фильтрации, такие как требование увеличения объема торгов, достаточно высокой волатильности или прорыва цены выше ключевого уровня; все это может повысить процент успешных сделок. Для стоп-лосс ордеров можно динамически устанавливать их, используя сглаженный вейвлетами диапазон колебаний цены; например, стоп-лосс срабатывает, если цена падает ниже сглаженной цены минус 2 умноженное на ATR. При управлении позициями, чем очевиднее тренд (чем круче наклон сглаженной цены), тем больше размер позиции; если тренд неясен, используйте меньшую позицию или оставайтесь в стороне.

Но основная идея остается той же: использовать вейвлеты для преобразования зашумленных цен в четкие тренды, а затем делать выводы на основе этих четких трендов. Это гораздо надежнее, чем прямое наблюдение за ростом и падением на исходном графике свечей, потому что исходный график свечей может сегодня вырасти на 3%, завтра упасть на 2%, а послезавтра вырасти на 4%. Вы просто не сможете отличить, является ли это трендом или колебанием. Кривая, обработанная вейвлетами, покажет вам, что «общий тренд за этот период восходящий, хотя между ними есть колебания».


VIII. Заключение: Рациональный взгляд на «трехсторонний подход»

С точки зрения практического сглаживания, вейвлет-преобразование действительно может играть роль в обработке финансовых данных: оно может отфильтровывать некоторый краткосрочный шум и помогать извлекать относительно четкую информацию о тренде. Однако этот метод также имеет существенные ограничения.Проблему задержки полностью избежать невозможно.Однако он может обрабатывать только исторические данные и не может прогнозировать будущие тенденции. Кроме того, эффект от использования только вейвлет-преобразования относительно ограничен; для построения полноценной торговой системы его необходимо сочетать с другими аналитическими методами и мерами контроля рисков.

Основная причина этого ограничения кроется в уникальной природе финансовых рынков. В традиционных областях обработки сигналов, таких как распознавание речи и обработка изображений, характеристики шума относительно стабильны, а сигнальные паттерны имеют тенденцию к повторению. Поэтому вейвлет-преобразование может эффективно отделять сигналы от шума. Однако финансовые рынки совершенно иные: колебания, которые сегодня считаются «шумом», завтра могут стать «сигналами», отражающими изменения рынка; аналитические модели, эффективные сейчас, могут стать неэффективными в будущем.Сам рынок нестационарен и динамично меняется.В вейвлет-преобразовании нет неизменных законов, что требует гибкой адаптации его применения в финансовой сфере к конкретным рыночным условиям.

Когда вы видите, что кто-то преувеличивает реальные эффекты вейвлет-преобразования и преобразования Фурье, попробуйте задать следующие вопросы: Какой тип вейвлета был использован? На каком основании был выбран именно этот тип, а не другие? Как был установлен уровень сглаживания? Существуют ли соответствующие результаты тестирования и процедуры выбора параметров?Те, кто действительно обладает профессиональными знаниями, смогут четко объяснить эти ключевые технические детали.

Исходя из имеющихся у нас ограниченных знаний, мы провели это практическое исследование.Основная идея заключается в том, чтобы простым и понятным способом объяснить концепции применения вейлет-преобразования.Цель данной статьи — помочь читателям получить базовое понимание этой технологии. Мы высоко ценим исследователей, глубоко вовлеченных в эту область; если вы являетесь экспертом в этой сфере, мы будем рады, если вы укажете на любые недостатки статьи, такие как теоретические основы выбора параметров вейвлетов, методы оптимизации для многомасштабных комбинаций и пути реализации адаптивного выбора вейвлетов. Мы с благодарностью примем ваши предложения и будем постоянно улучшать содержание.

Функция построения графиков: применяется в локальном механизме тестирования исходных данных изобретателя.

”`python “‘backtest start: 2025-12-17 00:00:00 end: 2025-12-23 08:00:00 period: 1h basePeriod: 1h exchanges: [{“eid”:“Futures_Binance”,“currency”:“BTC_USDT”,“fee”:[0,0]}] “’ from fmz import * import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib.patches import Rectangle

task = VCtx(doc)

==================== 小波系数库 ====================

class WaveletCoefficients: “”“Wavelet Coefficients Definition”“”

@staticmethod
def get_coeffs(wavelet_name):
    """Get coefficients for different wavelet types"""
    coeffs = {
        "Haar": [0.5, 0.5],

        "Daubechies 4": [
            0.48296291314453414,
            0.8365163037378079,
            0.22414386804201339,
            -0.12940952255126037
        ],

        "Symlet 4": [
            -0.05357, -0.02096, 0.35238,
            0.56833, 0.21062, -0.07007,
            -0.01941, 0.03268
        ],

        "Biorthogonal 3.3": [
            -0.06629, 0.28289, 0.63678,
            0.28289, -0.06629
        ],

        "Mexican Hat (Ricker)": [
            -0.1, 0.0, 0.4, 0.8, 0.4, 0.0, -0.1
        ],

        "Morlet (Gaussian)": [
            0.0625, 0.25, 0.375, 0.25, 0.0625
        ],

        "Discrete Meyer (Dmey)": [
            -0.015, -0.025, 0.0,
            0.28, 0.52, 0.28,
            0.0, -0.025, -0.015
        ]
    }

    return coeffs.get(wavelet_name, coeffs["Mexican Hat (Ricker)"])

==================== 小波变换引擎 ====================

class WaveletTransform: “”“Wavelet Transform Engine”“”

def __init__(self, wavelet_type="Mexican Hat (Ricker)", smoothing_level=3):
    self.wavelet_type = wavelet_type
    self.smoothing_level = smoothing_level
    self.coeffs = WaveletCoefficients.get_coeffs(wavelet_type)

def convolve(self, src, coeffs, step):
    """
    Convolution operation - Core algorith