आर.एस.आई. गति उलटा करने की रणनीति

लेखक:चाओझांग, दिनांक: 2023-11-07 15:45:15
टैगः

img

अवलोकन

आरएसआई मोमेंटम रिवर्सल रणनीति रिवर्सल ट्रेडिंग के लिए आरएसआई संकेतकों और कैंडलस्टिक बॉडी दिशाओं को मिलाकर ओवरबॉट और ओवरसोल्ड स्थितियों की पहचान करती है। यह रणनीति प्रभावी ढंग से रिवर्सल अवसरों की पहचान करने के लिए कैंडलस्टिक बॉडी फिल्टर के साथ पारंपरिक आरएसआई और तेजी से आरएसआई दोनों का उपयोग करती है।

रणनीति तर्क

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

  1. Connors आरएसआई संकेतक

    पारंपरिक आरएसआई, आरएसआई जीत अनुपात, और आरएसआई पेरिस की गणना करता है एक औसत के रूप में कॉनर्स आरएसआई प्राप्त करने के लिए.

  2. तेज आरएसआई सूचक

    तेजी से आरएसआई की गणना करने के लिए मूल्य परिवर्तन का उपयोग करता है, जो अति अल्पकालिक चक्रों को दर्शाता है।

  3. कैंडलस्टीक बॉडी फ़िल्टर

    झूठे ब्रेकआउट को रोकने के लिए लंबे समय के लिए तेजी से बढ़ने और छोटे समय के लिए गिरावट की आवश्यकता होती है।

  4. लंबी और छोटी शर्तें

    जब कॉनर का आरएसआई 20 से कम हो और तेजी से आरएसआई 25 से कम हो तो तेजी से बढ़े हुए शरीर के साथ लंबा करें।

    जब कॉनर का आरएसआई 80 से ऊपर हो और तेजी से आरएसआई 75 से ऊपर हो तो कम करें।

  5. स्टॉप लॉस आउट

    जब कैंडलस्टिक शरीर घूमता है तो स्टॉप लॉस के साथ बाहर निकलता है।

कॉनर आरएसआई दीर्घकालिक रुझान उलट बिंदुओं की पहचान करता है, तेजी से आरएसआई अल्पकालिक उलट बिंदुओं की पहचान करता है, और कैंडलस्टिक बॉडी ब्रेकआउट की वैधता सुनिश्चित करता है। यह प्रभावी रूप से उलट अवसरों का पता लगाने और ओवरबॉट और ओवरसोल्ड स्थितियों के दौरान काउंटर-ट्रेंड ट्रेड करने की अनुमति देता है।

लाभ विश्लेषण

इस रणनीति के लाभों में निम्नलिखित शामिल हैंः

  1. दीर्घकालिक और अल्पकालिक संकेतकों का संयोजन

    कॉनर्स आरएसआई दीर्घकालिक चक्रों को दर्शाता है और तेज आरएसआई अल्पकालिक चक्रों को दर्शाता है, दोनों को मिलाकर उलट बिंदुओं की सटीक पहचान की जा सकती है।

  2. कैंडलस्टीक बॉडी फ़िल्टर

    केवल शरीर के ब्रेकआउट पर व्यापार करना झूठे ब्रेकआउट से होने वाले नुकसान को कम कर सकता है।

  3. समायोज्य मापदंड

    आरएसआई पैरामीटर, ट्रेडिंग उत्पाद और ट्रेडिंग समय सीमा को विभिन्न बाजारों के अनुरूप स्वतंत्र रूप से समायोजित किया जा सकता है।

  4. सरल और सहज ज्ञान युक्त

    आरएसआई और कैंडलस्टिक बॉडी बुनियादी संकेतक हैं, समझने में आसान तर्क।

  5. लागू करने में आसान

    केवल अंतर्निहित संकेतकों का उपयोग करता है, कम कोड की आवश्यकता होती है और लागू करना आसान होता है।

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

