RSI ڈسکریٹ ڈائیورجینس اسٹریٹجی


تخلیق کی تاریخ: 2023-11-16 11:36:45 آخر میں ترمیم کریں: 2023-11-16 11:36:45
کاپی: 0 کلکس کی تعداد: 862
1
پر توجہ دیں
1617
پیروکار

RSI ڈسکریٹ ڈائیورجینس اسٹریٹجی

جائزہ

یہ حکمت عملی آر ایس آئی اشارے اور اس کی ای ایم اے اوسط لائن کے کراسنگ کی صورت حال کا اندازہ لگانے اور ممکنہ خرید و فروخت کے مقامات کو تلاش کرنے کے لئے آر ایس آئی کے ساتھ قیمتوں کے انحراف کے ساتھ مل کر ٹریڈ ٹریکنگ حکمت عملی میں شامل ہے۔

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

  1. 14 کی لمبائی کے ساتھ آر ایس آئی اشارے کا حساب لگایا گیا ہے ، جب آر ایس آئی 50 کی حدود کو عبور کرتا ہے تو زیادہ سگنل دیکھتا ہے ، اور اس کے نیچے ایک نظر کا اشارہ ہوتا ہے۔

  2. RSI کی 20 دورانیہ ای ایم اے اور 14 دورانیہ ای ایم اے کی اوسط لائن کا حساب لگائیں ، جب تیز لائن پر سست لائن کو خریدنے کا اشارہ ہوتا ہے ، اور نیچے فروخت کرنے کا اشارہ ہوتا ہے۔

  3. RSI کی قیمت سے انحراف کا پتہ لگانے کے لئے:

  • قیمتوں میں کم جدت لیکن آر ایس آئی میں کم جدت نہیں ، خریدنے کا اشارہ

  • چھپے ہوئے کثیر الاضلاع: قیمتوں میں بہت زیادہ جدت طرازی لیکن آر ایس آئی میں کوئی جدت طرازی نہیں ، خریدنے کے لئے سگنل

  • خالی سر سے ہٹنا: قیمتوں میں جدت طرازی زیادہ ہے لیکن آر ایس آئی میں جدت طرازی نہیں ہے ، فروخت کے لئے اشارے

  • خفیہ خالی سر: قیمت کم لیکن RSI کم نہیں ہے، فروخت کے لئے سگنل

  1. اسٹاپ نقصان کی حکمت عملی کو منتخب کریں ، بشمول فیصد اسٹاپ اور اے ٹی آر اسٹاپ۔

طاقت کا تجزیہ

  1. RSI اشارے کا فائدہ یہ ہے کہ یہ اوورلوڈ اور اوورلوڈ کا پتہ لگاتا ہے۔ ای ایم اے اوسط کا فائدہ یہ ہے کہ یہ ہموار کرنے کا کام کرتا ہے ، اور کچھ شور کو دور کرتا ہے۔

  2. RSI اور قیمتوں سے انحراف رجحان کے الٹ جانے سے پہلے پیشگی سگنل دے سکتا ہے۔

  3. انٹیگریٹڈ دو اشارے سگنل ایک دوسرے کی توثیق کرتے ہیں اور حکمت عملی کی استحکام کو بہتر بناتے ہیں.

  4. اسٹاپ لاسٹ میکانزم سے انفرادی نقصانات پر قابو پایا جا سکتا ہے۔

خطرے کا تجزیہ

  1. آر ایس آئی ایک انڈیکس اشارے کے طور پر ہے جو قیمتوں میں اتار چڑھاؤ کے ساتھ چلتا ہے ، جب قیمتوں میں شدید اتار چڑھاؤ ہوتا ہے تو آر ایس آئی اشارے کی افادیت کو چھوٹ دیا جاتا ہے۔

  2. ای ایم اے کی اوسط لائن میں وقت کی تاخیر کا مسئلہ ہے ، اور اس کا رخ موڑنے کی جگہ کا تعین نہیں کیا جاسکتا ہے۔

  3. سگنل سے ہٹ کر غلط سگنل ہوسکتا ہے ، قیمتیں پہلے کی طرح چلتی رہتی ہیں۔

  4. غیر معقول طور پر اسٹاپ پوائنٹ کی ترتیب غیر ضروری اسٹاپ نقصان کا سبب بن سکتی ہے۔

  5. انخلا کا امکان بہت زیادہ ہے اور اس کے لیے کافی مالی مدد کی ضرورت ہے۔

