
सुपर ट्रेंड डेली रिवर्सल स्ट्रैटेजी (Super Trend Daily Reversal Strategy) एक बाजार की प्रवृत्ति का आकलन करने के लिए सुपर ट्रेंड इंडिकेटर का उपयोग करने वाली एक मात्रात्मक ट्रेडिंग रणनीति है, जिसमें मूल्य ब्रेकआउट और औसत वास्तविक अस्थिरता सीमा की गणना की जाती है, और सुपर ट्रेंड सिग्नल को फ़िल्टर करने के लिए मूल्य परिवर्तन दर इंडिकेटर का उपयोग किया जाता है। यह रणनीति डिजिटल मुद्रा और शेयर जैसे बाजारों के लिए उपयुक्त है।
इस रणनीति का केंद्रीय संकेतक सुपर ट्रेंड संकेतक है। सुपर ट्रेंड संकेतक औसत वास्तविक उतार-चढ़ाव की सीमा पर आधारित है। एटीआर, बाजार की प्रवृत्ति की दिशा को अधिक स्पष्ट रूप से निर्धारित करने में मदद करता है। जब कीमत सुपर ट्रेंड को पार करती है, तो यह गिरावट का संकेत देता है।
यह रणनीति सुपरट्रेंड सिग्नल को फ़िल्टर करने के लिए मूल्य परिवर्तन दर सूचक (आरओसी) का उपयोग करती है ताकि अप्रभावी संकेतों से बचा जा सके। सुपरट्रेंड सिग्नल में भाग लेने के लिए जब कीमत में उतार-चढ़ाव अधिक होता है, अन्यथा भाग नहीं लेते हैं।
स्टॉप के लिए, रणनीति दो प्रकार के स्टॉप प्रदान करती हैः एक निश्चित स्टॉप अनुपात और एटीआर-आधारित ऑटो-स्क्रैपिंग स्टॉप। फिक्स्ड स्टॉप सरल और सीधा है, एटीआर स्टॉप बाजार की अस्थिरता के आधार पर स्टॉप रेंज को समायोजित कर सकता है।
प्रविष्टि शर्त यह है कि सुपरट्रेंड सूचक उलटा है और मूल्य परिवर्तन दर सूचक फ़िल्टर के माध्यम से चला जाता है। बाहर निकलने की शर्त यह है कि सुपरट्रेंड फिर से उलटा है या स्टॉपलॉस लाइन को तोड़ता है। यह रणनीति ट्रेंड ट्रैकिंग सिद्धांत का पालन करती है और प्रत्येक दिशा में केवल एक ही स्थिति की अनुमति देती है।
इस रणनीति का सबसे बड़ा लाभ यह है कि सुपर ट्रेंडिंग सूचक का उपयोग करके प्रवृत्ति की दिशा का निर्धारण करने के लिए स्पष्टता और स्थिरता अधिक है, और सामान्य चलती औसत की तुलना में कम शोर है। इसके अलावा, रणनीति में शामिल मूल्य परिवर्तन दर सूचक ने कुछ झूठे संकेतों को प्रभावी ढंग से फ़िल्टर कर दिया है।
एटीआर स्व-अनुकूली रोकथाम तंत्र भी इस रणनीति को व्यापक बाजार स्थितियों के अनुकूल बनाता है। जब उतार-चढ़ाव बढ़ जाता है, तो रोकथाम स्वचालित रूप से कम हो जाती है, जिससे लाभ को अधिकतम किया जा सकता है।
परीक्षण के परिणामों के अनुसार, यह रणनीति बैल बाजारों में उत्कृष्ट प्रदर्शन करती है। बड़ी मात्रा में लंबी रेखा रुझानों में जीतने की उच्च दर, लंबे समय तक लगातार लाभदायक चक्र।
इस रणनीति के लिए मुख्य जोखिम प्रवृत्ति को उलटने में गलतफहमी है, जो एक उलटा सिग्नल को याद कर सकता है या अनावश्यक उलटा सिग्नल उत्पन्न कर सकता है। यह आमतौर पर तब होता है जब कीमतें महत्वपूर्ण समर्थन या प्रतिरोध क्षेत्रों के पास बार-बार क्रॉसओवर करती हैं।
इसके अलावा, बहुत ढीला रोक सेटिंग भी नुकसान का विस्तार करने का कारण बन सकता है। एटीआर रोक बाजार की अस्थिरता के अनुसार समायोजित किया जाता है, इसलिए बाजार में अचानक घटनाओं के दौरान रोक अधिक व्यापक है।
उपरोक्त जोखिमों के लिए, एटीआर गणना चक्र को कम किया जा सकता है या एटीआर को रोकने के लिए गुणांक को समायोजित किया जा सकता है। महत्वपूर्ण समर्थन प्रतिरोध क्षेत्रों को निर्धारित करने के लिए अतिरिक्त संकेतकों को जोड़ा जा सकता है ताकि उन क्षेत्रों से भ्रामक संकेतों को रोका जा सके।
इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
सुपर ट्रेंड इंडिकेटर के पैरामीटर को समायोजित करना, एटीआर चक्र और एटीआर गुणांक को अनुकूलित करना, सुपर ट्रेंड लाइन को अधिक चिकना बनाना।
मूल्य परिवर्तन दर सूचक के पैरामीटर को समायोजित करें, अनुकूलन चक्र और परिवर्तन दर थ्रेशोल्ड, झूठे संकेतों को कम करें।
विभिन्न रोकथाम तंत्रों को आज़माएं, जैसे कि रोकथाम को ट्रैक करना, या निश्चित रोकथाम के लिए रोकथाम को अनुकूलित करना।
अतिरिक्त निर्णय सूचकांक जोड़ें, महत्वपूर्ण समर्थन प्रतिरोधों की पहचान करें, और प्रवृत्ति के उलट निर्णय की गलतियों से बचें।
विभिन्न किस्मों के पैरामीटर सेटिंग्स और प्रभावों का परीक्षण करें, सबसे अच्छा पैरामीटर संयोजन ढूंढें।
सबसे अच्छा पैरामीटर सेटिंग खोजने के लिए फीडबैक अनुकूलन।
सुपरट्रेंड डेली रिवर्स रणनीति एक अधिक स्थिर और विश्वसनीय ट्रेंड ट्रैकिंग रणनीति है। यह सुपरट्रेंड संकेतक और मूल्य परिवर्तन दर संकेतक के संयोजन के साथ फ़िल्टर की जाती है, जो मध्य-लंबी प्रवृत्ति की दिशा को प्रभावी ढंग से पहचान सकती है। एटीआर स्व-अनुकूली रोकथाम तंत्र भी इसे अधिकांश बाजार की स्थिति के अनुकूल बनाता है। पैरामीटर सेटिंग को और अनुकूलित करके और निर्णय संकेतक को बढ़ाकर, रणनीति की स्थिरता और लाभप्रदता को बढ़ाया जा सकता है।
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Super Trend Daily BF 🚀", overlay=true, precision=2, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)
/////////////// Time Frame ///////////////
_1 = input(false, "════════ Test Period ═══════")
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
testPeriod() => true
///////////// Super Trend /////////////
_2 = input(false, "══════ Super Trend ══════")
length = input(title="ATR Period", type=input.integer, defval=3)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=1.3)
atr = mult * atr(length)
longStop = hl2 - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = hl2 + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and close > shortStopPrev ? 1 : dir == 1 and close < longStopPrev ? -1 : dir
///////////// Rate Of Change /////////////
_3 = input(false, "══════ Rate of Change ══════")
source = close
roclength = input(30, "ROC Length", minval=1)
pcntChange = input(6, "ROC % Change", minval=1)
roc = 100 * (source - source[roclength]) / source[roclength]
emaroc = ema(roc, roclength / 2)
isMoving() => emaroc > (pcntChange / 2) or emaroc < (0 - (pcntChange / 2))
/////////////// Strategy ///////////////
long = dir == 1 and dir[1] == -1 and isMoving()
short = dir == -1 and dir[1] == 1 and isMoving()
last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)
last_open_long_signal = 0.0
last_open_short_signal = 0.0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])
last_long_signal = 0.0
last_short_signal = 0.0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])
in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal
last_high = 0.0
last_low = 0.0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])
since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1])
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1])
/////////////// Dynamic ATR Stop Losses ///////////////
_4 = input(false, "════════ Stop Loss ═══════")
SL_type = input("Fixed", options=["Fixed", "ATR Derived"], title="Stop Loss Type")
sl_inp = input(6.0, title='Fixed Stop Loss %') / 100
atrLkb = input(20, minval=1, title='ATR Stop Period')
atrMult = input(1.5, step=0.25, title='ATR Stop Multiplier')
atr1 = atr(atrLkb)
longStop1 = 0.0
longStop1 := short_signal ? na : long_signal ? close - (atr1 * atrMult) : longStop1[1]
shortStop1 = 0.0
shortStop1 := long_signal ? na : short_signal ? close + (atr1 * atrMult) : shortStop1[1]
slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na
slShort = strategy.position_avg_price * (1 + sl_inp)
long_sl = in_long_signal ? slLong : na
short_sl = in_short_signal ? slShort : na
/////////////// Execution ///////////////
if testPeriod()
strategy.entry("L", strategy.long, when=long)
strategy.entry("S", strategy.short, when=short)
strategy.exit("L SL", "L", stop = SL_type == "Fixed" ? long_sl : longStop1, when=since_longEntry > 0)
strategy.exit("S SL", "S", stop = SL_type == "Fixed" ? short_sl : shortStop1, when=since_shortEntry > 0)
/////////////// Plotting ///////////////
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)
bgcolor(isMoving() ? dir == 1 ? color.lime : color.red : color.white , transp=80)