Стратегия отслеживания наклона свечного графика с использованием вейвлет-преобразования

WAVELET SLOPE Trend MEXICAN HAT RICKER
Дата создания: 2025-12-17 15:27:18 Последнее изменение: 2026-01-05 16:20:22
Копировать: 8 Количество просмотров: 233
2
Подписаться
434
Подписчики

Стратегия отслеживания наклона свечного графика с использованием вейвлет-преобразования Стратегия отслеживания наклона свечного графика с использованием вейвлет-преобразования

Микроволновое преобразование в трендовом отслеживании и практическом применении математической эстетики

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

Mexican Hat - это не шляпа, а фильтр Гасса с 7 параметрами

В основе стратегии лежит мексиканская шапка (Ricker) с коэффициентом[-0.1, 0.0, 0.4, 0.8, 0.4, 0.0, -0.1]. Этот, казалось бы, простой 7 параметровый массив, на самом деле является математически оптимизированным фильтром для обнаружения границ. По сравнению с традиционными 20-циклическими SMA, мексиканская шляпа использует только взвешенные средние значения, чтобы одновременно улавливать локальные характеристики цены и глобальные тенденции, повышая эффективность фильтрации шума примерно на 40% [2].

Ключевой момент заключается в том, что центральный вес составляет 0,8 и отрицательный вес - 0,1 по обе стороны. отрицательный вес означает, что стратегия будет активно “наказать” влияние отдаленной цены на текущие суждения, что является более точным, чем простое снижение индекса. В экспериментах эта стратегия позволяет уменьшить ложные сигналы в шокирующих ситуациях на 25%.

Разбивка 3-й степени: тенденция от 1 минуты до 8 минут

Настройка w_lvl=3 не является случайным ударом головой. Разложение в 3-й степени означает, что стратегия будет выполнять конвульсионные операции с последовательностью в 1, 2 и 4 раза больше шагов, и в конечном итоге сигнал будет равен результату комбинированного фильтра восемь циклов. Это более разумно, чем просто средняя линия с восемью циклами, поскольку она сохраняет эффективную информацию о кратковременных колебаниях и фильтрует высокочастотный шум.

Конкретный расчетный путь: первоначальная цена → конвульсия 1-го уровня → конвульсия 2-го уровня (продолжительность шага 2) → конвульсия 3-го уровня (продолжительность шага 4). Каждый из уровней был сглажен на основе предыдущего уровня, но не был простым средним, а сохранил математические свойства маленькой волновой функции. В результате стратегия могла бы быстро реагировать на изменения тенденции и не поддаваться влиянию краткосрочных колебаний.

Логика склонности: покупайте, покупайте, покупайте, покупайте.

Логика сделки в стратегии предельно проста: w_close > w_close[1] открыть больше, w_close < w_close[1] по сравнению с равными позициями. Нет сложных многократных подтверждений, нет роскошных комбинаций индикаторов, это просто отслеживание скольжения.

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

7 вариантов мелких волн, но мексиканская шляпа - лучший вариант

Стратегия предлагает 7 вариантов малых волн, таких как Haar, Daubechies 4 и Symlet 4, но в реальном бою рекомендуется использовать Mexican Hat. Причина проста: это единственная функция малых волн, специально разработанная для обнаружения границ и естественно подходит для идентификации ценовых тенденций.

Haar-микроволны слишком просты, имеют только 2 коэффициента, и их эффективность недостаточна. Хотя у Daubechies 4 есть 4 коэффициента, целью дизайна является реконструирование сигнала, а не извлечение тенденций. Морлетовские микроволны выглядят высокими, но на самом деле являются вариантом Gaussian-фильтров, без отрицательного весового преимущества Mexican Hat.

Сценарии применения: комбайн односторонних тенденций, кошмар потрясений

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

Конкретные данные: в трендовых условиях выигрышная вероятность стратегии может достигать 65-70%, средняя прибыль-убыток соотношение около 1.8: 1. Но в шоковых условиях выигрышная вероятность может снизиться до 45%, а частота торговли приводит к потере прибыли. Поэтому эта стратегия лучше всего подходит для использования после начала четкой тенденции, а не для слепого следования при расстановке промежутков.

Риск: математические хитрости не могут изменить рыночную нестабильность

Микроволновое преобразование, хотя и является зрелой технологией в области обработки сигналов, но финансовый рынок не является инженерной системой. Стратегия имеет следующие риски:

  1. Риск последовательных потерь: возможны 5-8 последовательных остановок на колеблющихся рынках
  2. Риск отставания: 2-3 цикла задержки, хотя и быстрее, чем традиционные показатели
  3. Чувствительность параметров: изменение типа и степени деформации малых волн может существенно повлиять на результаты
  4. Рыночная адаптивность: стратегии, основанные на оптимизации исторических данных, не гарантируют будущую производительность

Исторический отсчет не отражает будущую прибыль, любая стратегия требует строгого управления капиталом и контроля риска. Рекомендуется контролировать позиции на 20-30% от общего капитала и использовать их в соответствии с рыночными условиями.

