এই কৌশলটি দ্রুত আরএসআই সূচক ব্যবহার করে আরএসআই চরম ট্রেড করে এবং উইপস এড়ানোর জন্য মোমবাতি দেহের আকারের উপর ভিত্তি করে এন্ট্রিগুলি ফিল্টার করে। এটি দ্রুত বিপর্যয়গুলি ধরার জন্য ওভারকোপড / ওভারসোল্ড স্তরগুলির দ্রুত সনাক্তকরণের লক্ষ্য।
কৌশলগত যুক্তি:
দ্রুত আরএসআই গণনা করুন এবং অতিরিক্ত ক্রয়/অতিরিক্ত বিক্রয়ের থ্রেশহোল্ড সেট করুন।
শরীরের ফিল্টারিংয়ের জন্য মোমবাতি শরীরের আকারের ইএমএ গণনা করুন।
আরএসআই যখন ওভারকুপ লাইন এবং অর্ধেক ইএমএ এর উপরে ক্রস করে তখন লম্বা হয়ে যায়।
যখন RSI মূল প্রান্তিকের নিচে ফিরে আসে এবং EMA এর উপরে শরীর অতিক্রম করে তখন বেরিয়ে আসে।
Min/max অতিরিক্ত সংকেত যাচাইকরণ প্রদান করতে পারে।
উপকারিতা:
দ্রুত আরএসআই সিগন্যাল তৈরির গতি বাড়ায় এবং বিলম্ব এড়ায়।
শরীরের আকারের ফিল্টারগুলি মোমবাতি শব্দকে কমিয়ে দেয়।
Min/max সিগন্যালের গুণমান উন্নত করে।
ঝুঁকি:
শরীরের ফিল্টারিং কিছু বৈধ সংকেত উপেক্ষা করতে পারে।
বিভিন্ন বাজারে আরএসআই-র জন্য এখনও হুইপসো সম্ভব।
রিভার্সাল ট্রেডিংয়ের জন্য কঠোর ঝুঁকি ব্যবস্থাপনা প্রয়োজন।
সংক্ষেপে, এই কৌশলটি দ্রুত আরএসআই এবং শরীরের আকারের ফিল্টারিংকে দ্রুততর কিন্তু আরও শক্তিশালী ওভারকুপ / ওভারসোল্ড সনাক্তকরণের জন্য একত্রিত করে। তবে ওভার-ফিল্টারিংয়ের সমস্যাগুলি এখনও রয়েছে তাই এখনও সতর্ক ঝুঁকি নিয়ন্ত্রণের প্রয়োজন।
/*backtest start: 2023-01-01 00:00:00 end: 2023-09-11 00:00:00 period: 2d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Noro's Fast RSI Strategy v1.3", shorttitle = "Fast RSI str 1.3", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period") limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit") rsisrc = input(close, defval = close, title = "RSI Price") rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars") usemm = input(false, defval = false, title = "Use Min/Max") showarr = input(false, defval = false, title = "Show Arrows") fromyear = input(2018, defval = 2018, 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") //Fast RSI fastup = rma(max(change(rsisrc), 0), rsiperiod) fastdown = rma(-min(change(rsisrc), 0), rsiperiod) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //Limits bar = close > open ? 1 : close < open ? -1 : 0 uplimit = 100 - limit dnlimit = limit //RSI Bars ur = fastrsi > uplimit dr = fastrsi < dnlimit uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0 dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0 //Body body = abs(close - open) emabody = ema(body, 30) //MinMax min = min(close, open) max = max(close, open) //Signals up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 4 dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 4 up2 = min < min[1] and bar == -1 and bar[1] == -1 and usemm dn2 = max > max[1] and bar == 1 and bar[1] == 1 and usemm exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > emabody / 2 //Arrows col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na needup = up1 or (up2 and usemm) needdn = dn1 or (dn2 and usemm) needexitup = exit and strategy.position_size < 0 needexitdn = exit and strategy.position_size > 0 plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0) plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0) //Trading if up1 or up2 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) if dn1 or dn2 strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) if time > timestamp(toyear, tomonth, today, 00, 00) or exit strategy.close_all()