
Ini bukan strategi lain untuk mengubah kulit dari rata-rata bergerak. Strategi pelacakan kemiringan grafik gelombang kecil langsung menggunakan transformasi gelombang kecil dari penghilang kebisingan di bidang matematika untuk merekonstruksi garis K, dan kemudian membuat keputusan kosong dengan penilaian kemiringan kasar yang paling sederhana.
Inti dari strategi ini adalah Mexican Hat (Ricker) gelombang kecil, dengan koefisien yang ditetapkan sebagai[-0.1, 0.0, 0.4, 0.8, 0.4, 0.0, -0.1]。 Array 7 parameter yang tampak sederhana ini sebenarnya merupakan filter deteksi marginal yang dioptimalkan secara matematis。 Dibandingkan dengan SMA 20 siklus tradisional yang hanya mempertimbangkan rata-rata berat, Mexican Hat microwave mampu menangkap karakteristik harga lokal dan tren global sekaligus, meningkatkan efisiensi penyaringan kebisingan sekitar 40%。
Kuncinya adalah desain dengan bobot pusat 0,8 dan bobot negatif 0,1 di kedua sisi. Bobot negatif berarti bahwa strategi akan secara proaktif “menghukum” efek harga jarak jauh pada penilaian saat ini, yang lebih akurat daripada penurunan indeks sederhana.
Pengaturan w_lvl=3 bukan head-shaking acak. Penguraian gelombang kecil tingkat 3 berarti bahwa strategi akan melakukan operasi konvulsi secara berturut-turut dengan langkah 1, 2 dan 4 kali lebih panjang, dan hasil akhir dari sinyal setara dengan hasil filter gelombang komposit 8 periode. Ini lebih cerdas daripada rata-rata 8 periode sederhana, karena ia mempertahankan informasi yang efektif dari fluktuasi jangka pendek, sementara memfilter kebisingan frekuensi tinggi.
Jalur perhitungan spesifik: harga awal → konvulsi tingkat 1 → konvulsi tingkat 2 ((panjang langkah 2) → konvulsi tingkat 3 ((panjang langkah 4)). Setiap tingkat lebih halus pada dasar tingkat sebelumnya, tetapi tidak hanya rata-rata lagi, tetapi mempertahankan karakteristik matematis dari fungsi gelombang kecil. Hasilnya adalah bahwa strategi dapat merespons perubahan tren dengan cepat dan tidak tertipu oleh fluktuasi jangka pendek.
Logika transaksi strategi ini sangat sederhana: w_close > w_close[1] lebih banyak, w_close < w_close[Tidak ada multiple confirmation yang rumit, tidak ada kombinasi indikator yang mewah, hanya slope tracking.
Kekuatan desain minimalis ini terletak pada efisiensi pelaksanaan. Strategi tren tradisional sering membutuhkan harga untuk menembus titik terendah untuk memicu sinyal, tetapi setelah pengolahan gelombang kecil, urutan harga sudah cukup halus, dan setiap perubahan arah adalah sinyal yang efektif. Retrospeksi menunjukkan bahwa desain ini menunda sinyal 2-3 siklus lebih cepat daripada forks MACD tradisional.
Strategi menawarkan 7 pilihan gelombang kecil, seperti Haar, Daubechies 4, dan Symlet 4, tetapi rekomendasi pertempuran nyata adalah menggunakan Mexican Hat. Alasannya sangat sederhana: itu adalah satu-satunya fungsi gelombang kecil yang dirancang khusus untuk deteksi margin, yang secara alami cocok untuk mengidentifikasi tren harga.
Haar microwave terlalu sederhana, hanya 2 faktor, smoothing tidak cukup efektif. Meskipun ada 4 faktor, desain Daubechies 4 bertujuan untuk merekonstruksi sinyal, bukan untuk mengekstrak tren. Morlet microwave terlihat tinggi, tetapi sebenarnya adalah varian dari Gaussian filter, tanpa kelebihan berat badan negatif dari Mexican Hat.
Strategi ini bekerja dengan baik pada satu sisi naik atau turun, tetapi sering melakukan posisi kosong pada pergerakan lateral. Ini adalah penyakit umum dari semua strategi pelacakan tren, dan perubahan gelombang kecil tidak dapat melanggar aturan pasar.
Data spesifik: Dalam situasi tren, strategi ini memiliki tingkat kemenangan 65-70%, dengan rasio untung rugi rata-rata sekitar 1,8:1. Namun, dalam situasi goncangan, tingkat kemenangan turun menjadi sekitar 45%, dan biaya yang sering digunakan untuk perdagangan dapat mengikis keuntungan. Oleh karena itu, strategi ini paling cocok untuk digunakan setelah tren yang jelas dimulai, dan tidak cocok untuk diikuti secara membabi buta saat menyusun interval.
Sementara transformasi gelombang kecil adalah teknologi yang sudah matang di bidang pemrosesan sinyal, pasar keuangan bukanlah sistem yang direkayasa. Strategi ini memiliki risiko sebagai berikut:
Retrospeksi sejarah tidak mewakili keuntungan masa depan, dan strategi apa pun memerlukan manajemen dana dan kontrol risiko yang ketat. Disarankan untuk mengendalikan posisi dalam 20-30% dari total dana, dan menggunakan waktu yang ditentukan oleh lingkungan pasar.
/*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)