মাল্টি-টাইম ফ্রেম RSI মুভিং এভারেজ ক্রসওভার কৌশল


সৃষ্টির তারিখ: 2023-11-16 16:28:22 অবশেষে সংশোধন করুন: 2023-11-16 16:28:22
অনুলিপি: 1 ক্লিকের সংখ্যা: 783
1
ফোকাস
1617
অনুসারী

মাল্টি-টাইম ফ্রেম RSI মুভিং এভারেজ ক্রসওভার কৌশল

ওভারভিউ

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

মূলনীতি

এই কৌশলটি প্রথমে একাধিক টাইম ফ্রেম (যেমন 1 মিনিট, 5 মিনিট, 15 মিনিট ইত্যাদি) এর জন্য RSI সূচক গণনা করে, তারপরে প্রতিটি টাইম ফ্রেমের জন্য RSI কে 15 এর দৈর্ঘ্যের একটি ওজনের চলমান গড় (VMA) দিয়ে প্রক্রিয়া করে এবং প্রতিটি টাইম ফ্রেমের জন্য RSI গড় পাওয়া যায়।

এরপরে, সমস্ত টাইম ফ্রেমের RSI গড়কে সমান ওজনের সংমিশ্রণ করা হয়, যথাক্রমে দ্রুত লাইন এবং ধীর লাইন দুটি সংকেত হিসাবে। দ্রুত লাইনটি 100 চক্রের ইএমএ এবং ধীর লাইনটি 150 চক্রের ইএমএ।

যখন দ্রুত লাইন নীচে থেকে নীচে থেকে ধীর লাইনটি ভেঙে দেয় তখন একটি ক্রয় সংকেত উত্পন্ন হয়; যখন দ্রুত লাইন উপরে থেকে নীচে থেকে ধীর লাইনটি ভেঙে দেয় তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। এইভাবে, মাল্টিটাইম ফ্রেম আরএসআইয়ের সমন্বিত ক্রস-সিগন্যালটি কার্যকরভাবে প্রবণতা অনুসরণ করতে পারে এবং একই সাথে স্বল্পমেয়াদী বাজারের শব্দটি ফিল্টার করতে পারে।

সুবিধা

  1. মাল্টি টাইম ফ্রেম সমন্বয়, মূল্য বক্ররেখা মসৃণ করতে পারে, কার্যকরভাবে জাল ব্রেকিং ফিল্টার করতে পারে।

  2. আরএসআই সূচকগুলি ওভারবয় ওভারসোলের প্রতিফলন করতে পারে এবং উচ্চ ও নিম্নের অনুসরণ করতে পারে না।

  3. ডাবল-ওভারলাইন সিস্টেম একক-ওভারলাইন সিস্টেমের চেয়ে ভাল পজিশন হোল্ডিং কার্যকারিতা দেয়।

  4. এসএমএর পরিবর্তে ভিএমএ ব্যবহার করা হয় গড়রেখার উপর স্বল্পমেয়াদী ওঠানামার প্রভাব হ্রাস করতে।

ঝুঁকি

  1. মাল্টি টাইম ফ্রেম কৌশল, প্যারামিটার সমন্বয় জন্য উচ্চ প্রয়োজনীয়তা, ভুল সেট আপ খুব তাড়াতাড়ি বা খুব দেরী খেলা শুরু হতে পারে।

  2. গড়রেখা পদ্ধতিটি বক্ররেখার সাথে ভালভাবে মিলিত হয় না এবং প্রবণতা পরিবর্তনের সময়ে খারাপভাবে কাজ করে।

  3. RSI সূচকটি খুব সহজেই বিপরীত হতে পারে, বিপরীত সংকেতের দিকে মনোযোগ দিতে হবে।

সমাধানঃ টাইম ফ্রেম প্যারামিটার সেটিং সামঞ্জস্য করুন; অন্যান্য সূচক যেমন MACD ইত্যাদির সাথে ট্রেন্ডিংয়ের বিচার করুন; আরএসআই সংকেত থেকে দূরে সরে যাওয়ার বিষয়ে সতর্কতা

অপ্টিমাইজেশান দিক

  1. সময়সীমার সংখ্যা এবং প্যারামিটার সেটিং অপ্টিমাইজ করুন যাতে ট্রেন্ডগুলি আরও ভালভাবে ধরা যায়।

  2. ঝুঁকি নিয়ন্ত্রণের জন্য ক্ষতিপূরণ ব্যবস্থা অন্তর্ভুক্ত করার কথা ভাবুন।

  3. অন্যান্য সূচকগুলির সাথে মিলিত হয়ে প্রবণতা এবং বিচ্যুতি বিচার করে সিদ্ধান্তের গুণমান উন্নত করা।

  4. বিভিন্ন পজিশনিং চক্রের পরামিতি পরীক্ষা করুন এবং সর্বোত্তম পজিশনিং কার্যকারিতা খুঁজুন।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="RSI multitimeframe SMA crossover", shorttitle="RSI multitimeframe strategy", default_qty_type= strategy.percent_of_equity, margin_long=50, default_qty_value=150)

