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

مصنف:چاؤ ژانگ، تاریخ: 2023-09-13 14:59:32
ٹیگز:

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

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

آر ایس آئی کا مطلب رشتہ دار طاقت کا اشاریہ ہے۔ یہ قیمتوں کی زیادہ خرید اور زیادہ فروخت کی حالت کو ظاہر کرتا ہے۔ آر ایس آئی 20 سے نیچے زیادہ فروخت ہوتا ہے ، اور 80 سے اوپر زیادہ خریدا جاتا ہے۔ زیادہ خرید زون ممکنہ قیمتوں میں گرنے کی انتباہ ہیں ، جبکہ زیادہ فروخت زون ممکنہ اچھال کی انتباہ کرتے ہیں۔

اس حکمت عملی کے تجارتی سگنل دو پہلوؤں سے آتے ہیں:

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

دوسرا ، آر ایس آئی زیادہ خرید / زیادہ فروخت کی سطحیں۔ آر ایس آئی کو یکجا کرنے سے ایم اے سی ڈی سے کچھ غلط سگنل فلٹر کرنے میں مدد ملتی ہے۔ جب آر ایس آئی کم ہو تو صرف خریدنا اور جب آر ایس آئی زیادہ ہو تو صرف فروخت کرنا درستگی کو بہتر بناتا ہے۔

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

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


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


مزید