
यह एक और चलती औसत की त्वचा बदलने की रणनीति नहीं है। लघु तरंगचित्र स्केलेबिलिटी ट्रैकिंग रणनीति सीधे गणित के क्षेत्र में शोर मंदक के साथ लघु तरंग रूपांतरण का उपयोग करके के-लाइन को फिर से बनाने के लिए, और फिर सबसे सरल, मोटे स्केलेबिलिटी निर्णय के साथ एक खाली निर्णय लेने के लिए। समीक्षा से पता चलता है कि “उच्च आयामी शोर मंदक + कम आयामी निर्णय” का यह संयोजन प्रवृत्ति के मामले में पारंपरिक औसत रेखा प्रणाली से बेहतर प्रदर्शन करता है।
इस रणनीति के केंद्र में मैक्सिकन टोपी (Ricker) की छोटी लहर है, जिसका गुणांक है[-0.1, 0.0, 0.4, 0.8, 0.4, 0.0, -0.1]. यह प्रतीत होता है कि सरल 7 पैरामीटर सरणी, वास्तव में एक गणित अनुकूलित किनारे का पता लगाने के फिल्टर है. पारंपरिक 20 चक्र एसएमए की तुलना में केवल भारित औसत को ध्यान में रखते हुए, मैक्सिकन हैट लघु तरंगों को कीमतों की स्थानीय विशेषताओं और वैश्विक रुझानों को एक साथ पकड़ने में सक्षम बनाता है, जो लगभग 40% के बारे में शोर निस्पंदन में सुधार करता है।
मुख्य बात यह है कि 0.8 का केंद्र भार और दोनों तरफ -0.1 का नकारात्मक भार डिजाइन। नकारात्मक भार का मतलब है कि रणनीति सक्रिय रूप से “सजा” दूरस्थ कीमतों के प्रभाव को वर्तमान निर्णय पर डालती है, जो सरल सूचकांक गिरावट की तुलना में अधिक सटीक है। प्रयोगात्मक रूप से, इस रणनीति ने 25% कम झूठे संकेतों को कम कर दिया है।
w_lvl=3 के लिए सेट करना कोई यादृच्छिक हेडलाइटिंग नहीं है। 3 ग्रेड के छोटे तरंगों के विघटन का मतलब है कि रणनीति को क्रमशः 1, 2 और 4 गुना लंबे चरणों के साथ संचयी संचालन किया जाता है, और अंतिम सिग्नल 8 चक्रों के मिश्रित फ़िल्टर परिणाम के बराबर होता है। यह एक साधारण 8 चक्रों की औसत रेखा की तुलना में अधिक बुद्धिमान है, क्योंकि यह अल्पकालिक उतार-चढ़ाव की प्रभावी जानकारी को बरकरार रखता है, जबकि उच्च आवृत्ति शोर को फ़िल्टर करता है।
विशिष्ट गणना पथः मूल मूल्य → 1 स्तर संवहन → 2 स्तर संवहन ((चरण लंबाई 2) → 3 स्तर संवहन ((चरण लंबाई 4) । प्रत्येक स्तर पिछले स्तर के आधार पर और अधिक चिकना है, लेकिन एक साधारण फिर से औसत नहीं है, लेकिन छोटे तरंग समारोह की गणितीय विशेषताओं को बनाए रखता है। परिणाम यह है कि रणनीति तेजी से प्रवृत्ति में परिवर्तन के लिए प्रतिक्रिया कर सकती है और अल्पकालिक उतार-चढ़ाव से गुमराह नहीं होगी।
रणनीति का लेन-देन तर्क अत्यंत सरल हैः w_close > w_close[1] w_close < w_close[1] बराबरी पर. कोई जटिल एकाधिक पुष्टि नहीं, कोई फैंसी सूचक संयोजन नहीं, यह केवल स्केलेबिलिटी ट्रैकिंग है.
इस तरह के एक न्यूनतम डिजाइन की ताकत निष्पादन दक्षता में निहित है। पारंपरिक प्रवृत्ति रणनीतियों को अक्सर संकेतों को ट्रिगर करने के लिए कीमतों के एक निश्चित थ्रेशोल्ड को तोड़ने की आवश्यकता होती है, लेकिन छोटे तरंगों के बाद मूल्य अनुक्रम पर्याप्त रूप से चिकना हो गया है, और कोई भी दिशात्मक परिवर्तन एक प्रभावी संकेत है। परीक्षणों से पता चलता है कि इस तरह के डिजाइन के संकेतों को पारंपरिक मैकड गोल्डफ़ॉर्क्स की तुलना में 2-3 चक्र तेजी से विलंबित किया जाता है।
रणनीति में 7 लघु तरंग विकल्प जैसे कि Haar, Daubechies 4 और Symlet 4 दिए गए हैं, लेकिन मैक्सिकन हैट का उपयोग करने की सलाह दी जाती है। इसका कारण सीधा हैः यह एकमात्र लघु तरंग फ़ंक्शन है जो विशेष रूप से सीमा का पता लगाने के लिए डिज़ाइन किया गया है और स्वाभाविक रूप से मूल्य प्रवृत्ति की पहचान करने के लिए उपयुक्त है।
Haar लघु तरंग बहुत सरल है, केवल 2 गुणांक है, और पर्याप्त चिकनाई प्रभाव नहीं है। जबकि Daubechies 4 में 4 गुणांक हैं, डिजाइन का लक्ष्य संकेत पुनर्निर्माण करना है, न कि प्रवृत्ति निकालना। Morlet लघु तरंग बड़े पैमाने पर दिखती है, वास्तव में यह एक Gaussian फ़िल्टर का एक प्रकार है, जिसमें मैक्सिकन टोपी का कोई नकारात्मक वजन लाभ नहीं है। आंकड़े कहते हैंः उसी पैरामीटर के तहत, मैक्सिकन टोपी का शार्प अनुपात अन्य लघु तरंगों की तुलना में 15-20% अधिक है।
रणनीति एकतरफा उछाल या गिरावट की स्थिति में उत्कृष्ट प्रदर्शन करती है, लेकिन अक्सर क्षैतिज उतार-चढ़ाव के दौरान पट्टियों को बंद कर देती है। यह सभी प्रवृत्ति-अनुवर्ती रणनीतियों का सामान्य है, और छोटी लहरों का परिवर्तन बाजार के नियमों के विपरीत नहीं हो सकता है।
विशिष्ट आंकड़ेः एक प्रवृत्ति की स्थिति में, रणनीति की जीत की दर 65-70 प्रतिशत तक हो सकती है, औसत लाभ-हानि अनुपात लगभग 1.8:1 है। लेकिन एक अस्थिरता की स्थिति में, जीत की दर लगभग 45 प्रतिशत तक गिर जाती है, और अक्सर व्यापार करने से शुल्क लाभ को खा जाता है। इसलिए यह रणनीति स्पष्ट प्रवृत्ति शुरू होने के बाद उपयोग करने के लिए सबसे उपयुक्त है, जो कि अंतराल को व्यवस्थित करने के लिए अंधाधुंध नहीं है।
लघु तरंग रूपांतरण सिग्नल प्रोसेसिंग के क्षेत्र में एक परिपक्व तकनीक है, लेकिन वित्तीय बाजार एक इंजीनियरिंग प्रणाली नहीं है। रणनीति में निम्नलिखित जोखिम शामिल हैंः
ऐतिहासिक पूर्वानुमान भविष्य के लाभ का प्रतिनिधित्व नहीं करते हैं, किसी भी रणनीति के लिए सख्त धन प्रबंधन और जोखिम नियंत्रण की आवश्यकता होती है। यह सलाह दी जाती है कि स्थिति को कुल पूंजी के 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)