यह रणनीति रेलेटिव स्ट्रेंथ इंडेक्स (आरएसआई) संकेतक को मोमबत्तियों के पैटर्न के साथ जोड़ती है ताकि जब आरएसआई ओवरबॉट या ओवरसोल्ड स्तर तक पहुंचता है तो ट्रेंड-फॉलोइंग एंट्री सिग्नल की पहचान की जा सके।
आरएसआई मानों की गणना करें, जिसमें 70 ओवरबॉट लाइन और 30 ओवरसोल्ड लाइन के रूप में है।
आरएसआई को 30 से ऊपर पार करना ओवरसोल्ड सिग्नल के रूप में और आरएसआई को 70 से नीचे पार करना ओवरबॉट सिग्नल के रूप में देखें।
जब उपरोक्त संकेत दिखाई दें, तो जांचें कि क्या वर्तमान या पिछली मोमबत्ती विशिष्ट पैटर्न जैसे सफेद/काला मारुबोज़ू, हथौड़ा/लटकता हुआ आदमी आदि बनाती है।
यदि आरएसआई सिग्नल और कैंडलस्टिक दोनों की स्थिति पूरी हो जाती है, तो खरीद/बिक्री सिग्नल उत्पन्न करें।
इसी प्रकार, जब बाउल पैटर्न जैसे कि हथौड़ा होता है, तो ओवरसोल्ड आरएसआई पर खरीदें, और शटर स्टार जैसे मंदी पैटर्न होने पर ओवरबोल्ड आरएसआई पर बेचें।
प्रवेश संकेतों के लिए जटिल संयोजन पैटर्न की पहचान करें जैसे कि चिमटी, सुबह / शाम के सितारे।
आरएसआई मध्य रेखा को पार करने से बाहर निकलने का संकेत मिलता है।
सूचक और पैटर्न के संयोजन से नकली संकेतों को फ़िल्टर किया जाता है और प्रवेश की सटीकता में सुधार होता है।
मोमबत्ती का पैटर्न महत्वपूर्ण रुझान उलट बिंदुओं को पकड़ता है।
आरएसआई ओवरबॉट/ओवरसोल्ड संकेत जीतने के अवसरों को बढ़ाते हैं।
डबल/ट्रिपल कैंडलस्टीक कॉम्बो मजबूत रिवर्स पकड़ते हैं।
आरएसआई क्रॉस मिडलाइन मुनाफे में लॉक करने में मदद करता है।
आरएसआई विलंब पलटाव बिंदुओं को याद कर सकता है।
कुछ मोमबत्तियों के संकेत कमजोर होते हैं और झूठे संकेत देते हैं।
हाल के उच्च/निम्न के आधार पर कोई स्टॉप लॉस नहीं, अनियंत्रित हानि का जोखिम।
कोई पीछे हटने वाला स्टॉप लॉस नहीं, भारी प्रतिकूल चाल नुकसान को बढ़ा सकती है।
अपर्याप्त बैकटेस्ट डेटा पैरामीटर अनुकूलन को भंग कर सकता है।
अन्य फ़िल्टर जैसे एमएसीडी, बोलिंगर बैंड जोड़ें।
स्टॉप लॉस/प्रॉफिट लेने के लिए ट्रेंडलाइन जोड़ें.
बैकटेस्ट परिणामों के आधार पर आरएसआई मापदंडों का अनुकूलन करें।
अनुवर्ती स्टॉप, जोन स्टॉप आदि जैसे स्टॉप को बढ़ाएं।
पैरामीटर की मजबूती का मूल्यांकन करने के लिए लंबे डेटासेट का परीक्षण करें।
विभिन्न उत्पादों और बाजार व्यवस्थाओं के लिए मापदंडों को समायोजित करें।
यह रणनीति रुझान-अनुसरण के लिए ओवरबॉट / ओवरसोल्ड टर्निंग पॉइंट्स पर उच्च गुणवत्ता वाले संकेतों पर प्रवेश करने के लिए आरएसआई और कैंडलस्टिक पैटर्न मान्यता की ताकत को एकीकृत करती है। मजबूत कॉम्बो पैटर्न भी बाधाओं में सुधार करते हैं। लेकिन लेग और झूठे संकेत जैसे जोखिम बने रहते हैं, अन्य तकनीकों और आगे अनुकूलन के साथ संयोजन की आवश्यकता होती है। कुल मिलाकर यह कई जीतने वाले विचारों को मिलाता है और यदि ठीक से पैरामीटरित किया जाता है तो अच्छे परिणाम प्राप्त कर सकता है।
/*backtest start: 2022-09-15 00:00:00 end: 2023-09-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ ///////////////////////////////////// //@version=2 //@author=sb strategy("RSI-candlestick Strategy", overlay=true) src = hlc3, len = input(14, minval=1, title="Length") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) //plot(rsi, color=purple) //band1 = hline(70) //band0 = hline(30) //band2 = hline(50,linestyle=dotted,color=silver) //fill(band1, band0, color=#cc99ff, transp=70) //end premade RSI oversold = rsi < 30 overbought = rsi > 70 barcolor(oversold? #7fff00 : overbought? red : na ) // // level_70 = 70 level_70rsi = rsi > level_70 ? rsi : level_70 level_30 = 30 level_30rsi = rsi < 30 ? rsi : level_30 level_50 = 50 // //p1 = plot(series=level_70, color=red, linewidth=1, transp=100) //p2 = plot(series=level_70rsi, color=red, linewidth=1, transp=100) //p3 = plot(series=level_30, color=green, linewidth=1, transp=100) //p4 = plot(series=level_30rsi, color=green, linewidth=1, transp=100) //fill(p1, p2, color=red, transp=50) //fill(p3, p4, color=#7fff00, transp=50) ///////////////////////////////////// bullishcriteria = input(title="RSI Bullish Criteria", defval=55, minval=50, maxval=100) bearishcriteria = input(title="RSI Bearish Criteria", defval=45, minval=0, maxval=50) range = high - low body = abs(close - open) oc2 = min(close, open) + body/2 upperwick = high - max(open, close) lowerwick = min(open, close) - low isUp = close > open isTrendUp = rsi(close, 14) >= bullishcriteria isTrendDown = rsi(close, 14) <= bearishcriteria isDoji = abs(close-open)/(high-low) < 0.05 // Single Candlestick Pattern // white marubozu wm = (isUp) and (upperwick <= 0.05*body) and (lowerwick <= 0.05*body) and isTrendDown plotshape(wm, color=green, style=shape.triangleup, location=location.belowbar, title='white marubozu',text='wm') if (not na(rsi)) if (crossover(rsi, level_30) and (wm or wm[1])) strategy.entry("RsiLE", strategy.long, comment="RsiLE") // black marubozu bm = (not isUp) and (upperwick <= 0.05*body) and (lowerwick <= 0.05*body) and isTrendUp plotshape(bm, color=red, style=shape.triangledown, location=location.abovebar, title='black marubozu',text='bm') if (not na(rsi)) if (crossunder(rsi, level_70)and (bm or bm[1])) strategy.entry("RsiSE", strategy.short, comment="RsiSE") // hammer h = (isUp) and (lowerwick >= 2*body) and (upperwick <= 0.1*body) and isTrendDown plotshape(h, color=green, style=shape.triangleup, location=location.belowbar, title='hammer',text='h') if (not na(rsi)) if (crossover(rsi, level_30) and (h or h[1])) strategy.entry("RsiLE", strategy.long, comment="RsiLE") // hanging man hm = (not isUp) and (lowerwick >= 2*body) and (upperwick <= 0.1*body) and isTrendUp plotshape(hm, color=red, style=shape.triangledown, location=location.abovebar, title='hanging man',text='hm') if (not na(rsi)) if (crossunder(rsi, level_70)and (hm or hm[1])) strategy.entry("RsiSE", strategy.short, comment="RsiSE") // inverted hammer ih = (isUp) and (upperwick >= 2*body) and (lowerwick <= 0.1*body) and isTrendDown plotshape(ih, color=green, style=shape.triangleup, location=location.belowbar, title='inverted hammer',text='ih') //if (not na(rsi)) // if (crossover(rsi, level_30) and (ih or ih[1])) // strategy.entry("RsiLE", strategy.long, comment="RsiLE") // shooting star ss = (not isUp) and (upperwick >= 2*body) and (lowerwick <= 0.1*body) and isTrendUp plotshape(ss, color=red, style=shape.triangledown, location=location.abovebar, title='shooting star',text='ss') if (not na(rsi)) if (crossunder(rsi, level_70)and (ss or ss[1])) strategy.entry("RsiSE", strategy.short, comment="RsiSE") // Double Candlestick Pattern // bullish engulfing bulle = not isDoji[1] and (not isUp[1] and isUp) and (close > open[1] and open < close[1]) and isTrendDown plotshape(bulle, color=green, style=shape.triangleup, location=location.belowbar, title='bullish engulfing', text='e') // bearish engulfing beare = not isDoji[1] and (isUp[1] and not isUp) and (open > close[1] and close < open[1]) and isTrendUp plotshape(beare, color=red, style=shape.triangledown, location=location.abovebar, title='bearish engulfing',text='e') // tweezer bottom twb = (not isUp[1] and isUp) and (min(lowerwick,lowerwick[1])/max(lowerwick,lowerwick[1]) >= 0.99) and (min(low,low[1])/max(low,low[1]) >= 0.99) and isTrendDown plotshape(twb, color=green, style=shape.triangleup, location=location.belowbar, title='tweezer bottom', text='tb') if (not na(rsi)) if (crossover(rsi, level_30) and (twb or twb[1])) strategy.entry("RsiLE", strategy.long, comment="RsiLE") // tweezer top twt = (isUp[1] and not isUp) and (min(upperwick,upperwick[1])/max(upperwick,upperwick[1]) >= 0.99) and (min(high,high[1])/max(high,high[1]) >= 0.99) and isTrendUp plotshape(twt, color=red, style=shape.triangledown, location=location.abovebar, title='tweezer top',text='tt') if (not na(rsi)) if (crossunder(rsi, level_70)and (twt or twt[1])) strategy.entry("RsiSE", strategy.short, comment="RsiSE") // Trible Candlestick Pattern // three white soldier tws = (not isUp[3] and isUp[2] and isUp[1] and isUp) and (body[1]>body[2]) and (upperwick<0.1*body and lowerwick<0.1*body) and isTrendDown plotshape(tws, color=green, style=shape.triangleup, location=location.belowbar, title='three white soldiers',text='tws') if (not na(rsi)) if (crossover(rsi, level_30) and (tws or tws[1])) strategy.entry("RsiLE", strategy.long, comment="RsiLE") // three black crows tbc = (isUp[3] and not isUp[2] and not isUp[1] and not isUp) and (body[1]>body[2]) and (upperwick<0.1*body and lowerwick<0.1*body) and isTrendUp plotshape(tbc, color=red, style=shape.triangledown, location=location.abovebar, title='three black crows',text='tbc') if (not na(rsi)) if (crossunder(rsi, level_70)and (tbc or tbc[1])) strategy.entry("RsiSE", strategy.short, comment="RsiSE") // morning star ms = (not isUp[1]) and (abs(close[1]-open[1])/(high[1]-low[1]) < 0.1) and (close > oc2[2] and close < open[2]) and isTrendDown plotshape(ms, color=green, style=shape.triangleup, location=location.belowbar, title='morning star',text='ms') if (not na(rsi)) if (crossover(rsi, level_30) and (ms or ms[1])) strategy.entry("RsiLE", strategy.long, comment="RsiLE") // evening star es = (isUp[1]) and (abs(close[1]-open[1])/(high[1]-low[1]) < 0.1) and (close < oc2[2] and close > open[2]) and isTrendUp plotshape(es, color=red, style=shape.triangledown, location=location.abovebar, title='evening star',text='es') //if (not na(rsi)) // if (crossunder(rsi, level_70)and (es or es[1])) // strategy.entry("RsiSE", strategy.short, comment="RsiSE") // three inside up tiu = (not isUp[2]) and (close[1] > oc2[2] and close[1] < open[2]) and (close > high[2]) and isTrendDown plotshape(tiu, color=green, style=shape.triangleup, location=location.belowbar, title='three inside up',text='tiu') if (not na(rsi)) if (crossover(rsi, level_30) and (tiu or tiu[1])) strategy.entry("RsiLE", strategy.long, comment="RsiLE") // three inside down tid = (isUp[2]) and (close[1] < oc2[2] and close[1] > open[2]) and (close < low[2]) and isTrendUp plotshape(tid, color=red, style=shape.triangledown, location=location.abovebar, title='three inside down',text='tid') if (not na(rsi)) if (crossunder(rsi, level_70)and (tid or tid[1])) strategy.entry("RsiSE", strategy.short, comment="RsiSE") if (not na(rsi)) if (crossover(rsi, level_70)) //strategy.exit("RsiSE") //if(chk[1]==0 or chk[2]==0 or chk[3]==0 or chk[4]==0 or chk[5]==0 or chk[6]==0 or chk[7]==0 or chk[8]==0 or chk[9]==0 or chk[10]==0) //if(crossover(col[1],zero) or crossover(col[2],zero) or crossover(col[3],zero) or crossover(col[4],zero) or crossover(col[5],zero) or crossover(col[6],zero) or crossover(col[7],zero) or crossover(col[8],zero)) //strategy.entry("RsiLE", strategy.long,0, comment="RsiLE") strategy.entry("RsiSE", strategy.short,0, comment="RsiSE") if (crossunder(rsi, level_30)) //strategy.entry("RsiSE", strategy.short,0, comment="RsiSE") strategy.entry("RsiLE", strategy.long,0, comment="RsiLE") //if (not na(rsi)) // if (crossover(rsi, level_50)) //strategy.exit("RsiSE") //if(chk[1]==0 or chk[2]==0 or chk[3]==0 or chk[4]==0 or chk[5]==0 or chk[6]==0 or chk[7]==0 or chk[8]==0 or chk[9]==0 or chk[10]==0) //if(crossover(col[1],zero) or crossover(col[2],zero) or crossover(col[3],zero) or crossover(col[4],zero) or crossover(col[5],zero) or crossover(col[6],zero) or crossover(col[7],zero) or crossover(col[8],zero)) // strategy.entry("RsiSE", strategy.short,0, comment="RsiSE") // else // strategy.exit("RsiSE") // if (crossunder(rsi, level_50)) // strategy.entry("RsiLE", strategy.long,0, comment="RsiLE") // else // strategy.exit("RsiLE")