MACD اور RSI کو ملانے والی ایک مختصر مدتی تجارتی حکمت عملی


تخلیق کی تاریخ: 2023-09-13 14:59:32 آخر میں ترمیم کریں: 2023-09-13 14:59:32
کاپی: 0 کلکس کی تعداد: 684
1
پر توجہ دیں
1617
پیروکار

اس حکمت عملی کو MACD اور RSI کی مخلوط مختصر لائن ٹریڈنگ حکمت عملی کہا جاتا ہے۔ اس حکمت عملی میں MACD اور RSI دونوں اشارے کے اشارے کا جامع استعمال کیا جاتا ہے تاکہ منافع کے ل short مختصر لائن کے دورانیے میں مارکیٹ میں ہونے والی تبدیلیوں کو پکڑ سکے۔

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

آر ایس آئی ایک نسبتا strong مضبوط اشارے ہے۔ یہ قیمتوں کی زیادہ خرید و فروخت کی عکاسی کرتا ہے۔ آر ایس آئی 20 سے کم ہونے پر زیادہ فروخت ہوتا ہے ، 80 سے زیادہ ہونے پر زیادہ خرید ہوتا ہے۔ اوور بائی زون قیمتوں میں کمی کا انتباہ ہے؛ اوور سیل زون قیمتوں میں تیزی کا انتباہ ہے۔

اس حکمت عملی کے لئے ٹریڈنگ سگنل دو حصوں سے آتے ہیں:

پہلا ، MACD تیز رفتار لائن کراس اور فرق سے کالم کی تبدیلی۔ جب فرق سے کالم منفی سے مثبت کی طرف مڑتا ہے تو ، اس کی نشاندہی کرتا ہے کہ قیمت میں قلیل مدتی ترقی کی حرکیات موجود ہیں ، اور اسے خریدا جاسکتا ہے۔ جب فرق سے کالم مثبت سے منفی کی طرف مڑتا ہے تو ، اس کی نشاندہی کرتا ہے کہ حرکیات کم ہوچکی ہیں ، اسے فروخت کیا جانا چاہئے۔

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

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

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-09-06 00:00:00
end: 2023-09-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Uraynium V3", overlay=false, pyramiding = 0, calc_on_every_tick=true, precision=1, currency="USD", default_qty_value=10, default_qty_type=strategy.cash,initial_capital=100,commission_type=strategy.commission.percent,commission_value=0.1) 
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
inTimeframe()  => true

overSold      = input( 20 , minval = 1, title = "RSI Oversold")
overBought    = input( 80 , minval = 1, title = "RSI Overbought")
rsiLength     = input(14, minval = 1, title = "RSI Length")
fastLength    = input(12, minval = 1, title = "MACD fast")
slowlength    = input(26, minval = 1, title = "MACD slow")
MACDLength    = input( 9, minval = 1, title = "MACD length")
stopLoss      = input(   10, minval = 1, title = "Stop Loss (price %)")
takeProfit    = input(   50, minval = 1, title = "Take Profit (price %)")
triggerPosLvl = input(    2, minval = 1 ,title ="Take Position Threshold", type=input.float)
src = close

// === CALC ===

stopLossValue        = close*(stopLoss/100)/syminfo.mintick
takeProfitValue      = close*(takeProfit/100)/syminfo.mintick

vrsi = rsi(src, rsiLength)
//avgRSI = vrsi*0.5 + vrsi[1]*0.25 + vrsi[2]*0.125 + vrsi[3]*0.0625
avgRSI = (4*vrsi + 3*vrsi + 2*vrsi[2] + vrsi[3])/10
[macdLine, signalLine, histLine] = macd(src, fastLength, slowlength, MACDLength)


MACDdelta         = signalLine - macdLine
isMACDRunLong     = signalLine > macdLine
isMACDRunShort    = macdLine < signalLine
isMACDSwitchLong  = crossover(MACDdelta, 0)
isMACDSwitchShort = crossunder(MACDdelta, 0)
isMACDCross       = crossover(MACDdelta, 0) or crossunder(MACDdelta, 0)

buySignal =  (histLine-histLine[1]) + (avgRSI - avgRSI[1])

// === ACTION ===
isPosLong    = strategy.position_size > 0
isPosShort   = strategy.position_size < 0
isNoMarginPos= strategy.position_size == 0
entryLong  = (isNoMarginPos or isPosShort) and ( buySignal >  triggerPosLvl )
entryShort = (isNoMarginPos or isPosLong ) and ( buySignal < -triggerPosLvl ) 

if inTimeframe()
    strategy.entry("Long" , strategy.long,  comment="Entry Long",  when=entryLong )
    strategy.entry("Short", strategy.short, comment="Entry Short", when=entryShort)
    strategy.entry("Long" , strategy.long,  comment="Switch Long", when=entryLong)
    strategy.entry("Short", strategy.short, comment="Switch Short",when=entryShort)
    strategy.exit("Stop (long SL/TP)",  loss=stopLossValue, profit=takeProfitValue, when=entryLong )  
    strategy.exit("Stop (short SL/TP)", loss=stopLossValue, profit=takeProfitValue, when=entryShort)  
    strategy.close("Long" , when=entryShort)
    strategy.close("Short", when=entryLong)    

// === DRAW ===
posColor = isNoMarginPos ?  color.black : isPosLong ? color.green : color.red
plot(100, color=posColor,style=plot.style_area, transp=90, histbase=0)
        
plot(buySignal+overBought, color=color.green)
plot(50+macdLine/4, color=color.yellow)
plot(50+signalLine/4, color=color.orange)
histColor = histLine[1]-histLine > 0 ? color.red : color.green
plot(overSold+histLine/2, color=histColor, style=plot.style_histogram, histbase=overSold, transp=50, linewidth=2)

rsicolor = avgRSI>overBought ? color.red : avgRSI<overSold ? color.green : color.blue
plot(avgRSI,color=rsicolor, linewidth=2)
//plot(vrsi,color=color.purple, linewidth=2)
hline(overBought, color=color.red)
hline(overSold, color=color.green)
hline(50, color=color.gray)