اصلاح کی سمت

  1. RSI اور EMA کے حساب سے مختلف پیرامیٹرز کی جانچ پڑتال کی جاسکتی ہے تاکہ بہترین پیرامیٹرز کا مجموعہ تلاش کیا جاسکے۔

  2. ای ایم اے کی اوسط لائن کو دوسرے اشارے جیسے ایم اے سی ڈی کے ساتھ تبدیل کرنے پر غور کیا جاسکتا ہے ، تاکہ مجموعہ کو بہتر بنایا جاسکے۔

  3. اس بات کی تصدیق کا طریقہ کار قائم کیا جاسکتا ہے کہ غلط انحراف سے بچنے کے لئے۔ اگر ضرورت ہو تو ، متعدد انحراف سگنل لگاتار متحرک ہوجائیں۔

  4. منافع کو لاک کرنے کے لئے روک تھام کی حکمت عملی میں اضافہ کریں۔

  5. مختصر مدت کے سگنل جیسے کینڈلسٹک پیٹرن کی بنیاد پر اندراج کیا جاسکتا ہے ، جو اس حکمت عملی کے ساتھ رجحانات کا تعین کرتا ہے۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-11-08 00:00:00
end: 2023-11-15 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="RSI Divergence Indicator", overlay=false,pyramiding=2, default_qty_value=2,   default_qty_type=strategy.fixed, initial_capital=10000, currency=currency.USD)

len = input(title="RSI Period", minval=1, defval=14)
src = input(title="RSI Source", defval=close)
lbR = input(title="Pivot Lookback Right", defval=3)
lbL = input(title="Pivot Lookback Left", defval=1)
takeProfitRSILevel = input(title="Take Profit at RSI Level", minval=70, defval=80)

rangeUpper = input(title="Max of Lookback Range", defval=60)
rangeLower = input(title="Min of Lookback Range", defval=5)
plotBull = input(title="Plot Bullish", defval=true)
plotHiddenBull = input(title="Plot Hidden Bullish", defval=true)
plotBear = input(title="Plot Bearish", defval=true)
plotHiddenBear = input(title="Plot Hidden Bearish", defval=false)

sl_type = input("NONE", title="Trailing StopLoss Type", options=['ATR','PERC', 'NONE'])

stopLoss = input(title="Stop Loss%", defval=5, minval=1)

atrLength=input(14, title="ATR Length (for Trailing stop loss)")
atrMultiplier=input(3.5, title="ATR Multiplier (for Trailing stop loss)")


bearColor = color.red
bullColor = color.green
hiddenBullColor = color.new(color.green, 80)
hiddenBearColor = color.new(color.red, 80)
textColor = color.white
noneColor = color.new(color.white, 100)

osc = rsi(src, len)

plot(osc, title="RSI", linewidth=2, color=color.white)
hline(50, title="Middle Line", linestyle=hline.style_dotted)
obLevel = hline(70, title="Overbought", linestyle=hline.style_dotted)
osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted)
fill(obLevel, osLevel, title="Background", color=color.gray, transp=90)

plFound = na(pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(pivothigh(osc, lbL, lbR)) ? false : true

_inRange(cond) =>
    bars = barssince(cond == true)
    rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Regular Bullish

// Osc: Higher Low
oscHL = osc[lbR] > valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Lower Low
priceLL = low[lbR] < valuewhen(plFound, low[lbR], 1)

bullCond = plotBull and priceLL and oscHL and plFound

plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish",
	 linewidth=2,
	 color=(bullCond ? bullColor : noneColor),
	 transp=0
	 )