इस रणनीति के मुख्य जोखिम:

  1. असफल रिवर्स जोखिम

    प्रतिवर्तन संकेत के बाद कीमत मूल प्रवृत्ति को जारी रखती है, जिससे नुकसान होता है।

  2. बाजार जोखिम

    विभिन्न बाजारों में लगातार अप्रभावी संकेत।

  3. झूठा ब्रेकआउट जोखिम

    कैंडलस्टीक बॉडी फिल्टर झूठे ब्रेकआउट से पूरी तरह बच नहीं सकता है।

  4. पैरामीटर जोखिम

    अनुचित आरएसआई पैरामीटर ट्रेडों को मिस कर सकते हैं या कई अप्रभावी ट्रेडों को ट्रिगर कर सकते हैं।

  5. विशेष बाजार स्थितियों का जोखिम

    आरएसआई संकेतक विशेष बाजार स्थितियों में विफल हो सकते हैं और गलत संकेत उत्पन्न कर सकते हैं।

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

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

  1. स्टॉप लॉस तंत्र जोड़ें

    अधिक उचित स्टॉप के लिए स्टॉप लॉस रणनीतियों को अनुकूलित करें, एकल व्यापार घाटे को कम करें।

  2. कई संकेतकों को एकीकृत करें

    संकेतों को अधिक विश्वसनीय बनाने के लिए एमएसीडी और केडी जैसे फ़िल्टर जोड़ें।

  3. संभावना फ़िल्टर जोड़ें

    कम संभावना वाले ट्रेडों से बचने के लिए ट्रेंड, सपोर्ट/रेसिस्टेंस विश्लेषण को मिलाएं।

  4. पैरामीटर सेटिंग्स अनुकूलित करें

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

  5. विशेष बाजार स्थितियों से बचें

    भारी घाटे से बचने के लिए विशेष बाजार स्थितियों में व्यापार की पहचान करें और उससे बचें।

निष्कर्ष

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


/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Connors RSI Strategy v1.0", shorttitle = "CRSI str 1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usecrsi = input(true, defval = true, title = "Use CRSI Strategy")
usefrsi = input(true, defval = true, title = "Use FRSI Strategy")
usemod = input(true, defval = true, title = "CRSI+FRSI Mode")
limit = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit")
usebod = input(true, defval = true, title = "Use Body-filter")
usecol = input(true, defval = true, title = "Use Color-filter")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//CRSI
rsilen = 3
streaklen = 2
lookback = 100
rsi = rsi(close,rsilen)
upday = close > close[1] ? 1 : 0
downday = close < close[1] ? -1 : 0
upstreak = upday!=0 ? upstreak[1] + upday : 0
downstreak = downday!=0 ? downstreak[1] + downday : 0
streak = upstreak + downstreak
streakrsi = rsi(streak,streaklen)
roc = close/close[1] - 1
roccount = 0
for i=1 to lookback-1
    roccount := roc[i]<roc ? roccount + 1 : roccount
crsi = (rsi + streakrsi + roccount) / 3

//Oscilator
// rsiplot = plot(crsi, title="RSI", style=line, linewidth=1, color=blue)
// band1 = hline(80, title="Upper Line", linestyle=dashed, linewidth=1, color=red)
// band0 = hline(20, title="Lower Line", linestyle=dashed, linewidth=1, color=green)
// fill(band1, band0, color=purple, transp=90)

//Fast RSI
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false

//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0
gbar = bar == 1 or usecol == false
rbar = bar == -1 or usecol == false

//Signals

up1 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and crsi < limit and body and usecrsi
dn1 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and crsi > 100 - limit and body and usecrsi
up2 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and fastrsi < limit and body and usefrsi
dn2 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and fastrsi > 100 - limit and body and usefrsi
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if ((up1 or up2) and usemod == false) or (up1 and up2 and usemod)
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if ((dn1 or dn2) and usemod == false) or (dn1 and dn2 and usemod)
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if  exit
    strategy.close_all()

अधिक