यह रणनीति कीमतों की अस्थिरता के आधार पर मूल्य बैंड उत्पन्न करती है, और जब कीमत बैंडों को तोड़ती है तो ट्रेडिंग सिग्नल उत्पन्न करती है।
रणनीति पहले एक निश्चित अवधि में कीमत की औसत अस्थिरता सीमा की गणना करती है, फिर एक घातीय चलती औसत का उपयोग करके अस्थिरता सीमा को चिकनी अस्थिरता उत्पन्न करने के लिए चिकनी करती है। एक गुणांक से गुणा की गई चिकनी अस्थिरता बैंड की सीमा देती है। जब कीमत ऊपरी बैंड से ऊपर टूटती है, तो एक खरीद संकेत उत्पन्न होता है। जब कीमत निचले बैंड से नीचे टूटती है, तो एक बिक्री संकेत उत्पन्न होता है।
विशेष रूप से, चिकनी अस्थिरता smrng smoothhrng फ़ंक्शन द्वारा गणना की जाती है। मूल्य बैंड के ऊपरी बैंड hband और निचले बैंड lband की गणना तब smrng के आधार पर की जाती है। उस पर आधारित लंबी स्थिति longCondition और छोटी स्थिति shortCondition सेट की जाती है। जब longCondition पूरा होता है, तो एक खरीद संकेत उत्पन्न होता है। जब shortCondition पूरा होता है, तो एक बिक्री संकेत उत्पन्न होता है।
इस रणनीति के लाभ इस प्रकार हैंः
ट्रेडिंग सिग्नल बनाने के लिए कीमतों की अस्थिरता का उपयोग करके बाजार परिवर्तनों को प्रभावी ढंग से ट्रैक किया जा सकता है।
घातीय चलती औसत के साथ अस्थिरता को समतल करना शोर को फ़िल्टर कर सकता है और अधिक विश्वसनीय ट्रेडिंग संकेत उत्पन्न कर सकता है।
अस्थिरता गुणांक के माध्यम से बैंड की सीमा को समायोजित किया जा सकता है, जिससे रणनीति अधिक लचीली हो जाती है।
ब्रेकआउट जजमेंट के साथ मिलकर यह ट्रेडिंग के अवसरों को समय पर पकड़ सकता है जब रुझान उलट जाता है।
इस रणनीति में कुछ जोखिम भी हैंः
असामान्य बाजार अस्थिरता में, समतल अस्थिरता वास्तविक अस्थिरता को सटीक रूप से प्रतिबिंबित करने में विफल हो सकती है, जिससे गलत संकेत मिलते हैं। मॉडल को बेहतर बनाने के लिए मापदंडों को अनुकूलित किया जा सकता है।
गलत बैंड रेंज सेटिंग से ओवरट्रेडिंग या अपर्याप्त संकेत हो सकते हैं। इष्टतम रेंज खोजने के लिए विभिन्न मापदंडों का परीक्षण किया जा सकता है।
ब्रेकआउट सिग्नल में समय का विलंब होता है, जिसके कारण समय से पहले प्रवेश या देर से प्रवेश हो सकता है। पुष्टि के लिए अन्य संकेतक पेश किए जा सकते हैं।
रणनीति को निम्न के माध्यम से अनुकूलित किया जा सकता हैः
अस्थिरता की गणना के लिए सबसे उपयुक्त अवधि खोजने के लिए विभिन्न मूल्य डेटा चक्रों का परीक्षण करना।
विभिन्न चलती औसत एल्गोरिदम की कोशिश कर रहा है जैसे भारित चलती औसत।
ब्रेकआउट संकेतों की पुष्टि के लिए ट्रेडिंग वॉल्यूम या अन्य संकेतकों का परिचय।
ट्रेड प्रति घाटे को नियंत्रित करने के लिए स्टॉप लॉस या ट्रेलिंग स्टॉप सेट करना।
इष्टतम बैंड रेंज निर्धारित करने के लिए अस्थिरता गुणांक मल्टी का अनुकूलन करना।
इस रणनीति का समग्र तर्क स्पष्ट है, मूल्य अस्थिरता का उपयोग बैंड बनाने और मूल्य ब्रेकआउट को ट्रेडिंग सिग्नल उत्पन्न करने के लिए किया जाता है, जो प्रभावी रूप से बाजार की प्रवृत्ति परिवर्तनों को ट्रैक कर सकते हैं। लेकिन रणनीति को अधिक मजबूत बनाने के लिए पैरामीटर अनुकूलन, सिग्नल पुष्टि आदि के माध्यम से सुधार के लिए जगह है।
/*backtest start: 2023-01-22 00:00:00 end: 2024-01-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("1SmSm1 Strategy", shorttitle="1SmSm1", overlay=true) // Source src = input(defval=close, title="Source") // Sampling Period per = input(defval=100, minval=1, title="Sampling Period") // Range Multiplier mult = input(defval=3.0, minval=0.1, title="Range Multiplier") // Smooth Average Range smoothrng(x, t, m) => wper = (t * 2) - 1 avrng = ema(abs(x - x[1]), t) smoothrng = ema(avrng, wper) * m smoothrng smrng = smoothrng(src, per, mult) // Range Filter rngfilt(x, r) => rngfilt = x rngfilt := x > nz(rngfilt[1]) ? ((x - r) < nz(rngfilt[1]) ? nz(rngfilt[1]) : (x - r)) : ((x + r) > nz(rngfilt[1]) ? nz(rngfilt[1]) : (x + r)) rngfilt filt = rngfilt(src, smrng) // Filter Direction upward = 0.0 upward := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1]) downward = 0.0 downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1]) // Target Bands hband = filt + smrng lband = filt - smrng // Breakouts longCondition = (src > filt) and (src > src[1]) and (upward > 0) shortCondition = (src < filt) and (src < src[1]) and (downward > 0) strategy.entry("Buy", strategy.long, when = longCondition) strategy.entry("Sell", strategy.short, when = shortCondition) // Plotting plot(filt, color=upward > 0 ? color.lime : downward > 0 ? color.red : color.orange, linewidth=3, title="Range Filter") hbandplot = plot(hband, color=color.aqua, transp=100, title="High Target") lbandplot = plot(lband, color=color.fuchsia, transp=100, title="Low Target") // Fills fill(hbandplot, lbandplot, color=color.aqua, title="Target Range") // Bar Color barcolor(longCondition ? color.green : shortCondition ? color.red : na) // Alerts alertcondition(longCondition, title="Buy Alert", message="BUY") alertcondition(shortCondition, title="Sell Alert", message="SELL")