सुपर ट्रेंड डेली रिवर्सल रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-22 16:22:28
टैगः

img

अवलोकन

सुपर ट्रेंड डेली रिवर्सल रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जो बाजार के रुझानों को निर्धारित करने के लिए सुपर ट्रेंड संकेतक का उपयोग करती है, स्टॉप लॉस की गणना करने के लिए मूल्य सफलता और औसत सच्ची सीमा को जोड़ती है, और सुपर ट्रेंड संकेतों को फ़िल्टर करने के लिए मूल्य परिवर्तन दर संकेतक का उपयोग करती है। यह रणनीति दैनिक और उच्च समय सीमाओं के लिए उपयुक्त है और क्रिप्टोकरेंसी और शेयरों जैसे बाजारों में इस्तेमाल की जा सकती है।

रणनीति तर्क

इस रणनीति का मुख्य संकेतक सुपर ट्रेंड संकेतक है। सुपर ट्रेंड संकेतक औसत सच्ची सीमा (एटीआर) पर आधारित है और बाजार के रुझानों की दिशा को अधिक स्पष्ट रूप से निर्धारित कर सकता है। सुपर ट्रेंड ऊपरी रेल का टूटना एक छोटा संकेत है, और निचले रेल का टूटना एक लंबा संकेत है।

रणनीति अमान्य संकेतों से बचने के लिए सुपर ट्रेंड संकेतक को फ़िल्टर करने के लिए मूल्य परिवर्तन दर (आरओसी) संकेतक का उपयोग करती है। केवल जब मूल्य अस्थिरता बड़ी होती है, तब सुपर ट्रेंड संकेतों में भाग लें, अन्यथा भाग न लें।

स्टॉप लॉस के लिए, रणनीति दो स्टॉप लॉस तरीके प्रदान करती हैः फिक्स्ड स्टॉप लॉस प्रतिशत और एटीआर आधारित अनुकूलन स्टॉप लॉस। फिक्स्ड स्टॉप लॉस सरल और प्रत्यक्ष है। एटीआर स्टॉप लॉस बाजार की अस्थिरता के अनुसार स्टॉप लॉस रेंज को समायोजित कर सकता है।

प्रवेश की शर्तें सुपर ट्रेंड इंडिकेटर का उलट है और मूल्य परिवर्तन दर सूचक फ़िल्टर से गुजरता है। निकास की शर्तें यह हैं कि सुपर ट्रेंड फिर से उलट जाता है या स्टॉप लॉस लाइन को तोड़ देता है। रणनीति ट्रेंड ट्रैकिंग सिद्धांत का पालन करती है और प्रत्येक दिशा में केवल एक स्थिति की अनुमति देती है।

लाभ विश्लेषण

इस रणनीति का सबसे बड़ा लाभ यह है कि सुपर ट्रेंड इंडिकेटर में सामान्य चलती औसत की तुलना में ट्रेंड की दिशा का न्याय करने में अधिक स्पष्टता और स्थिरता है, कम शोर के साथ। इसके अलावा, मूल्य परिवर्तन दर संकेतक कुछ झूठे संकेतों को प्रभावी ढंग से फ़िल्टर करता है।

एटीआर अनुकूली स्टॉप लॉस तंत्र भी रणनीति को व्यापक बाजार वातावरण में अनुकूलित करने की अनुमति देता है। लाभ को अधिकतम करने के लिए बढ़ी हुई अस्थिरता के दौरान स्टॉप लॉस स्वचालित रूप से व्यापक हो जाएगा।

परीक्षण के परिणामों से यह रणनीति तेजी के बाजार में असाधारण रूप से अच्छा प्रदर्शन करती है। लंबे समय तक लगातार लाभदायक चक्रों के साथ महत्वपूर्ण परिमाण के दीर्घकालिक रुझानों में जीत की दर बहुत अधिक है।

जोखिम विश्लेषण

इस रणनीति के सामने मुख्य जोखिम प्रवृत्ति उलट का गलत आकलन है, जो उलट संकेतों को याद कर सकता है या अनावश्यक उलट संकेत उत्पन्न कर सकता है। यह अक्सर तब होता है जब कीमतें महत्वपूर्ण समर्थन / प्रतिरोध क्षेत्रों के आसपास दोलन और समेकित होती हैं।

इसके अतिरिक्त, एक स्टॉप लॉस जो बहुत चौड़ा सेट किया गया है, उससे भी अधिक नुकसान हो सकता है। एटीआर स्टॉप लॉस बाजार की अस्थिरता के अनुसार समायोजित होता है, इसलिए बाजार की घटनाओं के दौरान स्टॉप को चौड़ा खींचा जा सकता है।

इन जोखिमों से निपटने के लिए एटीआर गणना अवधि को उचित रूप से छोटा किया जा सकता है या एटीआर स्टॉप लॉस गुणक को समायोजित किया जा सकता है। उन क्षेत्रों से भ्रामक संकेतों से बचने के लिए प्रमुख समर्थन/प्रतिरोध क्षेत्रों को निर्धारित करने के लिए अतिरिक्त संकेतक भी जोड़े जा सकते हैं।

अनुकूलन दिशाएँ

इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः

  1. एटीआर अवधि और एटीआर गुणकों को अनुकूलित करने के लिए सुपर ट्रेंड सूचक के मापदंडों को समायोजित करें ताकि सुपर ट्रेंड लाइन को चिकनी बनाया जा सके।

  2. झूठे संकेतों को कम करने के लिए अवधि और परिवर्तन दर की सीमा को अनुकूलित करने के लिए मूल्य परिवर्तन दर संकेतक के मापदंडों को समायोजित करें।

  3. विभिन्न स्टॉप लॉस तंत्रों जैसे ट्रेसिंग स्टॉप का प्रयास करें, या निश्चित स्टॉप के स्टॉप लॉस आयाम को अनुकूलित करें।

  4. मुख्य समर्थन/प्रतिरोध निर्धारित करने और प्रवृत्ति उलटने के गलत आकलन से बचने के लिए अतिरिक्त निर्णय संकेतक जोड़ें।

  5. इष्टतम पैरामीटर संयोजन खोजने के लिए विभिन्न उत्पादों पर पैरामीटर सेटिंग्स और प्रभावों का परीक्षण करें।

  6. सर्वोत्तम पैरामीटर सेटिंग्स खोजने के लिए बैकटेस्ट अनुकूलन करें.

निष्कर्ष

कुल मिलाकर, सुपर ट्रेंड डेली रिवर्सल रणनीति एक अपेक्षाकृत स्थिर और विश्वसनीय प्रवृत्ति के बाद की रणनीति है। यह सुपर ट्रेंड संकेतक और फ़िल्टरिंग के लिए मूल्य परिवर्तन दर संकेतक को जोड़ती है, जो मध्यम और दीर्घकालिक रुझानों की दिशा को प्रभावी ढंग से पहचान सकती है। एटीआर अनुकूलन स्टॉप लॉस तंत्र भी इसे अधिकांश बाजार वातावरण के अनुकूल होने में सक्षम बनाता है। पैरामीटर सेटिंग्स और जोड़े गए निर्णय संकेतकों के आगे अनुकूलन के माध्यम से, इस रणनीति की स्थिरता और लाभप्रदता में सुधार किया जा सकता है।


/*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)

अधिक