وسائل لوڈ ہو رہے ہیں... لوڈنگ...

متحرک RSI مقداری تجارتی حکمت عملی متعدد حرکت پذیر اوسط کراس اوور کے ساتھ

مصنف:چاؤ ژانگ، تاریخ: 2025-01-17 16:14:38
ٹیگز:آر ایس آئیایم اےایس ایم اےای ایم اےڈبلیو ایم اےایس ایم ایم اےآر ایم اے

 Dynamic RSI Quantitative Trading Strategy with Multiple Moving Average Crossover

جائزہ

یہ ایک مقداری تجارتی حکمت عملی ہے جو رشتہ دار طاقت انڈیکس (آر ایس آئی) کو متعدد حرکت پذیر اوسط کے ساتھ جوڑتی ہے۔ یہ حکمت عملی بنیادی طور پر آر ایس آئی اشارے پر مختلف اقسام کے حرکت پذیر اوسط (بشمول ایس ایم اے ، ای ایم اے ، ڈبلیو ایم اے ، اور ایس ایم ایم اے) کے مابین کراس اوور سگنلز کی نگرانی کرکے مارکیٹ کے رجحانات کی نشاندہی کرتی ہے ، جبکہ اضافی فیصلے کے معیار کے طور پر آر ایس آئی اوور بکڈ اور اوور سیلڈ زونز کا استعمال کرتی ہے۔

حکمت عملی کے اصول

حکمت عملی میں کئی اہم حساب کے اقدامات شامل ہیں: 1۔ 14 پیریڈ آر ایس آئی کا حساب 70 پر اوور بک لیول اور 30 پر اوور سیل لیول کے ساتھ لگائیں 2۔ آر ایس آئی منحنی خطوط پر تین مختلف حرکت پذیر اوسطوں کا حساب لگائیں: - MA1: 20 مدت، SMA/EMA/WMA/SMMA کا انتخاب - ایم اے 2: 50 مدت، ایس ایم اے/ای ایم اے/ڈبلیو ایم اے/ایس ایم ایم اے کا انتخاب - MA3: 100 مدت، SMA/EMA/WMA/SMMA کا انتخاب ٹریڈنگ سگنل جنریشن کے قوانین: - خریدنے کا اشارہ: جب ایم اے 2 ایم اے 3 سے اوپر عبور کرتا ہے - فروخت کا اشارہ: جب ایم اے 2 ایم اے 3 سے نیچے جاتا ہے ایک ہی وقت میں اضافی حوالہ کے لئے RSI اختلافات کا پتہ لگانے

حکمت عملی کے فوائد

  1. متعدد تکنیکی اشارے کی کراس ویلیڈیشن سگنل کی وشوسنییتا کو بہتر بناتی ہے
  2. لچکدار چلتی اوسط کی اقسام اور پیرامیٹرز
  3. آر ایس آئی تغیرات کا پتہ لگانے سے مارکیٹ کے موڑ کے مقامات کی ابتدائی نشاندہی کرنے میں مدد ملتی ہے
  4. مؤثر رسک کنٹرول کے لئے فیصد پر مبنی پوزیشن مینجمنٹ
  5. تجزیہ اور بیک ٹسٹنگ کے لئے بہترین تصور

حکمت عملی کے خطرات

  1. چلتی اوسط کراس اوورز میں تاخیر کے اثرات ہوسکتے ہیں
  2. مختلف مارکیٹوں میں غلط سگنل ہوسکتے ہیں
  3. مخصوص مارکیٹ کے حالات میں RSI مسخ
  4. پیرامیٹر کا غلط انتخاب زیادہ یا ناکافی تجارتی سگنل کا باعث بن سکتا ہے خطرے کو کم کرنا:
  • مارکیٹ کے رجحانات اور حجم کے ساتھ کراس ویلیڈیشن کی سفارش کریں
  • چلتی اوسط پیرامیٹر ایڈجسٹمنٹ کے ذریعے تجارتی تعدد کو بہتر بنائیں
  • خطرے کے کنٹرول کے لئے سٹاپ نقصان اور منافع لینے کی سطح مقرر کریں

حکمت عملی کی اصلاح کی ہدایات

  1. سگنل فلٹرنگ کی اصلاح:
  • رجحان کی تصدیق کے اشارے شامل کریں
  • حجم تجزیہ شامل کریں
  1. پیرامیٹرز کی متحرک اصلاح:
  • RSI اور MA پیرامیٹرز کو مارکیٹ کی اتار چڑھاؤ کی بنیاد پر خودکار طور پر ایڈجسٹ کریں
  • موافقت پذیر مدت کے حساب کے طریقوں کا تعارف
  1. خطرہ کنٹرول کی اصلاح:
  • اسٹاپ نقصان اور منافع لینے کے متحرک میکانزم تیار کریں
  • متحرک پوزیشن مینجمنٹ سسٹم کا ڈیزائن

خلاصہ

یہ حکمت عملی آر ایس آئی اور متعدد حرکت پذیر اوسطوں کو جوڑ کر ایک موافقت پذیر تجارتی نظام تیار کرتی ہے۔ اس کے بنیادی فوائد متعدد تکنیکی اشارے اور لچکدار پیرامیٹر کی تشکیل کی کراس توثیق میں ہیں ، جبکہ اسٹریٹیجی کی کارکردگی پر حرکت پذیر اوسط تاخیر اور مارکیٹ کی حالت کے اثرات پر بھی توجہ دی جانی چاہئے۔ مسلسل اصلاح اور رسک کنٹرول کے ذریعے ، یہ حکمت عملی اصل تجارت میں مستحکم کارکردگی کا وعدہ کرتی ہے۔


/*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 -----


متعلقہ

مزید