বিপরীত RSI-এর উপর ভিত্তি করে মিসড সিগন্যাল ট্র্যাকিং ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-09-28 10:54:24 অবশেষে সংশোধন করুন: 2023-09-28 10:54:24
অনুলিপি: 1 ক্লিকের সংখ্যা: 693
1
ফোকাস
1617
অনুসারী

ওভারভিউ

এই কৌশলটি RSI সূচকটি মিস করা ওভার-বই ওভার-বিক্রয় সংকেতগুলি অনুসরণ করে বিপরীত ট্রেডিংয়ের অনুমতি দেয়। যখন RSI সূচকটি ওভার-বই অঞ্চল থেকে পিছনে ফিরে আসে তখন ট্র্যাকিং-ডু সিগন্যাল তৈরি করে এবং ওভার-বিক্রয় অঞ্চল থেকে রিবাউন্ড করার সময় ট্র্যাকিং-ডু সিগন্যাল তৈরি করে, বিপরীত সুযোগগুলি ধরার জন্য।

কৌশল নীতি

সংকেত নির্ধারণ

RSI সূচকটি ওভার-বই ওভার-সেলিংয়ের জন্য ব্যবহৃত হয়। RSI এর উপরে ওভার-বই লাইন অতিক্রম করার সময় এটি একটি ওভার-বই সংকেত এবং নীচে ওভার-বিক্রয় লাইন অতিক্রম করার সময় এটি একটি ওভার-বিক্রয় সংকেত।

overbought = rsi > uplimit 
oversold = rsi < dnlimit

যদি পূর্ববর্তী K-লাইন RSI সূচকটি ওভারবয়ে থাকে, তবে বর্তমান K-লাইন RSI সূচকটি ওভারবয়ে থেকে বেরিয়ে আসে এবং একটি ট্র্যাকিং মাল্টি-সিগন্যাল তৈরি করেup1যদি পূর্ববর্তী কে-লাইন আরএসআই সূচকটি ওভারসোল্ড হয়, তবে বর্তমান কে-লাইন আরএসআই সূচকটি ওভারসোল্ড থেকে বেরিয়ে আসে এবং একটি ট্র্যাকিং বন্ধের সংকেত দেয়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 

রায় প্রত্যাহার

যখন পজিশন হোল্ডিংয়ের দিকটি K-লাইন সত্তার দিকের সাথে সামঞ্জস্যপূর্ণ হয় এবং যখন সত্তাটি তার 10-চক্রের গড়ের অর্ধেক অতিক্রম করে তখন একটি প্রস্থান সংকেত দেওয়া হয়।

exit = (((strategy.position_size > 0 and bar == 1) or 
         (strategy.position_size < 0 and bar == -1)) and 
        body > abody / 2)

কৌশলগত সুবিধা

  1. আরএসআই সূচকটি যে বিপরীত সিগন্যালটি মিস করেছে তা ট্র্যাক করুন, যাতে ওভারবয় ওভারসেল পয়েন্টগুলিকে সময়মতো ধরার অসুবিধা এড়ানো যায়।

  2. আরএসআই সূচকের বিপরীতমুখী বৈশিষ্ট্য ব্যবহার করে বিপরীতমুখী সুযোগগুলি ধরুন।

  3. K-রেখার দিকনির্দেশনা এবং আকারের সাথে মিলিতভাবে বেরিয়ে যাওয়ার বিচার করুন, যাতে রিবাউন্ডের পরে অনুসরণ করা যায় না।

ঝুঁকি ও সমাধান

  1. RSI সূচক ভুল সংকেত দেওয়ার ঝুঁকি

    • সমাধানঃ অন্যান্য সূচকগুলির সাথে মিলিতভাবে নিশ্চিতকরণ, ভুল বোঝাবুঝি এড়াতে।
  2. ট্র্যাকিং সিগন্যালের সময়, দামের একটি সংক্ষিপ্ত পুনর্নির্ধারণ হতে পারে এবং ক্ষতির ঝুঁকি রয়েছে

    • সমাধানঃ প্রবেশাধিকার হ্রাস করা বা প্রবেশাধিকার সময়কে অনুকূল করা।
  3. কিছু রিবাউন্ড লাভজনক না হলে, এটি প্রস্থান সংকেত জারি করার ঝুঁকি নিয়েছিল।

    • সমাধানঃ অপ্টিমাইজড এক্সট্রুশন বিচার লজিক, পজিশন হোল্ডারদের লাভের সুযোগ বাড়ানো।

অনুকূলিতকরণ

  1. অপ্টিমাইজেশান প্যারামিটার সেট করুন, যেমন ওভারবয় ওভারসেল লাইন, রিভিউ চক্র ইত্যাদি, বিভিন্ন বাজারের জন্য সামঞ্জস্যপূর্ণ।

  2. পজিশন ম্যানেজমেন্ট পদ্ধতিতে পরিবর্তন, যেমন সিগন্যাল ট্র্যাক করার সময় পজিশন কমিয়ে দেওয়া।

  3. অনুকূলিতকরণ প্রবেশের সময়, ট্র্যাকিং সিগন্যালের উপর ভিত্তি করে, অন্যান্য শর্তাদি সীমাবদ্ধতা যোগ করুন।

  4. মোবাইল স্টপ বা অন্যান্য পদ্ধতির মাধ্যমে অর্থ উপার্জনের সম্ভাবনা বাড়ানোর জন্য অপ্টিমাইজড প্রস্থান পদ্ধতি।

  5. অপ্টিমাইজ করা ক্ষতির উপায়, ক্ষতির ঝুঁকি হ্রাস করুন, যেমন চলমান ক্ষতির প্রবর্তন, ঝাঁকুনি ক্ষতির প্রবর্তন ইত্যাদি।

সারসংক্ষেপ

এই কৌশলটি 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()