মাল্টি-মুভিং এভারেজ ক্রসওভার সাহায্য করে RSI ডাইনামিক প্যারামিটার পরিমাণগত ট্রেডিং কৌশল

RSI MA SMA EMA WMA SMMA RMA
সৃষ্টির তারিখ: 2025-01-17 16:14:38 অবশেষে সংশোধন করুন: 2025-01-17 16:14:38
অনুলিপি: 1 ক্লিকের সংখ্যা: 410
1
ফোকাস
1617
অনুসারী

মাল্টি-মুভিং এভারেজ ক্রসওভার সাহায্য করে RSI ডাইনামিক প্যারামিটার পরিমাণগত ট্রেডিং কৌশল

ওভারভিউ

এটি একটি পরিমাণগত ট্রেডিং কৌশল যা আপেক্ষিক শক্তি সূচক (RSI) এবং একাধিক চলমান গড়কে একত্রিত করে। এই কৌশলটি মূলত RSI সূচকে বিভিন্ন ধরনের চলমান গড় (SMA, EMA, WMA এবং SMMA সহ) ক্রস সংকেতগুলি পর্যবেক্ষণ করে বাজারের প্রবণতা বিচার করে এবং RSI সূচকের অতিরিক্ত কেনা ও বিক্রি হওয়া রেঞ্জগুলিকে একটি সহায়ক বিচারের ভিত্তিতে একত্রিত করে। ট্রেডিং টাইমিং নির্ধারণ করতে।

কৌশল নীতি

কৌশলটি প্রধানত নিম্নলিখিত মূল গণনার পদক্ষেপগুলি অন্তর্ভুক্ত করে:

  1. 14-পিরিয়ড RSI সূচকটি গণনা করুন এবং অতিরিক্ত কেনা এলাকা 70 এবং অতিবিক্রীত এলাকা 30 এ সেট করুন
  2. RSI বক্ররেখার বিভিন্ন পরামিতি সহ তিনটি চলমান গড় গণনা করুন:
    • MA1: 20 পিরিয়ড, ঐচ্ছিক SMA/EMA/WMA/SMMA
    • MA2: 50 পিরিয়ড, ঐচ্ছিক SMA/EMA/WMA/SMMA
    • MA3: 100 পিরিয়ড, ঐচ্ছিক SMA/EMA/WMA/SMMA
  3. ট্রেডিং সিগন্যাল জেনারেশন নিয়ম:
    • সংকেত কিনুন: যখন MA2 MA3 অতিক্রম করে উপরের দিকে
    • সেল সিগন্যাল: যখন MA2 MA3 ক্রস করে নিচের দিকে
  4. একই সময়ে, ট্রেডিং সিদ্ধান্তের জন্য সহায়ক রেফারেন্স প্রদান করতে RSI সূচকের বিচ্যুতি সনাক্ত করা হয়।

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

  1. ট্রেডিং সিগন্যালের নির্ভরযোগ্যতা উন্নত করতে একাধিক প্রযুক্তিগত সূচকের ক্রস-বৈধকরণ
  2. চলমান গড় ধরণ এবং পরামিতিগুলি সামঞ্জস্যযোগ্য, যার শক্তিশালী নমনীয়তা রয়েছে
  3. RSI ডাইভারজেন্স ডিটেকশন ফাংশন আগে থেকেই বাজারের টার্নিং পয়েন্ট সনাক্ত করতে সাহায্য করতে পারে
  4. কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করতে শতাংশ অবস্থান ব্যবস্থাপনা ব্যবহার করুন
  5. চমৎকার ভিজ্যুয়ালাইজেশন প্রভাব, বিশ্লেষণ এবং ব্যাকটেস্টিংয়ের জন্য সহজ

