[TOC]

Эта статьяНаучно-популярное руководство по вейвлет-преобразованию для практической торговлиДанный код представляет собой упрощенную учебную версию (в которой отсутствуют сложные шаги, такие как многоуровневое разложение, пороговое шумоподавление и реконструкция стандартных вейвлетов с помощью обратного преобразования), сохраняя только основные идеи:Используйте вейвлет-коэффициенты для выполнения многомасштабного сглаживания цен с целью извлечения информации о тренде.Подходит для разработки стратегий и быстрой проверки, но не для академических исследований или публикации научных работ.
Те, кто часто просматривает финансовые и количественные темы на Zhihu, наверняка сталкивались с подобной ситуацией:
Некоторые “эксперты” продолжают утверждать:
Он всех ошеломил, словно овладел ядерным оружием количественной торговли.
Но вы хотите, чтобы он показал вам код?
«Это… коммерческая тайна, и я не могу её разглашать».
Попросите его объяснить этот принцип.
«Это… требует применения сложной математики, вы бы не поняли, даже если бы я вам объяснил».
Сегодня мы рассмотрим темы, часто упоминаемые этими «экспертами по Чжиху», познакомим с практическим применением вейвлет-преобразования на финансовом рынке и поможем всем сформировать правильное понимание этой технологии.
Представьте, что вы слушаете песню, но в записи присутствует фоновый шум:
Исходная запись = человеческий голос + фоновый шум + помехи
Вейвлет-преобразование похоже наУмные фильтры:
Переключитесь на финансовый рынок:
Первоначальная цена = Истинный тренд + Краткосрочные колебания + Случайный шум
Вейвлет-преобразование может вам помочь:
Суть вейвлет-преобразования заключается в следующем:Разложите исходный сигнал, используя определенный набор «базисных функций» (вейвлетов).。
Представьте, что вы хотите описать внешность человека:
В финансовых ценах:
Исходная последовательность цен = Базовая функция 1 × Вес 1 + Базовая функция 2 × Вес 2 + … + Шум
Базисные функции представляют собой «шаблоны», соответствующие вейвлет-коэффициентам.Различные типы вейвлетов (Хаара, Даубеши, Мексиканская шляпа и т. д.) используют разные шаблоны, подобно использованию различных «извлекателей признаков» для разложения цен.
Вейвлет-преобразование по сути является…Многомасштабный банк фильтров:
Высокочастотный фильтр → Улавливает быстрые колебания (ежедневный шум, колебания уровня тактов) Фильтр промежуточной частоты → Выявляет среднесрочные тренды (диапазоны от нескольких часов до нескольких дней). Низкочастотные фильтры → Выявление долгосрочных трендов (еженедельных и ежемесячных).
Почему это называется “вейвлетом”?
Проблема использования синусоидальных волн для анализа финансовых цен: синусоидальные волны предполагают периодическое повторение сигнала, а финансовые рынки — нет! BTC может вырасти на 10% сегодня и упасть на 8% завтра, без какой-либо цикличности.
Преимущества вейвлетов:Анализ локализацииЭто может указывать на то, что “в период с 15:00 до 17:00 20 декабря 2025 года тенденция цен была преимущественно восходящей”, а не на общий вывод, например, “рынок в целом колебался”.
Вейвлет-преобразование — этоОбратимыйЭто очень важно!
Первоначальная цена —> Вейвлет-разложение —> Компонент тренда + Компонент волатильности + Компонент шума Трендовая составляющая + составляющая волатильности + шумовая составляющая —> вейвлет-реконструкция —> исходная цена
Процесс рефакторингаЭто означает разложение на отдельные компоненты.Выборочно объединить обратно:
При реконструкции используйте только компоненты тренда.
После разложения было получено следующее.
В реальных сделках мы обычноВосстановите только низкочастотную часть.(Тренд) Высокочастотные компоненты (шум) отбрасываются напрямую. Это принцип вейвлет-«шумоподавление».
Давайте опустим формулы комплексных интегралов и объясним это простыми словами:
Вейвлет-преобразование = взвешенное среднее ценовых рядов с использованием набора «вейвлет-коэффициентов».
Основная формула:
Сглаживание цен[i] = Σ(первоначальная цена)[i-j] × коэффициенты вейвлета[j])/Σ(вейвлет-коэффициенты)[j])
Фильтр перспективы:
Исходная цена фильтруется с помощью вейвлет-фильтра → отбираются компоненты разных частот.
Ключ в том,Выбор вейвлет-коэффициентов:
Например:
Если использовать вейвлеты Даубеши 4, то коэффициенты будут следующими:[0.483, 0.837, 0.224, -0.129]:
Этот набор коэффициентов определяет фильтр:
Вейвлет-преобразование завершается, когда вы «скользите» этим фильтром по всему ряду цен. Каждое скольжение включает в себя вычисления.Взвешенное среднее цен в текущем временном окнеВ качестве весов используются вейвлет-коэффициенты.
Почему оно способно «разлагать» сигналы?
Потому что математически можно доказать, что:Любой сигнал может быть представлен в виде линейной комбинации базисных вейвлет-функций.Подобно тому, как любой цвет можно получить, смешивая три основных цвета RGB, любой ряд цен можно вывести, комбинируя базисные функции вейвлетов. Различные типы вейвлетов предоставляют различные «библиотеки базисных функций», подходящие для различных типов анализа сигналов.
В учебниках по обработке сигналов вейвлет-преобразование обычно включает в себя сложные…Многоуровневое разложение, реконструкция и пороговое шумоподавлениеШаги:
Полный рабочий процесс вейвлет-анализа:
НоПрактическое применение финансовых транзакцийВ Китае нам не нужно, чтобы всё было так сложно. Потому что:
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 # 归一化
Эта функция…Суть вейвлет-фильтров:
stepПараметры позволяют осуществлять многоуровневое сглаживание (Уровень 1/2/3…).Почему такое упрощение оправдано?
Потому что основным требованием к транзакциям является:Выявление закономерностей в шумеКоэффициенты аппроксимации вейлет-преобразования сами по себе являются «фильтром нижних частот» для сигнала, сохраняя низкочастотные составляющие тренда, что именно то, что нам нужно.
Хотя полный вейвлет-анализ является более точным методом, в финансовой торговле:
использоватьЛокальный механизм тестирования обратной связи платформы 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, Мексиканской шляпы, Морле и Дискретного Мейера) при анализе цен на криптовалюты представлена следующая визуальная демонстрация:
Основное внимание уделяется не строгости математического вывода, а визуальному сравнению практических результатов.Это помогает трейдерам развить интуитивное понимание и выбрать тип вейвлета, подходящий для их стратегии.
Вейвлет Хаара — это самый простой тип вейвлета, имеющий всего два коэффициента:[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) после обработки Хаара становится относительно стабильной. Это эффект «шумоподавки» с помощью вейвлетов — сглаживания краткосрочных, резких колебаний, что позволяет увидеть более плавный тренд цены.

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

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 свечей.