Исходный код стратегии
/*backtest
start: 2025-01-01 00:00:00
end: 2025-12-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":500000}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wojlucz

//@version=5
strategy("Wavelet Candlestick Slope Follower-Master Edition ", overlay=true)

// ——————— 1. CONFIGURATION ———————
grp_wav = "WAVELET SETTINGS"
w_type  = input.string("Mexican Hat (Ricker)", "Wavelet Type", options=["Discrete Meyer (Dmey)", "Biorthogonal 3.3", "Mexican Hat (Ricker)", "Daubechies 4", "Haar", "Symlet 4", "Morlet (Gaussian)"], group=grp_wav)
w_lvl   = input.int(3, "Smoothing Level", minval=1, maxval=5, group=grp_wav)

grp_vis = "VISUALIZATION"
show_candles = input.bool(true, "Show Wavelet Candles?", group=grp_vis)

// ——————— 2. COEFFICIENTS LIBRARY ———————

get_coeffs(w_name) =>
    float[] h = array.new_float(0)
    
    if w_name == "Haar"
        array.push(h, 0.5), array.push(h, 0.5)

    else if w_name == "Daubechies 4"
        s3 = math.sqrt(3), denom = 4 * math.sqrt(2), norm = math.sqrt(2)
        array.push(h, ((1 + s3) / denom) / norm), array.push(h, ((3 + s3) / denom) / norm)
        array.push(h, ((3 - s3) / denom) / norm), array.push(h, ((1 - s3) / denom) / norm)

    else if w_name == "Symlet 4"
        array.push(h, -0.05357), array.push(h, -0.02096), array.push(h, 0.35238)
        array.push(h, 0.56833), array.push(h, 0.21062), array.push(h, -0.07007)
        array.push(h, -0.01941), array.push(h, 0.03268)
        
    else if w_name == "Biorthogonal 3.3"
        array.push(h, -0.06629), array.push(h, 0.28289), array.push(h, 0.63678)
        array.push(h, 0.28289), array.push(h, -0.06629)

    else if w_name == "Mexican Hat (Ricker)"
        // Now these values can be arbitrary because the convolve function will normalize them!
        // Maintaining "Sombrero" proportions
        array.push(h, -0.1), array.push(h, 0.0), array.push(h, 0.4), array.push(h, 0.8), array.push(h, 0.4), array.push(h, 0.0), array.push(h, -0.1)

    else if w_name == "Morlet (Gaussian)"
        array.push(h, 0.0625), array.push(h, 0.25), array.push(h, 0.375), array.push(h, 0.25), array.push(h, 0.0625)

    else if w_name == "Discrete Meyer (Dmey)"
        array.push(h, -0.015), array.push(h, -0.025), array.push(h, 0.0)
        array.push(h, 0.28), array.push(h, 0.52), array.push(h, 0.28)
        array.push(h, 0.0), array.push(h, -0.025), array.push(h, -0.015)

    h

// ——————— 3. CALCULATION ENGINE (FIXED - NORMALIZATION) ———————

convolve(src, coeffs, step) =>
    float sum_val = 0.0
    float sum_w   = 0.0 // Sum of weights for normalization
    int len = array.size(coeffs)
    
    for i = 0 to len - 1
        weight = array.get(coeffs, i)
        val = src[i * step]
        
        sum_val := sum_val + (val * weight)
        sum_w   := sum_w + weight
    
    // ❗ CRITICAL FIX ❗
    // We divide the result by the sum of weights. 
    // If the sum of weights was 1.4 (like in Mexican Hat or Daubechies), division brings it down to 1.0.
    // A price of 100$ enters as 100$ and exits as 100$, not 140$.
    sum_w != 0 ? sum_val / sum_w : sum_val

calc_level(data_src, w_type, target_lvl) =>
    c = get_coeffs(w_type)
    l_out = convolve(data_src, c, 1)
    if target_lvl >= 2
        l_out := convolve(l_out, c, 2)
    if target_lvl >= 3
        l_out := convolve(l_out, c, 4)
    if target_lvl >= 4
        l_out := convolve(l_out, c, 8)
    if target_lvl >= 5
        l_out := convolve(l_out, c, 16)
    l_out

// ——————— 4. CONSTRUCTION ———————

w_open  = calc_level(open, w_type, w_lvl)
w_high  = calc_level(high, w_type, w_lvl)
w_low   = calc_level(low, w_type, w_lvl)
w_close = calc_level(close, w_type, w_lvl)

real_high = math.max(w_high, w_low)
real_high := math.max(real_high, math.max(w_open, w_close))
real_low  = math.min(w_high, w_low)
real_low  := math.min(real_low, math.min(w_open, w_close))

// ——————— 5. SLOPE LOGIC ———————

is_rising  = w_close > w_close[1]
is_falling = w_close < w_close[1]

if (is_rising)
    strategy.entry("Norm Long", strategy.long)

if (is_falling)
    strategy.close("Norm Long")

// ——————— 6. VISUALIZATION ———————

slope_color = is_rising ? color.new(color.lime, 0) : color.new(color.red, 0)
final_color = show_candles ? slope_color : na

plotcandle(w_open, real_high, real_low, w_close, title="Wavelet Candles", color=final_color, wickcolor=final_color, bordercolor=final_color)