डुअल एमएसीडी रिवर्सल ट्रेडिंग रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जो ट्रेंड रिवर्सल सिग्नल की पहचान करने के लिए एमएसीडी संकेतक का उपयोग करती है। यह रणनीति खरीद संकेतों की पुष्टि करने और कुछ झूठे उलटफेरों को फ़िल्टर करने के लिए आरवीआई संकेतक और सीसीआई संकेतक को भी जोड़ती है। यह रणनीति इंट्राडे और अल्पकालिक ट्रेडिंग के लिए उपयुक्त है।
यह रणनीति मुख्य रूप से एमएसीडी संकेतक पर आधारित है। एमएसीडी तेजी से चलती औसत ईएमए ((12) को घटाकर धीमी गति से चलती औसत ईएमए ((26) को तेजी से रेखा प्राप्त करने के लिए है, और फिर धीमी रेखा के रूप में सिग्नल ((9) का उपयोग करें। जब तेजी से रेखा स्वर्ण क्रॉस उत्पन्न करने के लिए धीमी रेखा के ऊपर से गुजरती है, तो यह तेजी है; जब तेजी से रेखा धीमी रेखा से नीचे से गुजरती है, तो यह मंदी है।
यह रणनीति उलट अवसरों की पहचान करने के लिए दोहरे समय सीमा MACD संकेतकों का उपयोग करती है। रणनीति समग्र प्रवृत्ति दिशा निर्धारित करने के लिए 6-घंटे के MACD का उपयोग करती है और उलट संकेत खोजने के लिए 1-घंटे के MACD का उपयोग करती है। जब 6-घंटे का MACD एक अपट्रेंड में होता है, यदि 1-घंटे की तेजी से रेखा धीमी रेखा से नीचे की ओर जाती है, तो यह इंगित करती है कि कीमत ऊपर की ओर पलट सकती है। इस बिंदु पर, आरवीआई संकेतक और सीसीआई संकेतक को जोड़कर आगे की पुष्टि करें और खरीद संकेत उत्पन्न करें।
आरवीआई संकेतक सबसे हाल के कुछ मोमबत्तियों के समापन मूल्य और उद्घाटन मूल्य के बीच के संबंध को उच्चतम और निम्नतम कीमतों के मुकाबले मापता है। 0.2 से नीचे का आरवीआई ओवरसोल्ड माना जाता है। -100 से नीचे का सीसीआई संकेतक ओवरसोल्ड को इंगित करता है। इसलिए रणनीति खरीद संकेत की पुष्टि करने में मदद करने के लिए 0.2 से नीचे के आरवीआई संकेतक और -95 से नीचे के सीसीआई संकेतक का उपयोग करती है।
यह रणनीति दो समय सीमा MACD और RVI और CCI संकेतकों को संयोजित करती है ताकि प्रतिवर्तन के अवसरों की सटीक पहचान की जा सके और रणनीति की स्थिरता में सुधार के लिए कुछ झूठे प्रतिवर्तन संकेतों को फ़िल्टर किया जा सके। विशिष्ट लाभ निम्नलिखित हैंः
मुख्य प्रवृत्ति निर्धारित करने के लिए 6 घंटे के एमएसीडी का उपयोग करें और व्यापक बाजार में बढ़ी हुई अनिश्चितता वाले वातावरण में व्यापार से बचें।
1-घंटे का एमएसीडी प्रतिगमन समय की पहचान करता है और कम चक्र मूल्य समायोजन को कैप्चर करता है।
आरवीआई सूचक और सीसीआई सूचक के संयोजन से उलटफेर के समय को अधिक सटीक रूप से निर्धारित किया जा सकता है।
इस रणनीति में घाटे को कम करने के लिए स्टॉप लॉस शामिल है।
इस रणनीति में कुछ जोखिम भी हैं, जो मुख्य रूप से निम्नलिखित में परिलक्षित होते हैंः
एमएसीडी स्वयं झूठे संकेत उत्पन्न करने की प्रवृत्ति रखता है, इसलिए भले ही सहायक संकेतकों का अच्छा फ़िल्टरिंग प्रभाव हो, लेकिन नुकसान से पूरी तरह से बचना असंभव है। स्थिति का आकार कम करने की सिफारिश की जाती है।
आरवीआई और सीसीआई संकेतक गलत संकेत दे सकते हैं, इस प्रकार बेहतर उलट अवसर खो सकते हैं या अनावश्यक नुकसान बढ़ सकते हैं। आरवीआई और सीसीआई मापदंडों को उचित रूप से समायोजित करने की सिफारिश की जाती है।
गलत स्टॉप लॉस सेटिंग स्टॉप लॉस को बहुत बार ट्रिगर कर सकती है या बहुत ढीला होने पर समय पर नियंत्रण करने में विफल हो सकती है। बाजार की अस्थिरता के अनुसार स्टॉप लॉस परिमाण को समायोजित करने की सिफारिश की जाती है।
इस रणनीति को निम्नलिखित पहलुओं से और अनुकूलित किया जा सकता हैः
वर्तमान में 1 घंटे और 6 घंटे के दो समय फ्रेम का उपयोग करते हुए, अधिक स्थिर मापदंडों को खोजने के लिए अधिक समय फ्रेम संयोजनों का परीक्षण किया जा सकता है।
ट्रेडिंग पॉइंट्स का आकलन करने में सहायता के लिए अधिक संकेतक जैसे कि केडीजे, डब्ल्यूआर, ओबीवी आदि पेश किए जा सकते हैं। लेकिन अत्यधिक जटिल ट्रेडिंग सिग्नल उत्पन्न न करने का ध्यान रखें।
मापदंडों को विभिन्न किस्मों के लिए लगातार अनुकूलित किया जा सकता है, और मापदंड पुस्तकालय स्थापित किए जा सकते हैं। मध्यम और निम्न आवृत्ति व्यापार के लिए उपयुक्त किस्मों के लिए, लंबे चक्र मापदंडों को उचित रूप से बढ़ाया जा सकता है।
एक गतिशील स्टॉप लॉस तंत्र को सेट किया जा सकता है ताकि लाभ बढ़ने के साथ स्टॉप लॉस बिंदु को धीरे-धीरे स्थानांतरित किया जा सके। या बाजार की अस्थिरता के अनुसार वास्तविक समय में स्टॉप लॉस परिमाण को समायोजित किया जा सके।
डुअल एमएसीडी रिवर्सल ट्रेडिंग रणनीति में ट्रेंड जजमेंट और रिवर्सल सिग्नल को व्यापक रूप से माना जाता है, और संकेतों को फ़िल्टर करने के लिए आरवीआई और सीसीआई संकेतकों द्वारा सहायता प्राप्त होती है। यह रणनीति प्रभावी रूप से अच्छे जोखिम-लाभ अनुपात के साथ अल्पकालिक समायोजन की पहचान कर सकती है, जो इंट्राडे और अल्पकालिक ट्रेडिंग के लिए उपयुक्त है, और समग्र रणनीति विविधता प्रदान करने के लिए मल्टी-स्ट्रैटेजी पोर्टफोलियो के हिस्से के रूप में भी इस्तेमाल किया जा सकता है।
/*backtest start: 2023-01-05 00:00:00 end: 2024-01-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Bat MACD", overlay=true) fastLength = input(12) slowlength = input(26) MACDLength = input(9) h=1.05 MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD hmacd= aMACD>0? h*aMACD: -(1/h)*abs(MACD) MACDD= (request.security(syminfo.tickerid,'360',ema(close, fastLength)) - request.security(syminfo.tickerid,'360',ema(close,slowlength))) aMACDD = (request.security(syminfo.tickerid,'360',ema(ema(request.security(syminfo.tickerid,'360',close), fastLength)-ema(request.security(syminfo.tickerid,'360',close),slowlength), MACDLength))) deltad= MACDD-aMACDD L= input(0.95, title="SL") SL = L*ema(close,10) //MACD slow = input(26,"Short period") fast = input(12, "Long period") signal = input(9, "Smoothing period") //MACD = ema(close,fast)-ema(close,slow) dMACD= MACD<0? ema(MACD,5):0 Mcond= rising(dMACD,1) mcount=0.0 mcount := Mcond ? nz(mcount[1]) + 1 : nz(mcount[1]) counter=0 counter := (mcount-mcount[1]==0) ? nz(counter[1]) + 1 : 0 //counter := counter==3 ? 0: nz(counter[1]) pp=0.0 mc=0.0 pp:= (counter-counter[1]<0)? close[1] : nz(pp[1]) mc:= (counter-counter[1]<0)? MACD[1] : nz(mc[1]) bull = (pp-pp[1]<-close*0.005 and mc-mc[1]>0.02*abs(MACD) and MACD<0 and MACD[1]<0)? 1:0 //bgcolor(bull?green:white) //RVI p=10 CO=close-open HL=high-low value1 = (CO + 2*CO[1] + 2*CO[2] + CO[3])/6 value2 = (HL + 2*HL[1] + 2*HL[2] + HL[3])/6 num=sum(value1,p) denom=sum(value2,p) rvi=denom!=0?num/denom:0 //RVI drvi= (rvi<0.2)? ema(rvi-0.20,3):0 RVcond= rising(drvi,1) rvcount=0.0 rvcount := RVcond ? nz(rvcount[1]) + 1 : nz(rvcount[1]) rvcounter=0 rvcounter := (rvcount-rvcount[1]==0) ? nz(rvcounter[1]) + 1 : 0 //counter := counter==3 ? 0: nz(counter[1]) rvpp=0.0 rvmc=0.0 rvpp:= (rvcounter-rvcounter[1]<0)? close[1] : nz(rvpp[1]) rvmc:= (rvcounter-rvcounter[1]<0)? drvi[1] : nz(rvmc[1]) rvbull = (rvpp-rvpp[1]<-close*0.005 and rvmc-rvmc[1]>0.02 and drvi<0 and drvi[1]<0)? 1:0 //VolCCI length1 = input(10, minval=1) xMAVolPrice = ema(volume * close, length1) xMAVol = ema(volume, length1) src1 = xMAVolPrice / xMAVol map = sma(src1, length1) cci = (src1 - map) / (0.015 * dev(src1, length1)) cfi= (cci<0)? ema(cci,3) :0 CCcond= rising(cfi,1) cccount=0.0 cccount := CCcond ? nz(cccount[1]) + 1 : nz(cccount[1]) cccounter=0 cccounter := (cccount-cccount[1]==0) ? nz(cccounter[1]) + 1 : 0 //counter := counter==3 ? 0: nz(counter[1]) ccpp=0.0 ccmc=0.0 ccpp:= (cccounter-cccounter[1]<0)? close[1] : nz(ccpp[1]) ccmc:= (cccounter-cccounter[1]<0)? cci[1] : nz(ccmc[1]) ccbull = (ccpp-ccpp[1]<-close*0.003 and ccmc-ccmc[1]>20 and cci<-95 and cci[1]<-95)? 1:0 A= bull+ccbull+rvbull if ((MACD>hmacd) and deltad>0 and delta>delta[1]) strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close) if (crossunder(delta, 0) or crossunder(close,SL)) strategy.close("Long") if(crossover(low,SL) and SL-SL[1]<close*0.005 and SL-SL[1]>-close*0.005) strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close) if A strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close) plot(SL) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)