इस रणनीति को संक्षिप्त रूप से MACD और RSI के संलयन के रूप में जाना जाता है। यह रणनीति MACD और RSI दोनों संकेतकों के संकेतों का उपयोग करती है, ताकि लाभ के लिए शॉर्ट-लाइन चक्र में बाजार में बदलाव को पकड़ लिया जा सके।
एमएसीडी एक सूचकांक चिकनी चलती औसत है। यह एक तेज लाइन, धीमी लाइन और एक स्तंभ विसंगति रेखा से बना है। जब तेज लाइन धीमी लाइन को पार करती है, तो अल्पकालिक मूल्य परिवर्तन का प्रतिनिधित्व करने वाली गतिशीलता बढ़ जाती है, एक खरीद संकेत उत्पन्न करती है; जब तेज लाइन धीमी लाइन को पार करती है, तो गतिशीलता कम हो जाती है, एक बिक्री संकेत उत्पन्न करती है।
आरएसआई एक अपेक्षाकृत मजबूत और कमजोर संकेत है। यह कीमतों के ओवरबॉय और ओवरबॉय की स्थिति को दर्शाता है। आरएसआई 20 से कम होने पर ओवरबॉय है, 80 से अधिक होने पर ओवरबॉय है। ओवरबॉय क्षेत्र मूल्य में गिरावट का पूर्वानुमान है; ओवरबॉय क्षेत्र मूल्य में उछाल का पूर्वानुमान है।
इस रणनीति के लिए ट्रेडिंग सिग्नल दो भागों से आते हैंः
पहला, MACD तेजी से धीमी गति से लाइन क्रॉसिंग और विस्थापन स्तंभ परिवर्तन. जब विस्थापन स्तंभ नकारात्मक से सकारात्मक में बदलता है, तो यह दर्शाता है कि कीमत में अल्पकालिक वृद्धि गतिशीलता है, इसे खरीदा जा सकता है। जब विस्थापन स्तंभ सकारात्मक से नकारात्मक में बदलता है, तो यह दर्शाता है कि गतिशीलता कमजोर हो रही है, इसे बेचा जाना चाहिए।
दूसरा, आरएसआई के ओवरबॉय ओवरसोल। आरएसआई के संयोजन से मैकड द्वारा उत्पन्न कुछ झूठे संकेतों को फ़िल्टर किया जा सकता है। केवल आरएसआई कम होने पर खरीदना और आरएसआई उच्च होने पर बेचना सफलता की दर को बढ़ा सकता है।
इस रणनीति का लाभ यह है कि दो संकेतकों के लाभों को एकीकृत करने से ट्रेडिंग सिग्नल की सटीकता में सुधार होता है। समय पर अल्पकालिक परिवर्तनों को पकड़ने के लिए, संवेदनशीलता है। लेकिन एमएसीडी और आरएसआई पैरामीटर को अनुकूलित करने की आवश्यकता है, ताकि ओवर-ट्रेडिंग से बचा जा सके। स्टॉप-लॉस पॉइंट को उचित रूप से सेट करने की भी आवश्यकता है, ताकि एक ही लेनदेन के नुकसान को नियंत्रित किया जा सके।
संक्षेप में, इस रणनीति के लिए उपयुक्त है संक्षिप्त लाइन चक्र के गतिशील व्यापार, बाजार में अल्पकालिक पलटाव से लाया लाभ के अवसरों को पकड़ने में सक्षम है. लेकिन सक्रिय जोखिम प्रबंधन उपायों की सहायता की जरूरत है, और बाजार के रुझान को बारीकी से ट्रैक करने के लिए समय में रणनीति पैरामीटर को समायोजित करने के लिए.
/*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)