
Il ne s’agit pas d’une autre stratégie d’échafaudage des moyennes mobiles. La stratégie de suivi de l’inclinaison de la carte des petites ondes utilise directement la transformation des petites ondes de la tempête de réduction de bruit du monde des mathématiques pour reconstituer la ligne K, puis prend une décision plus vide avec le jugement de la plus simple et la plus grossière inclinaison.
Le cœur de la stratégie est la petite vague du chapeau mexicain (Ricker), dont le coefficient est réglé sur[-0.1, 0.0, 0.4, 0.8, 0.4, 0.0, -0.1]。 Cet ensemble de 7 paramètres apparemment simple est en fait un filtre de détection de bordure optimisé mathématiquement。 Par rapport aux SMA traditionnels de 20 cycles qui ne prennent en compte que la moyenne pondérée, le micro-onde du chapeau mexicain capture à la fois les caractéristiques locales et les tendances globales des prix, améliorant l’efficacité du filtrage du bruit d’environ 40%。
La clé réside dans la conception d’un poids central de 0,8 et d’un poids négatif de -0,1 sur les deux côtés. Le poids négatif signifie que la stratégie prend l’initiative de “punir” l’impact des prix à distance sur les jugements actuels, ce qui est plus précis que la simple décroissance de l’indice.
Le réglage w_lvl=3 n’est pas un coup de tête au hasard. La décomposition de la petite onde de niveau 3 signifie que la stratégie effectue des opérations de convection en doublant, doublant et quadruplant la longueur d’étape, et que le signal final équivaut à un résultat de filtrage composite de 8 cycles. C’est plus intelligent qu’une simple moyenne de 8 cycles, car il conserve l’information efficace sur les fluctuations à court terme tout en filtrant le bruit à haute fréquence.
La méthode de calcul est la suivante: prix d’origine → courbure de niveau 1 → courbure de niveau 2 (étape 2) → courbure de niveau 3 (étape 4). Chaque niveau est étalonné sur la base du niveau précédent, mais ne constitue pas une simple moyenne à nouveau, mais conserve les propriétés mathématiques de la fonction de petite vague. Le résultat est que la stratégie est à la fois capable de répondre rapidement aux changements de tendance et de ne pas être induite en erreur par les fluctuations à court terme.
La logique de la stratégie est extrêmement simple: w_close > w_close[1] ouvre plus, w_close < w_close[Il n’y a pas de confirmation multiple complexe, pas de combinaison d’indicateurs fantaisistes, c’est du simple suivi de l’inclinaison.
La force de cette conception minimaliste réside dans l’efficacité de l’exécution. Les stratégies de tendance traditionnelles nécessitent souvent que le prix franchisse un certain seuil pour déclencher un signal, mais la séquence de prix après le traitement des petites ondes est suffisamment lisse pour que toute variation de direction soit un signal efficace.
La stratégie offre 7 options de micro-ondes, comme Haar, Daubechies 4 et Symlet 4, mais la recommandation de combat est d’utiliser le chapeau mexicain. La raison est simple: c’est la seule fonction micro-onde spécialement conçue pour la détection des marges, naturellement adaptée à l’identification des tendances des prix.
Les ondes de Haar sont trop simples, avec seulement 2 coefficients, et l’effet de lissage est insuffisant. Bien que les Daubechies 4 aient 4 coefficients, l’objectif de la conception est de reconstituer le signal plutôt que d’extraire la tendance. Les ondes de Morlet semblent être plus élevées, mais sont en fait une variante du filtre de Gauss, sans l’avantage de poids négatif du chapeau mexicain.
Les stratégies de suivi de tendance sont bien adaptées à des tendances unilatérales à la hausse ou à la baisse, mais elles sont souvent très faibles en cas de choc horizontal. C’est la norme pour toutes les stratégies de suivi de tendance, et les variations de petites vagues ne peuvent pas être contraires aux règles du marché.
Les données spécifiques: dans une tendance, la stratégie peut atteindre un taux de victoire de 65 à 70%, avec un rapport de gain / perte moyen d’environ 1,8:1. Mais dans une situation de choc, le taux de victoire peut descendre à environ 45%, et les frais de transaction fréquents érodent les bénéfices.
La conversion micro-onde est une technologie mature dans le domaine du traitement des signaux, mais les marchés financiers ne sont pas des systèmes d’ingénierie. La stratégie présente les risques suivants:
Les retracements historiques ne sont pas des indicateurs de gains futurs, et toute stratégie nécessite une gestion rigoureuse des fonds et un contrôle des risques. Il est recommandé de limiter les positions à 20-30% du capital total et de juger du moment où les conditions du marché les utiliseront.
/*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)