এই কৌশলটি আরএসআই এবং এমএফআই সূচকগুলির সাথে মিলিত বিবি শতাংশ সূচকের উপর ভিত্তি করে। এটি আরএসআই ওভারসোল্ড / ওভারক্রয় সংকেত এবং এমএফআই ওভারসোল্ড / ওভারক্রয় সংকেতগুলির সাথে বোলিংজার ব্যান্ডের উপরের এবং নীচের রেলের দামের ব্রেকআউট সনাক্ত করে দীর্ঘ এবং স্বল্প সিদ্ধান্ত নেয়। এটি একটি সাধারণ ট্রেন্ড বিবর্ণ ট্রেডিং কৌশল।
এই কৌশলটি মূলত উচ্চ অস্থিরতা নন-ট্রেন্ডিং সরঞ্জামগুলিতে প্রয়োগ করা হয়। এটি বোলিংজার চ্যানেল এবং সূচক সংমিশ্রণের মাধ্যমে প্রবণতা বিবর্ণ ট্রেডিং বাস্তবায়ন করে। পরামিতিগুলি সামঞ্জস্য করে ঝুঁকি-ফেরতের বৈশিষ্ট্যগুলি নিয়ন্ত্রণ করা যেতে পারে। সিদ্ধান্তের গুণমানকে অনুকূল করার জন্য আরও সহায়ক সূচক এবং মডেল প্রবর্তন করে আরও উন্নতি করা যেতে পারে, যার ফলে আরও ভাল কৌশল কর্মক্ষমতা অর্জন করা যায়।
/*backtest start: 2023-11-05 00:00:00 end: 2023-12-05 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "BB%/MFI/RSI", shorttitle = "BB%/MFI/RSI", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") 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") source = hlc3 length = input(14, minval=1), mult = input(2.0, minval=0.001, maxval=50), bblength = input(50, minval=1, title="BB Period") DrawRSI_f=input(true, title="Draw RSI?", type=bool) DrawMFI_f=input(false, title="Draw MFI?", type=bool) HighlightBreaches=input(true, title="Highlight Oversold/Overbought?", type=bool) DrawMFI = (not DrawMFI_f) and (not DrawRSI_f) ? true : DrawMFI_f DrawRSI = (DrawMFI_f and DrawRSI_f) ? false : DrawRSI_f // RSI rsi_s = DrawRSI ? rsi(source, length) : na plot(DrawRSI ? rsi_s : na, color=maroon, linewidth=2) // MFI upper_s = DrawMFI ? sum(volume * (change(source) <= 0 ? 0 : source), length) : na lower_s = DrawMFI ? sum(volume * (change(source) >= 0 ? 0 : source), length) : na mf = DrawMFI ? rsi(upper_s, lower_s) : na plot(DrawMFI ? mf : na, color=green, linewidth=2) // Draw BB on indices bb_s = DrawRSI ? rsi_s : DrawMFI ? mf : na basis = sma(bb_s, length) dev = mult * stdev(bb_s, bblength) upper = basis + dev lower = basis - dev plot(basis, color=red) p1 = plot(upper, color=blue) p2 = plot(lower, color=blue) fill(p1,p2, blue) b_color = (bb_s > upper) ? red : (bb_s < lower) ? lime : na bgcolor(HighlightBreaches ? b_color : na, transp = 0) //Signals up = bb_s < lower and close < open dn = bb_s > upper and close > open size = strategy.position_size lp = size > 0 and close > open sp = size < 0 and close < open exit = (up == false and dn == false) and (lp or sp) //Trading lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1] if up if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()