आरएसआई रिवर्सल ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांक: 2023-09-28 16:09:39
टैगः

अवलोकन

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

रणनीति तर्क

  1. 14 अवधि के आरएसआई की गणना करें और ओवरबॉट लाइन को 67 और ओवरसोल्ड लाइन को 44 पर सेट करें।

  2. जब आरएसआई ओवरबोल्ड लाइन से ऊपर जाता है, तो एक बिक्री संकेत उत्पन्न होता है। जब आरएसआई ओवरबोल्ड लाइन से नीचे जाता है, तो एक खरीद संकेत उत्पन्न होता है।

  3. चलती औसत फ़िल्टर जोड़ें. बिक्री संकेत केवल तब होते हैं जब बंद पिछले दिन के एमए से नीचे होता है; खरीद संकेत केवल तब होते हैं जब बंद पिछले दिन के एमए से ऊपर होता है.

  4. लाभ लेने और स्टॉप-लॉस तर्क शामिल करें। या तो निश्चित बिंदुओं या आरएसआई आधारित निकास का उपयोग किया जा सकता है।

लाभ विश्लेषण

  1. आरएसआई ओवरबॉट/ओवरसोल्ड स्तरों का उपयोग करके अल्पकालिक उलट अवसरों को पकड़ता है।

  2. चलती औसत फ़िल्टर प्रवृत्ति के विरुद्ध व्यापार से बचता है।

  3. लाभ लेने और स्टॉप-लॉस एकल व्यापार हानि को नियंत्रित करता है।

  4. रुझान बदलने के अवसरों को जल्दी पकड़ सकता है।

जोखिम और समाधान

  1. आरएसआई विलंब गलत संकेत का कारण बन सकता है। मापदंडों को समायोजित करें या अन्य संकेतकों के साथ संयोजन करें।

  2. फिक्स्ड स्टॉप-लॉस बहुत चौड़ा या बहुत संकीर्ण हो सकता है.

  3. फिक्स्ड प्रॉफिट टेकिंग बहुत जल्दी या बहुत कम लक्ष्य से बाहर निकल सकती है। आरएसआई या एटीआर आधारित निकास पर विचार करें।

  4. आरएसआई मापदंडों को समायोजित करें या फ़िल्टर जोड़ें।

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

  1. विभिन्न समय सीमाओं पर आरएसआई मापदंडों का परीक्षण करें।

  2. ओवरबॉट/ओवरसोल्ड आरएसआई स्तरों को समायोजित करें।

  3. विभिन्न चलती औसत या अन्य फ़िल्टर का प्रयास करें।

  4. स्थिर बनाम गतिशील लाभ लक्ष्य/स्टॉप का परीक्षण करें।

  5. बाजार की अस्थिरता के अनुरूप लाभ/रोक मूल्य अनुकूलित करें।

  6. विभिन्न बाजारों में चुटकुले से बचने के लिए फ़िल्टर जोड़ें।

  7. सिग्नल की गुणवत्ता में सुधार के लिए कई समय सीमाओं के संगम पर विचार करें।

सारांश

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


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//© профешинил хомячело
//@version = 4

strategy("RSI Strategy Professional Хомячело", overlay=false)
length = input( 14 )
overSold = input( 44 )
overBought = input( 67 )
price = open
rsi = rsi(price, length)
band1 = hline(overSold, "overSold12", color=#C0C0C0)
band0 = hline(overBought, "overBought12", color=#C0C0C0)
plot(rsi, "RSI", color=color.red)
fill(band1, band0, color=color.black, transp=90, title="Background")
src = close
a = sma(src, 1)
aaa = strategy.opentrades + 1

n = input(defval = 0.0576923077, title = "AvgPrice - n")
//n = 0.0576923077

buysignal = crossover(rsi, overSold) and (a < (strategy.position_avg_price - n) or strategy.opentrades == 0)
sellsignal = crossunder(rsi, overBought) and (a > (strategy.position_avg_price + n) or strategy.opentrades == 0)


// crossover(rsi, overSold)
// crossunder(rsi, overBought)
if (not na(rsi))
    if(buysignal)
        strategy.entry("LONG", strategy.long, comment = tostring(a) + "\n(" + tostring(aaa) + ")")
        n += 1000
    if(sellsignal)
        strategy.entry("SHORT", strategy.short, comment = tostring(a) + "\n(" + tostring(aaa) + ")")
        n += 1000

//лонги орні       
    if(rsi < 15 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
        strategy.entry("LONG", strategy.long, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ЛОНГ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
    if(rsi < 20 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
        strategy.entry("LONG", strategy.long, comment = "ЛОНГ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
//шорти орні
    if(rsi > 85 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
        strategy.entry("SHORT", strategy.short, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ШОРТ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
    if(rsi > 80 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
        strategy.entry("SHORT", strategy.short, comment = "ШОРТ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")


//стоп-лосс і ціль

//rsi
rsion = input(defval = false, title = "Тейк-профіт по RSI")
rcl = input(defval = 73.0, title = "RSI тейк по лонгу")
rcs = input(defval = 44.0, title = "RSI тейк по шорту")
possize = input(defval = 250.0, title = "Маржа")
posp = input(defval = 3.0, title = "Плече")

//tick
ut = input(defval = false, title = "Тейк-профіт")
tar = input(defval = 4500.0, title = "Тейк-профіт у тіках")
us = input(defval = false, title = "Стоп-лосс")
stop = input(defval = 0.0, title = "Стоп-лосс у тіках")
tar:=tar/syminfo.mintick
stop:=stop/syminfo.mintick

if(ut==true and us==false)
    strategy.exit(id="LX", from_entry = "LONG", profit = tar, comment = "ТейкL")
    strategy.exit(id="SX", from_entry = "SHORT", profit = tar, comment = "ТейкS")
if(us==true and ut==false)
    strategy.exit(id="LX", from_entry = "LONG", loss = stop, comment = "СтопL")
    strategy.exit(id="SX", from_entry = "SHORT", loss = stop, comment = "СтопS")
    
if(ut==true and us==true)
    strategy.exit(id="LX", from_entry = "LONG", profit = tar, loss = stop, comment ="Тейк/СтопL")
    strategy.exit(id="SX", from_entry = "SHORT", profit = tar, loss = stop, comment ="Тейк/СтопS")
    
//закриття по rsi
if(rsion == 1 )
    pr = round(((a / strategy.position_avg_price - 1) * possize * posp), 2)
    ppr = round(((a / strategy.position_avg_price - 1) * 100 * posp), 2)
    spr = round((1 - (a / strategy.position_avg_price)) * possize * posp, 2)
    sppr = round((100 - (a / strategy.position_avg_price * 100)) * posp, 2)
    
    if(rsi > rcl)
        strategy.close(id="LONG", comment = "LT\n" + tostring(ppr) + "%\n" + tostring(pr) + "$\n" + tostring(a))
    if(rsi < rcs)
        strategy.close(id="SHORT", comment = "ST\n" + tostring(sppr) + "%\n" + tostring(spr) + "$\n" + tostring(a))

अधिक