Биортогональный вейвлет 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
Основные характеристики:Симметрия гарантирует отсутствие «фазовых искажений» — сглаженная кривая не будет необъяснимо смещаться влево или вправо.

Коэффициенты вейвлета «мексиканская шляпа» (также называемого вейвлетом Рикера):[-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
Основные характеристики:Благодаря своей структуре “большой посередине, с отрицательными значениями на обоих концах”, он особенно эффективен для обнаружения.точка перегиба- Критический момент, когда цены меняют восходящий тренд на нисходящий (или наоборот). Отрицательный весовой коэффициент “наказывает” цены на более поздних этапах, быстро отслеживая изменения тренда.

Вейвлет Морле основан на гауссовском (нормальном) распределении с коэффициентами:[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
Основные характеристики:Это самый «мягкий» из всех вейвлетов, он не имеет отрицательных весов, и все цены плавно включаются в расчет. Полученная кривая чрезвычайно гладкая, но ее недостаток — медленная реакция: внезапные изменения цен могут отразиться лишь через несколько свечей.

Дискретный вейвлет Мейера — это наиболее сложный вейвлет, имеющий следующие коэффициенты:[-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%, ее кривая может все еще показывать «продолжение роста».

После ознакомления с семью типами вейвлетов вы, вероятно, заметили закономерность:
Больше коэффициентов = подробнее = более сильное сглаживание = большая задержка
Коэффициент Хаара (2 коэффициента) → Рассматривается только 1 столбик → Практически негладкий Дубовые палочки 4 (4 штуки) → См. 3 перед → Слегка гладкие Мексиканская шляпа (7) → См. 6 перед → Умеренное сглаживание Дискретный Мейер (9) → Перед просмотром 8 полос → Сильное сглаживание
Эффект отрицательных весов заключается в повышении чувствительности и облегчении обнаружения изменений.
Хаар/Морле (без отрицательных весов) → Мягкий и плавный, нечувствительный Мексиканская шляпа (отрицательное значение с обоих концов) → Чувствительна к точкам перегиба Даубеши 4 (отрицательный) → Чувствителен к изменениям тренда
Роль симметрии = отсутствие искажений = сохранение первоначальной формы
Асимметрия (Даубеши) → Может смещаться влево/вправо Симметрия (биортогональная/Мейера) → Сохранение центрального положения
Вейвлет-преобразование можно применять рекурсивно, подобно матрешкам. Первое применение называется уровнем 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
Применение вейвлет-преобразования в торговле очень простое: используйте сглаженную кривую цены, которую оно генерирует, для определения направления тренда и торгуйте, когда тренд меняется. В частности, если сглаженная цена закрытия выше предыдущей, это указывает на восходящий тренд, поэтому открывайте длинную позицию; если сглаженная цена закрытия ниже предыдущей, это указывает на нисходящий тренд, поэтому закрывайте позицию или открывайте короткую. Эта логика эффективна, потому что вейвлет-преобразование отфильтровывает краткосрочные случайные колебания, оставляя «вверх» или «вниз» как высокую вероятность подлинного изменения тренда, а не как ложный сигнал, вызванный шумом.
# 执行小波变换
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%. Вы просто не сможете отличить, является ли это трендом или колебанием. Кривая, обработанная вейвлетами, покажет вам, что «общий тренд за этот период восходящий, хотя между ними есть колебания».
С точки зрения практического сглаживания, вейвлет-преобразование действительно может играть роль в обработке финансовых данных: оно может отфильтровывать некоторый краткосрочный шум и помогать извлекать относительно четкую информацию о тренде. Однако этот метод также имеет существенные ограничения.Проблему задержки полностью избежать невозможно.Однако он может обрабатывать только исторические данные и не может прогнозировать будущие тенденции. Кроме того, эффект от использования только вейвлет-преобразования относительно ограничен; для построения полноценной торговой системы его необходимо сочетать с другими аналитическими методами и мерами контроля рисков.
Основная причина этого ограничения кроется в уникальной природе финансовых рынков. В традиционных областях обработки сигналов, таких как распознавание речи и обработка изображений, характеристики шума относительно стабильны, а сигнальные паттерны имеют тенденцию к повторению. Поэтому вейвлет-преобразование может эффективно отделять сигналы от шума. Однако финансовые рынки совершенно иные: колебания, которые сегодня считаются «шумом», завтра могут стать «сигналами», отражающими изменения рынка; аналитические модели, эффективные сейчас, могут стать неэффективными в будущем.Сам рынок нестационарен и динамично меняется.В вейвлет-преобразовании нет неизменных законов, что требует гибкой адаптации его применения в финансовой сфере к конкретным рыночным условиям.
Когда вы видите, что кто-то преувеличивает реальные эффекты вейвлет-преобразования и преобразования Фурье, попробуйте задать следующие вопросы: Какой тип вейвлета был использован? На каком основании был выбран именно этот тип, а не другие? Как был установлен уровень сглаживания? Существуют ли соответствующие результаты тестирования и процедуры выбора параметров?Те, кто действительно обладает профессиональными знаниями, смогут четко объяснить эти ключевые технические детали.
Исходя из имеющихся у нас ограниченных знаний, мы провели это практическое исследование.Основная идея заключается в том, чтобы простым и понятным способом объяснить концепции применения вейлет-преобразования.Цель данной статьи — помочь читателям получить базовое понимание этой технологии. Мы высоко ценим исследователей, глубоко вовлеченных в эту область; если вы являетесь экспертом в этой сфере, мы будем рады, если вы укажете на любые недостатки статьи, такие как теоретические основы выбора параметров вейвлетов, методы оптимизации для многомасштабных комбинаций и пути реализации адаптивного выбора вейвлетов. Мы с благодарностью примем ваши предложения и будем постоянно улучшать содержание.
Функция построения графиков: применяется в локальном механизме тестирования исходных данных изобретателя.
”`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