plotshape(
	 bullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish Label",
	 text=" Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor,
	 transp=0
	 )

//------------------------------------------------------------------------------
// Hidden Bullish

// Osc: Lower Low
oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Higher Low
priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)

hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound

plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish",
	 linewidth=2,
	 color=(hiddenBullCond ? hiddenBullColor : noneColor),
	 transp=0
	 )

plotshape(
	 hiddenBullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish Label",
	 text=" H Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor,
	 transp=0
	 )

longCondition=bullCond or hiddenBullCond
//? osc[lbR] : na  
//hiddenBullCond
strategy.entry(id="RSIDivLE", long=true,  when=longCondition)


//Trailing StopLoss
////// Calculate trailing SL
/////////////////////////////////////////////////////
sl_val = sl_type == "ATR"      ? stopLoss * atr(atrLength) : 
         sl_type == "PERC" ? close * stopLoss / 100 : 0.00

trailing_sl = 0.0
trailing_sl :=   strategy.position_size>=1 ?  max(low  - sl_val, nz(trailing_sl[1])) :  na

//draw initil stop loss
//plot(strategy.position_size>=1 ? trailing_sl : na, color = color.blue , style=plot.style_linebr,  linewidth = 2, title = "stop loss")
//plot(trailing_sl, title="ATR Trailing Stop Loss", style=plot.style_linebr, linewidth=1, color=color.purple, transp=30)
//Trailing StopLoss
////// Calculate trailing SL
/////////////////////////////////////////////////////


//------------------------------------------------------------------------------
// Regular Bearish

// Osc: Lower High
oscLH = osc[lbR] < valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Higher High
priceHH = high[lbR] > valuewhen(phFound, high[lbR], 1)

bearCond = plotBear and priceHH and oscLH and phFound

plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish",
	 linewidth=2,
	 color=(bearCond ? bearColor : noneColor),
	 transp=0
	 )

plotshape(
	 bearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish Label",
	 text=" Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor,
	 transp=0
	 )

//------------------------------------------------------------------------------
// Hidden Bearish

// Osc: Higher High
oscHH = osc[lbR] > valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Lower High
priceLH = high[lbR] < valuewhen(phFound, high[lbR], 1)

hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound

plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish",
	 linewidth=2,
	 color=(hiddenBearCond ? hiddenBearColor : noneColor),
	 transp=0
	 )

plotshape(
	 hiddenBearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish Label",
	 text=" H Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor,
	 transp=0
	 )
longCloseCondition=crossover(osc,takeProfitRSILevel) or bearCond
strategy.close(id="RSIDivLE", comment="Close All="+tostring(close - strategy.position_avg_price, "####.##"), when= abs(strategy.position_size)>=1  and  sl_type == "NONE" and longCloseCondition)

//close all on stop loss
strategy.close(id="RSIDivLE", comment="TSL="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and (sl_type == "PERC"   or sl_type == "ATR" ) and crossunder(close, trailing_sl)  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89

src1 = close, 
len6 = input(14, minval=1, title="RSI Length")
len7 = input(20, minval=1, title="EMA of RSI Length")
len8 = input(14,minval=1, title="Fast EMA")
up = rma(max(change(src1), 0), len6)
down = rma(-min(change(src1), 0), len6)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
emaRSI = ema(rsi,len7)
fastEmaRSI=ema(rsi,len8)

plot(emaRSI, title="EMA of RSI", linewidth=1, color=color.red)
plot(fastEmaRSI,title="Fast EMA of RSI", linewidth=1,color = color.lime)
band1 = hline(80, title="Upper Line", linewidth=1, color=color.red)
band0 = hline(20, title="Lower Line", linewidth=1, color=color.lime)
fill(band1, band0, color=color.purple)