
यह रणनीति कीमतों में चिकनी उतार-चढ़ाव पर आधारित है, जो मूल्य लक्ष्य बैंड उत्पन्न करती है और जब कीमत लक्ष्य बैंड को पार करती है, तो एक व्यापार संकेत उत्पन्न करती है।
यह रणनीति पहले एक निश्चित अवधि के दौरान कीमतों के औसत उतार-चढ़ाव की गणना करती है, फिर निर्देशांक चलती औसत के माध्यम से उतार-चढ़ाव की मात्रा को चिकना करती है, जिससे चिकनी उतार-चढ़ाव की दर उत्पन्न होती है। चिकनी उतार-चढ़ाव की दर को एक कारक से गुणा करने के बाद, लक्ष्य बैंड की सीमा प्राप्त होती है। जब कीमत लक्ष्य बैंड को पार करती है, तो एक खरीद संकेत उत्पन्न होता है; जब कीमत लक्ष्य बैंड को पार करती है, तो एक बिक्री संकेत उत्पन्न होता है।
विशेष रूप से, रणनीति में smoothrng फ़ंक्शन के माध्यम से चिकनी उतार-चढ़ाव smrng की गणना की जाती है, और फिर smrng मान के आधार पर लक्ष्य बैंड के ऊपर और नीचे के hband और lband की गणना की जाती है। इस आधार पर, एक लंबी स्थिति और एक छोटी स्थिति की स्थिति निर्धारित की जाती है। जब लंबी स्थिति की स्थिति पूरी हो जाती है, तो एक खरीद संकेत उत्पन्न होता है; जब छोटी स्थिति की स्थिति पूरी हो जाती है, तो एक बिक्री संकेत उत्पन्न होता है।
इस रणनीति के निम्नलिखित फायदे हैं:
मूल्य उतार-चढ़ाव का उपयोग करके ट्रेडिंग सिग्नल का निर्माण करें, जिससे बाजार में बदलाव को प्रभावी ढंग से ट्रैक किया जा सके।
सूचकांक के माध्यम से चलती औसत को चिकना उतार-चढ़ाव, शोर को फ़िल्टर करें और अधिक विश्वसनीय व्यापारिक संकेत उत्पन्न करें।
लक्ष्य बैंड सीमा को अस्थिरता गुणांक के माध्यम से समायोजित किया जा सकता है ताकि रणनीति अधिक लचीली हो सके।
मूल्य में ब्रेकआउट के साथ, ट्रेडों को ट्रेंड में बदलाव के समय पकड़ने का अवसर मिलता है।
इस रणनीति के कुछ जोखिम भी हैं:
जब बाजार में असामान्य उतार-चढ़ाव होता है, तो चिकनाई की उतार-चढ़ाव दर वास्तविक उतार-चढ़ाव को सटीक रूप से प्रतिबिंबित नहीं कर सकती है, जिससे गलत संकेत मिलते हैं। मॉडल को पैरामीटर को समायोजित करके अनुकूलित किया जा सकता है।
लक्ष्य बैंड सीमा यदि गलत तरीके से सेट की जाती है, तो यह ट्रेडिंग की उच्च आवृत्ति या अपर्याप्त सिग्नल का कारण बन सकता है। इष्टतम सीमा खोजने के लिए विभिन्न मापदंडों का परीक्षण किया जा सकता है।
ब्रेकडाउन सिग्नल का निर्णय समय में देरी के कारण हो सकता है, जिससे प्रवेश बहुत जल्दी या बहुत देर से हो सकता है। इसकी पुष्टि अन्य संकेतकों के साथ की जा सकती है।
इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः
विभिन्न मूल्य डेटा चक्रों का परीक्षण करें और सबसे उपयुक्त आवधिक पैरामीटर का पता लगाएं जो अस्थिरता की गणना करता है।
विभिन्न चलती औसत एल्गोरिदम का प्रयास करें, जैसे कि रैखिक भारित चलती औसत।
ट्रेडिंग वॉल्यूम या अन्य संकेतकों को शामिल करें जो ब्रेकआउट सिग्नल की पुष्टि करते हैं।
एकल स्टॉप को नियंत्रित करने के लिए स्टॉप या ट्रेलिंग स्टॉप सेट करें।
इष्टतम लक्ष्य बैंड की सीमा निर्धारित करने के लिए अस्थिरता गुणांक mult के मानों का अनुकूलन करें।
इस रणनीति के समग्र विचार स्पष्ट है, कीमतों में उतार-चढ़ाव के माध्यम से लक्ष्य बैंड का निर्माण, कीमतों में ब्रेकडाउन का उपयोग व्यापार संकेत उत्पन्न करने के लिए, बाजार में परिवर्तन के रुझान को प्रभावी ढंग से ट्रैक करने के लिए। लेकिन कुछ सुधार की जगह भी है, पैरामीटर अनुकूलन, पुष्टि संकेतकों की शुरूआत आदि के माध्यम से रणनीति को अधिक स्थिर और विश्वसनीय बनाने के लिए।
/*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")