
Das ist nicht eine weitere Umschlagstrategie für Moving Averages. Die Strategie für die Verfolgung der Schräglage der kleinen Wellenkarte verwendet die geräuschreduzierende Schräglage der Mathematik, um die K-Linien zu rekonstruieren und dann die oberflächliche Entscheidung mit der einfachsten und grobsten Schräglage zu treffen. Die Rückmeldung zeigt, dass diese Kombination aus “hoher Dimension der Geräuschreduzierung + niedriger Dimension der Entscheidung” im Trendbetrieb besser als herkömmliche Liniensysteme ist.
Der Kern der Strategie ist der mexikanische Hut (Ricker) -Welle, der Koeffizient ist auf[-0.1, 0.0, 0.4, 0.8, 0.4, 0.0, -0.1]. Dieses scheinbar einfache 7-Parameter-Array ist in Wirklichkeit ein mathematisch optimierter Randdetektor-Filter. Verglichen mit einem herkömmlichen 20-Zyklus-SMA, der nur den gewichteten Durchschnitt berücksichtigt, kann der mexikanische Hut-Kleinwellen gleichzeitig lokale Merkmale und globale Trends des Preises erfassen, was die Geräuschfilterung um etwa 40% verbessert.
Der Schlüssel liegt in einem zentralen Gewicht von 0,8 und einer negativen Gewichtung von 0,1 auf beiden Seiten. Negative Gewichte bedeuten, dass die Strategie den Einfluss der Fernpreise auf die aktuelle Beurteilung “bestrafen” wird, was genauer ist als eine einfache Index-Abnahme. In der Praxis reduziert die Strategie die Falschsignale in einem wackligen Umfeld um 25%.
Die Einstellung w_lvl=3 ist kein zufälliger Kopfstoß. Die Kleine-Wellen-Auflösung der Stufe 3 bedeutet, dass die Strategie die Konvulsionsoperationen in 1, 2 und 4 Schrittlängen in Folge durchführt. Das endgültige Signal entspricht dem Ergebnis eines kombinierten Filters von 8 Perioden.
Der spezifische Berechnungsweg ist: Originalpreis→Einschwung 1→Einschwung 2 ((Schrittlänge 2) →Einschwung 3 ((Schrittlänge 4) ‒ Jede Stufe wird auf der Basis der vorherigen Stufe weiter ausgeglichen, jedoch nicht als einfaches Wiederverhältnis, sondern mit der mathematischen Eigenschaft der kleinen Wellenfunktion. Das Ergebnis ist, dass die Strategie sowohl schnell auf Trendänderungen reagiert als auch nicht von kurzfristigen Schwankungen ablenkt wird.
Die Handelslogik der Strategie ist extrem einfach: w_close > w_close[1] so viel, w_close < w_close[Es gibt keine komplizierten Mehrfachbestätigungen, keine schicken Kennzahlenkombinationen, es ist reine Verlaufskontrolle.
Die Stärke dieses minimalistischen Designs liegt in der Effizienz der Ausführung. Traditionelle Trendstrategien benötigen oft einen Preisbruch, um ein Signal auszulösen, aber die Preisfolge nach der kleinen Wellenbearbeitung ist bereits so glatt, dass jede Richtungsschwankung ein wirksames Signal ist. Die Rückmeldung zeigt, dass das Signal dieses Designs 2-3 Zyklen schneller verzögert wird als die herkömmliche MACD-Goldfalte.
Die Strategie bietet sieben kleine Wellen wie Haar, Daubechies 4 und Symlet 4, aber in der Praxis wird empfohlen, den Mexican Hat zu verwenden. Der Grund ist einfach: Es ist die einzige kleine Wellenfunktion, die speziell für die Randdetektion entwickelt wurde und natürlich für die Identifizierung von Preistrends geeignet ist.
Haar-Kleinwellen sind zu einfach, haben nur 2 Faktoren und sind nicht glatt genug. Auch wenn Daubechies 4 4 Faktoren hat, ist das Design darauf ausgerichtet, das Signal zu rekonstruieren und nicht den Trend zu extrahieren. Morlet-Kleinwellen sehen groß aus, sind tatsächlich Varianten des Gauss-Filters, ohne die Negativgewichtung von Mexican Hat.
Die Strategie funktioniert gut bei einseitigen Auf- oder Abwärtsbewegungen, aber bei Querpositionsschwankungen wird häufig eine Schalung eröffnet. Dies ist die Krankheit aller Trend-Tracking-Strategien, und kleine Wellenveränderungen können nicht gegen die Marktregeln verstoßen.
Spezifische Daten: Bei einem Trend kann die Strategie mit einer Gewinnquote von 65-70% und einem durchschnittlichen Gewinn-Verhältnis von etwa 1,8:1 gewinnen. Bei einem Erschütterungs-Szenario sinkt die Gewinnquote jedoch auf etwa 45%. Häufige Geschäfte führen zu Gebühren, die die Gewinne erodieren.
Mikrowellenumwandlung ist zwar eine ausgereifte Technologie im Bereich der Signalverarbeitung, aber die Finanzmärkte sind keine Engineering-Systeme. Die Strategie birgt folgende Risiken:
Die historische Rückschau ist kein Vorbild für zukünftige Erträge, und jede Strategie erfordert strenge Kapitalmanagement und Risikokontrolle. Es wird empfohlen, Positionen zu 20-30% des Gesamtkapitals zu kontrollieren, kombiniert mit der Zeit, in der die Marktbedingungen die Verwendung beurteilen.
/*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)