কৌশলগত ঝুঁকি

  1. চলমান গড় ক্রসওভারগুলির একটি ল্যাগ প্রভাব থাকতে পারে
  2. পার্শ্ববর্তী এবং অস্থির বাজারে ঘন ঘন মিথ্যা সংকেত ঘটতে পারে
  3. নির্দিষ্ট বাজার অবস্থার অধীনে RSI সূচকের বিকৃতি
  4. অনুপযুক্ত প্যারামিটার নির্বাচনের ফলে খুব বেশি বা খুব কম ট্রেডিং সংকেত হতে পারে পরিহারের ব্যবস্থা:
  • বাজারের প্রবণতা এবং ট্রেডিং ভলিউমের উপর ভিত্তি করে ক্রস-ভ্যালিডেশন পরিচালনা করার সুপারিশ করা হয়।
  • চলমান গড় পরামিতি সামঞ্জস্য করে ট্রেডিং ফ্রিকোয়েন্সি অপ্টিমাইজ করা যেতে পারে
  • স্টপ লস সেট করুন এবং ঝুঁকি নিয়ন্ত্রণে লাভ নিন

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

  1. সিগন্যাল ফিল্টারিং অপ্টিমাইজেশান:
  • ট্রেন্ড নিশ্চিতকরণ সূচক যোগ করুন
  • ভলিউম বিশ্লেষণ যোগ করুন
  1. পরামিতিগুলির গতিশীল অপ্টিমাইজেশন:
  • বাজারের অস্থিরতার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে RSI এবং MA পরামিতি সামঞ্জস্য করুন
  • অভিযোজিত চক্র গণনা পদ্ধতি প্রবর্তন
  1. ঝুঁকি নিয়ন্ত্রণ অপ্টিমাইজেশান:
  • গতিশীল স্টপ-লস এবং টেক-প্রফিট মেকানিজম বিকাশ করুন
  • একটি গতিশীল গুদাম ব্যবস্থাপনা ব্যবস্থা ডিজাইন করুন

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2024-01-17 00:00:00
end: 2025-01-16 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy(title="Relative Strength Index with MA Strategy", shorttitle="RSI-MA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// RSI Inputs
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
calculateDivergence = input.bool(false, title="Calculate Divergence", group="RSI Settings", tooltip="Calculating divergences is needed in order for divergence alerts to fire.")

// RSI Calculation
change_rsi = ta.change(rsiSourceInput)
up = ta.rma(math.max(change_rsi, 0), rsiLengthInput)
down = ta.rma(-math.min(change_rsi, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

// RSI Plot
plot(rsi, "RSI", color=#7E57C2)
hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
hline(30, "RSI Lower Band", color=#787B86)
fill(hline(70), hline(30), color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")

// RSI-based MA Inputs
grpRSIMovingAverages = "RSI Moving Averages"
ma1Length = input.int(20, title="MA1 Length", group=grpRSIMovingAverages)
ma2Length = input.int(50, title="MA2 Length", group=grpRSIMovingAverages)
ma3Length = input.int(100, title="MA3 Length", group=grpRSIMovingAverages)
ma1Type = input.string("SMA", title="MA1 Type", options=["SMA", "EMA", "WMA", "SMMA"], group=grpRSIMovingAverages)
ma2Type = input.string("EMA", title="MA2 Type", options=["SMA", "EMA", "WMA", "SMMA"], group=grpRSIMovingAverages)
ma3Type = input.string("WMA", title="MA3 Type", options=["SMA", "EMA", "WMA", "SMMA"], group=grpRSIMovingAverages)

// MA Calculation Function
calcMA(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "WMA" => ta.wma(source, length)
        "SMMA" => ta.rma(source, length)

// MA Calculations
ma1 = calcMA(rsi, ma1Length, ma1Type)
ma2 = calcMA(rsi, ma2Length, ma2Type)
ma3 = calcMA(rsi, ma3Length, ma3Type)

// MA Plots
plot(ma1, title="RSI MA1", color=color.blue)
plot(ma2, title="RSI MA2", color=color.green)
plot(ma3, title="RSI MA3", color=color.red)

// Divergence (Retained from original script)
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5
bearColor = color.red
bullColor = color.green
textColor = color.white
noneColor = color.new(color.white, 100)

_inRange(bool cond) =>
    bars = ta.barssince(cond)
    rangeLower <= bars and bars <= rangeUpper

plFound = false
phFound = false

bullCond = false
bearCond = false

rsiLBR = rsi[lookbackRight]

if calculateDivergence
    // Regular Bullish
    plFound := not na(ta.pivotlow(rsi, lookbackLeft, lookbackRight))    
    rsiHL = rsiLBR > ta.valuewhen(plFound, rsiLBR, 1) and _inRange(plFound[1])
    lowLBR = low[lookbackRight]
    priceLL = lowLBR < ta.valuewhen(plFound, lowLBR, 1)
    bullCond := priceLL and rsiHL and plFound

    // Regular Bearish
    phFound := not na(ta.pivothigh(rsi, lookbackLeft, lookbackRight))
    rsiLH = rsiLBR < ta.valuewhen(phFound, rsiLBR, 1) and _inRange(phFound[1])
    highLBR = high[lookbackRight]
    priceHH = highLBR > ta.valuewhen(phFound, highLBR, 1)
    bearCond := priceHH and rsiLH and phFound

// plot(
//      plFound ? rsiLBR : na,
//      offset=-lookbackRight,
//      title="Regular Bullish",
//      linewidth=2,
//      color=(bullCond ? bullColor : noneColor),
//      display = display.pane
//      )

plotshape(
     bullCond ? rsiLBR : na,
     offset=-lookbackRight,
     title="Regular Bullish Label",
     text=" Bull ",
     style=shape.labelup,
     location=location.absolute,
     color=bullColor,
     textcolor=textColor
     )

// plot(
//      phFound ? rsiLBR : na,
//      offset=-lookbackRight,
//      title="Regular Bearish",
//      linewidth=2,
//      color=(bearCond ? bearColor : noneColor),
//      display = display.pane
//      )

plotshape(
     bearCond ? rsiLBR : na,
     offset=-lookbackRight,
     title="Regular Bearish Label",
     text=" Bear ",
     style=shape.labeldown,
     location=location.absolute,
     color=bearColor,
     textcolor=textColor
     )

alertcondition(bullCond, title='Regular Bullish Divergence', message="Found a new Regular Bullish Divergence, `Pivot Lookback Right` number of bars to the left of the current bar.")
alertcondition(bearCond, title='Regular Bearish Divergence', message='Found a new Regular Bearish Divergence, `Pivot Lookback Right` number of bars to the left of the current bar.')

// ----- MUA/BÁN -----

// Điều kiện Mua: MA2 cắt lên MA3 và MA3 < 55
buyCondition = ta.crossover(ma2, ma3) 

// Điều kiện Bán: MA2 cắt xuống MA3 và MA3 > 40
sellCondition = ta.crossunder(ma2, ma3)

// Thực hiện lệnh Mua/Bán
if (buyCondition)
    strategy.entry("Buy", strategy.long, comment="Buy Signal")

if (sellCondition)
    strategy.close("Buy", comment="Sell Signal")



// ----- KẾT THÚC -----