এই কৌশলটি আরএসআই সূচক থেকে মিসড ওভারকোপড এবং ওভারসোল্ড সংকেতগুলি ট্র্যাক করে বিপরীত ট্রেডিং বাস্তবায়ন করে। যখন আরএসআই ওভারকোপড স্তর থেকে পড়ে তখন কিনুন সংকেতগুলি উত্পন্ন হয় এবং যখন আরএসআই ওভারসোল্ড স্তর থেকে ফিরে আসে তখন বিক্রয় সংকেতগুলি বিক্রয় করে, বিপরীত সুযোগগুলি ক্যাপচার করার লক্ষ্যে।
আরএসআই সূচকটি ওভারকপ/ওভারসোল্ড স্তর চিহ্নিত করে। ওভারকপ যখন আরএসআই ওভারকপ থ্রেশহোল্ড অতিক্রম করে, ওভারসোল্ড যখন ওভারসোল্ড থ্রেশহোল্ড অতিক্রম করে।
overbought = rsi > uplimit
oversold = rsi < dnlimit
যদি RSI গত বার ওভারক্রয় করা হয় এবং প্রস্থান এই বার ওভারক্রয়, একটি কিনতে সংকেতup1
যদি RSI গত বারের oversold ছিল এবং এই বারের oversold প্রস্থান, একটি বিক্রয় সংকেতdn1
তৈরি হয়।
up1 = bar == -1 and strategy.position_size == 0 and overbought[1] and overbought == false
dn1 = bar == 1 and strategy.position_size == 0 and oversold[1] and oversold == false
যদি বার দিকটি অবস্থান দিকের সাথে সারিবদ্ধ হয় এবং বারের দেহটি তার 10 পেরিওডের গড়ের অর্ধেক অতিক্রম করে, একটি প্রস্থান সংকেত সক্রিয় হয়।
exit = (((strategy.position_size > 0 and bar == 1) or
(strategy.position_size < 0 and bar == -1)) and
body > abody / 2)
মিস করা আরএসআই বিপরীত সংকেতগুলি ট্র্যাক করুন, সময়মতো ওভারক্রয় / ওভারসোল্ড পয়েন্টগুলি ধরার প্রয়োজন এড়ানো।
বিপরীতমুখী পয়েন্টগুলি ধরার জন্য RSI এর বিপরীতমুখী সম্পত্তি ব্যবহার করুন।
পুলব্যাকের পরে আরও ট্র্যাকিং এড়ানোর জন্য বার দিক এবং আকারটি প্রস্থান লজিকের মধ্যে অন্তর্ভুক্ত করুন।
আরএসআই থেকে মিথ্যা সংকেতের ঝুঁকি
ট্র্যাকিং সিগন্যালের সময় দাম উল্লেখযোগ্যভাবে কমে যেতে পারে, যার ফলে ক্ষতির ঝুঁকি বাড়তে পারে।
সম্পূর্ণ লাভজনক বিপরীত হওয়ার আগে অকাল বিদায়ের ঝুঁকি
বিভিন্ন বাজারের উপর ভিত্তি করে অতিরিক্ত ক্রয় / অতিরিক্ত বিক্রয় স্তর, পুনর্বিবেচনা সময় ইত্যাদির মতো পরামিতিগুলি অনুকূল করুন
অবস্থান আকার সমন্বয়, যেমন ট্র্যাকিং সংকেত আকার কমাতে
ট্র্যাকিং সিগন্যালের বাইরে ফিল্টার যুক্ত করে প্রবেশের সময় উন্নত করুন
মুনাফা বৃদ্ধির জন্য প্রস্থান বাড়ান, যেমন ট্রেলিং মুনাফা স্টপ
ক্ষতি হ্রাস করার জন্য স্টপগুলি অপ্টিমাইজ করুন, যেমন ট্রেলিং স্টপ বা শঙ্কু স্টপ
এই কৌশলটি আরএসআই ওভারকুপ / ওভারসোল্ড সংকেতগুলি ট্র্যাক করে বিপরীত ট্রেডিং বাস্তবায়ন করে। এটি বিপরীত সংকেতগুলি ধরার সুবিধা রয়েছে তবে মিথ্যা সংকেত এবং ক্ষতির ঝুঁকিও রয়েছে। আরও অপ্টিমাইজেশন কৌশলটির স্থিতিশীলতা এবং লাভজনকতা উন্নত করতে পারে।
/*backtest start: 2023-09-20 00:00:00 end: 2023-09-27 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Anti RSI Strategy v1.0", shorttitle = "Anti RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //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, %") rsiperiod1 = input(14, defval = 14, minval = 2, maxval = 50, title = "RSI Period") rsilimit1 = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit") showarr = input(false, defval = false, title = "Show Arrows") 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") //RSI uprsi1 = rma(max(change(close), 0), rsiperiod1) dnrsi1 = rma(-min(change(close), 0), rsiperiod1) rsi = dnrsi1 == 0 ? 100 : uprsi1 == 0 ? 0 : 100 - (100 / (1 + uprsi1 / dnrsi1)) uplimit = 100 - rsilimit1 dnlimit = rsilimit1 //Body body = abs(close - open) abody = sma(body, 10) //Signals bar = close > open ? 1 : close < open ? -1 : 0 overbought = rsi > uplimit oversold = rsi < dnlimit up1 = bar == -1 and strategy.position_size == 0 and overbought[1] and overbought == false dn1 = bar == 1 and strategy.position_size == 0 and oversold[1] and oversold == false up2 = bar == -1 and strategy.position_size > 0 and overbought == false dn2 = bar == 1 and strategy.position_size < 0 and oversold == false norma = overbought == false and oversold == false exit = (((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2) //Arrows col = exit ? black : up1 or dn1 or up2 or dn2 ? blue : na needup = up1 or up2 needdn = dn1 or dn2 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 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 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 dn1 or dn2 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()