یہ حکمت عملی رشتہ دار طاقت انڈیکس (آر ایس آئی) پر مبنی ایک متحرک تجارتی نظام ہے ، جو زیادہ خریدنے اور زیادہ فروخت والے زونوں کے ذریعے تجارت کی نشاندہی کرتا ہے۔ مخصوص وقت کی کھڑکیوں میں کام کرنا ، اس میں جزوی منافع لینے اور متحرک اسٹاپ نقصان کے طریقہ کار شامل ہیں۔ یہ نظام تجارتی سگنل کا تعین کرنے کے لئے 70 اور 30 کی سطح پر آر ایس آئی کی پیشرفتوں کی نگرانی کرتا ہے ، تجارتی نتائج کو بہتر بنانے کے لئے لچکدار پوزیشن مینجمنٹ کے طریقوں کا استعمال کرتا ہے۔
بنیادی منطق آر ایس آئی اشارے پر مبنی ہے، جس میں مندرجہ ذیل اہم عناصر شامل ہیں: 1۔ مارکیٹ کی رفتار کا حساب لگانے کے لئے 14 پیریڈ آر ایس آئی کا استعمال کرتا ہے۔ 2. RSI 70 کی توڑ پر مختصر سگنل اور RSI 30 پر طویل سگنل پیدا کرتا ہے 3۔ تجارت کو 8:00 اور 11:00 GMT+2 کے درمیان انجام دیتا ہے 4۔ 50 فیصد جزوی اور مکمل منافع کے اہداف کے ساتھ دوہری منافع لینے کا طریقہ کار استعمال کرتا ہے 5. جزوی منافع کے ہدف تک پہنچنے کے بعد اسٹاپ نقصان کو بریک اینڈ میں ایڈجسٹ کرتا ہے سٹاپ نقصان اور منافع کے اہداف کے لئے فکسڈ پی آئی پی ایس کا استعمال کرتا ہے
اسٹریٹجی آر ایس آئی اشارے کے ذریعہ مارکیٹ میں زیادہ خریدنے اور زیادہ فروخت کے مواقع کو حاصل کرتی ہے ، جس میں سخت رسک مینجمنٹ اور ٹائم فلٹرنگ کو یکجا کرکے ایک مکمل تجارتی نظام تشکیل دیا جاتا ہے۔ اگرچہ اس کی کچھ حدود ہیں ، لیکن تجویز کردہ اصلاح کی سمت حکمت عملی کے استحکام اور منافع کو مزید بڑھا سکتی ہے۔ ماڈیولر ڈیزائن ایڈجسٹ کرنے اور بہتر بنانے میں آسانی پیدا کرتا ہے ، جو ذاتی اصلاحات کے لئے ایک بنیادی حکمت عملی کے طور پر موزوں ہے۔
/*backtest start: 2024-12-17 00:00:00 end: 2025-01-16 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy(title="RSI Overbought and Oversold Levels - Mikel Vaquero", shorttitle="RSI Levels", overlay=true) // Configuración del RSI rsiLengthInput = input.int(14, minval=1, title="RSI Length") rsiSourceInput = input.source(close, title="RSI Source") rsiLevelOverbought = input(70, title="Overbought Level") rsiLevelOversold = input(30, title="Oversold Level") rsiLevelMiddle = input(50, title="Middle Level") // Nueva entrada para el nivel 50 // Configuración del stop loss y take profit en pips stopLossPips = input.int(15, title="Stop Loss (pips)") takeProfitPips = input.int(100, title="Take Profit (pips)") partialProfitPips = input.int(50, title="Partial Profit (pips)") // Configuración del horario de operación startHour = input.int(8, title="Start Hour (GMT+2)", minval=0, maxval=23) startMinute = input.int(0, title="Start Minute (GMT+2)", minval=0, maxval=59) endHour = input.int(11, title="End Hour (GMT+2)", minval=0, maxval=23) endMinute = input.int(0, title="End Minute (GMT+2)", minval=0, maxval=59) // Calcular el RSI up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput) down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) // Condiciones de sobrecompra y sobreventa overboughtCondition = ta.crossover(rsi, rsiLevelOverbought) oversoldCondition = ta.crossunder(rsi, rsiLevelOversold) // Plotear el RSI y los niveles plot(rsi, "RSI", color=color.rgb(236, 222, 13)) hline(rsiLevelOverbought, "Overbought", color=color.rgb(6, 245, 6)) hline(rsiLevelOversold, "Oversold", color=color.rgb(243, 32, 4)) hline(rsiLevelMiddle, "Middle", color=color.blue) // Nueva línea para el nivel 50 // Plotear formas para las condiciones plotshape(series=overboughtCondition, title="Overbought", location=location.top, color=color.rgb(26, 241, 6), style=shape.labeldown, text="B") plotshape(series=oversoldCondition, title="Oversold", location=location.bottom, color=#fa0d05, style=shape.labelup, text="S") // Condiciones de alerta alertcondition(overboughtCondition, title='RSI Overbought', message='RSI has crossed above the overbought level') alertcondition(oversoldCondition, title='RSI Oversold', message='RSI has crossed below the oversold level') // Convertir los valores de pips a la escala de precios del gráfico pipValue = syminfo.mintick * 10 stopLoss = stopLossPips * pipValue takeProfit = takeProfitPips * pipValue partialProfit = partialProfitPips * pipValue // Configurar las horas de operación (horario español) timeInRange = (hour(time, "GMT+2") > startHour or (hour(time, "GMT+2") == startHour and minute(time, "GMT+2") >= startMinute)) and (hour(time, "GMT+2") < endHour or (hour(time, "GMT+2") == endHour and minute(time, "GMT+2") < endMinute)) // Variables de estado para rastrear la señal actual var bool longPositionTaken = false var bool shortPositionTaken = false // Estrategia de entrada y salida if timeInRange if overboughtCondition and not longPositionTaken strategy.entry("Long", strategy.long) strategy.exit("Partial Take Profit", from_entry="Long", qty_percent=50, limit=close + partialProfit) strategy.exit("Stop Loss", from_entry="Long", stop=close - stopLoss) strategy.exit("Full Take Profit", from_entry="Long", limit=close + takeProfit) longPositionTaken := true shortPositionTaken := false if oversoldCondition and not shortPositionTaken strategy.entry("Short", strategy.short) strategy.exit("Partial Take Profit", from_entry="Short", qty_percent=50, limit=close - partialProfit) strategy.exit("Stop Loss", from_entry="Short", stop=close + stopLoss) strategy.exit("Full Take Profit", from_entry="Short", limit=close - takeProfit) shortPositionTaken := true longPositionTaken := false // Ajustar el stop loss a breakeven después de tomar la ganancia parcial if strategy.position_size > 0 and close >= strategy.position_avg_price + partialProfit strategy.exit("Move Stop to Breakeven", stop=strategy.position_avg_price, qty_percent=50) if strategy.position_size < 0 and close <= strategy.position_avg_price - partialProfit strategy.exit("Move Stop to Breakeven", stop=strategy.position_avg_price, qty_percent=50)