res1 = input(title="Res 01", type=input.resolution, defval="1")
res2 = input(title="Res 0", type=input.resolution, defval="5")
res3 = input(title="Res 1", type=input.resolution, defval="15")
res4 = input(title="Res 2", type=input.resolution, defval="15")
res5 = input(title="Res 3", type=input.resolution, defval="15")
res6 = input(title="Res 4", type=input.resolution, defval="30")
res7 = input(title="Res 5", type=input.resolution, defval="45")
res8 = input(title="Res 6", type=input.resolution, defval="60")



lengthRSI = input(15, minval=1)
lengthMA = input(15, minval=1)
lengthFMA = input(100, minval=1)
lengthFMA2 = input(150, minval=1)
Long_yes = input(defval=1, title="Long trades 0 or 1", minval=0, maxval=1)
Short_yes = input(defval=0, title="Short trades 0 or 1", minval=0, maxval=1)
src = close

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"



// stop loss 
longLossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.5, defval=10) * 
   0.01
longStopPrice = strategy.position_avg_price * (1 - longLossPerc)

shortLossPerc = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.5, defval=10) * 
   0.01
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


rsi1 = rsi(src, lengthRSI)
MA1 = vwma(rsi1, lengthMA)






outD1 = security(syminfo.tickerid, res1, MA1)
outD2 = security(syminfo.tickerid, res2, MA1)
outD3 = security(syminfo.tickerid, res3, MA1)
outD4 = security(syminfo.tickerid, res4, MA1)
outD5 = security(syminfo.tickerid, res5, MA1)
outD6 = security(syminfo.tickerid, res6, MA1)
outD7 = security(syminfo.tickerid, res7, MA1)
outD8 = security(syminfo.tickerid, res8, MA1)




//plot_d0 = outD0
//plot_d1 = outD1
//plot_d2 = outD2
//plot_d3 = outD3
//plot_d4 = outD4
//plot_d5 = outD5
//plot_d6 = outD6

out_multi = ema(outD1+outD2+outD3+outD4+outD5+outD6+outD7+outD8, lengthFMA)
out_multi2 = ema(outD1+outD2+outD3+outD4+outD5+outD6+outD7+outD8, lengthFMA2)
//out_multi1 = outD2+outD3+outD4
//out_multi2 = outD4+outD5+outD6

//col0 = outD0 < 20 ? color.lime : outD0 > 80 ? color.red : color.blue
//col1 = outD1 < 20 ? color.lime : outD1 > 80 ? color.red : color.blue
//col2 = outD2 < 20 ? color.lime : outD2 > 80 ? color.red : color.blue
//col3 = outD3 < 20 ? color.lime : outD3 > 80 ? color.red : color.blue
//col4 = outD4 < 20 ? color.lime : outD4 > 80 ? color.red : color.blue
//col5 = outD5 < 20 ? color.lime : outD5 > 80 ? color.red : color.blue
//col6 = outD6 < 20 ? color.lime : outD6 > 80 ? color.red : color.blue


// plot(plot_d0,linewidth=2, color=col0)
// plot(plot_d1, linewidth=2, color=col1)
// plot(plot_d2,linewidth=2, color=col2)
// plot(plot_d3,linewidth=2, color=col3)
// plot(plot_d4,linewidth=2, color=col4)
// plot(plot_d5,linewidth=2, color=col5)
// plot(plot_d6,linewidth=2, color=col6)

long=(out_multi/8)
short=(out_multi2/8)

plot(long, linewidth=1, color=color.green)
plot(short, linewidth=1, color=color.red)

long1=crossover(long,short)
short1=crossunder(long,short)

h0 = hline(65, "Upper Band", color=color.red, linestyle=hline.style_solid, linewidth=2 )
h1 = hline(35, "Lower Band", color=color.green, linestyle=hline.style_solid, linewidth=2)


strategy.entry("buy", strategy.long, when=long1 and window() and Long_yes > 0) 
if strategy.position_size > 0
    strategy.exit(id="XL STP", stop=longStopPrice)
strategy.close("buy",when=short1 )

strategy.entry("sell", strategy.short, when=short1 and window() and Short_yes > 0) 
if strategy.position_size < 0
    strategy.exit(id="XS STP", stop=shortStopPrice)
strategy.close("buy",when=long1 )