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