डबल मूविंग एवरेज काउंटर ट्रेंड रणनीति मुख्य रूप से विदेशी मुद्रा बाजार पर लागू स्विंग ट्रेडिंग के लिए डिज़ाइन की गई है। यह रणनीति अलग-अलग समय सीमा के दो चलती औसत का उपयोग करके ट्रेडिंग सिग्नल उत्पन्न करती है। जब तेजी से चलती औसत धीमी गति से चलती औसत से ऊपर जाती है, तो उलटा करने के लिए एक छोटी स्थिति ली जाती है; जब तेजी से चलती औसत धीमी गति से चलती औसत से नीचे जाती है, तो उलटा करने के लिए एक लंबी स्थिति ली जाती है।
यह रणनीति 1 घंटे और 1 दिन के समय सीमाओं के चलती औसत का उपयोग करती है। 1 घंटे का चलती औसत मूल्य परिवर्तन को अधिक संवेदनशीलता से दर्शाता है और तेज़ चलती औसत के रूप में कार्य कर सकता है; 1 दिन का चलती औसत मूल्य परिवर्तनों का अधिक धीरे-धीरे जवाब देता है और धीमी चलती औसत के रूप में कार्य कर सकता है। जब तेज़ चलती औसत धीमी चलती औसत से ऊपर पार हो जाती है, तो यह माना जाता है कि वर्तमान बाजार तेजी से बढ़ रहा है और एक छोटा संकेत उत्पन्न होगा; जब तेज़ चलती औसत धीमी चलती औसत से नीचे पार हो जाता है, तो यह माना जाता है कि वर्तमान बाजार मंदी है और एक लंबा संकेत उत्पन्न होगा।
जब तेज और धीमी गति से चलने वाले औसत में स्वर्ण क्रॉस या मृत क्रॉस होते हैं, तो रिवर्स की तलाश करने के लिए लंबे या छोटे में प्रवेश करने का सिद्धांत यह है कि जब तेज और धीमी गति से चलने वाले औसत पार करते हैं, तो यह इंगित करता है कि बाजार उलट सकता है, और तेज रेखा और धीमी रेखा के क्रॉस रिवर्स सिग्नल उत्पन्न करने का समय है। रिवर्स ट्रेडिंग सिद्धांत के अनुसार, कीमतें आमतौर पर एक दिशा में नहीं बढ़ती हैं या गिरती हैं, और यह मूल्य रिवर्स का समय है जब महत्वपूर्ण समर्थन और प्रतिरोध स्तरों का एक सफलता होती है। इसलिए, यह रणनीति रिवर्स के अवसरों को पकड़ने के लिए दोहरी चलती औसत रिवर्स सिग्नल का उपयोग करती है।
यह रणनीति व्यापार के समय और दिनांक की जांच की शर्तों को भी निर्धारित करती है। यह अनुचित अवधि के दौरान व्यापार से बचने के लिए केवल निर्धारित दिनांक सीमा और व्यापार के घंटों के भीतर ही व्यापार करती है।
दोहरी मूविंग एवरेज काउंटर ट्रेंड रणनीति के निम्नलिखित फायदे हैंः
रिवर्स ट्रेडिंग में प्रमुख बिंदुओं पर काउंटर ऑपरेशन करके अस्थिर बाजार स्थितियों में अधिक लाभ प्राप्त किया जा सकता है।
डबल मूविंग एवरेज संयोजनों का उपयोग सिग्नल को फ़िल्टर करता है और झूठे संकेतों से बचता है। एक एकल संकेतक झूठे संकेतों के लिए प्रवण है, जबकि डबल संकेतक संयोजन कुछ झूठे संकेतों को फ़िल्टर करके संकेतों की विश्वसनीयता में सुधार कर सकते हैं, जिससे व्यापारिक अवसर अधिक विश्वसनीय हो जाते हैं।
व्यापार के समय और दिनांक की शर्तों को निर्धारित करने से निष्क्रिय बाजार अवधि से बचा जाता है और फंसने से बचा जाता है। केवल निर्धारित व्यापार के समय और दिनांक सीमा के दौरान व्यापार करके, नाटकीय मूल्य उतार-चढ़ाव की अवधि से बचना संभव है और व्यापार के ठहराव से बचना संभव है।
रिवर्सल रणनीतियाँ मध्यम अवधि के व्यापार के लिए उपयुक्त हैं। उच्च आवृत्ति व्यापार की तुलना में, मध्यम अवधि के व्यापार रणनीतियाँ अधिक स्थिर होती हैं, अत्यधिक लगातार खरीद और बिक्री से बचती हैं।
अधिकतम निकासी नियंत्रण पूंजी प्रबंधन के लिए फायदेमंद है। अधिकतम निकासी अनुपात निर्धारित करने से प्रभावी रूप से ओवरनाइट जोखिम को नियंत्रित किया जा सकता है और धन के भारी नुकसान से बचा जा सकता है।
डबल मूविंग एवरेज काउंटर ट्रेंड रणनीति में निम्नलिखित जोखिम भी हैं:
रिवर्स सिग्नल विफल हो सकते हैं जिससे नुकसान हो सकता है। मूल्य रिवर्स सिग्नल हमेशा विश्वसनीय नहीं होते हैं। जब कीमतें बिना रिवर्स के प्रवृत्ति को जारी रखती हैं तो नुकसान का खतरा होता है। स्टॉप लॉस सेट करके नुकसान को नियंत्रित किया जा सकता है।
रुझान का विचलन नुकसान का कारण बनता है। जब दो चलती औसत उल्टा होने से पहले काफी अलग हो जाते हैं, तो नुकसान का जोखिम हो सकता है। उल्टा होने का समय चलती औसत के बीच की दूरी का निरीक्षण करके निर्धारित किया जा सकता है।
गलत ट्रेडिंग घंटे सेटिंग्स अवसरों को याद कर सकती हैं। यदि ट्रेडिंग घंटे बहुत सख्ती से निर्धारित किए जाते हैं, तो कुछ ट्रेडिंग अवसरों को याद किया जा सकता है। ट्रेडिंग घंटे उचित रूप से विस्तारित किए जा सकते हैं।
प्रतिवर्तन के बाद घाटे को तुरंत रोकने में विफलता के परिणामस्वरूप घाटे का विस्तार होता है। प्रतिवर्तन के बाद, घाटे को तुरंत रोकना चाहिए जब कीमतें घाटे को नियंत्रित करने के लिए मूल प्रवृत्ति को जारी रखती हैं।
दोहरी चलती औसत काउंटर ट्रेंड रणनीति को निम्नलिखित पहलुओं में भी अनुकूलित किया जा सकता हैः
बेहतर ट्रेडिंग सिग्नल खोजने के लिए अधिक संकेतकों के संयोजनों का परीक्षण करें। सिग्नल सटीकता में सुधार के लिए डबल चलती औसत के साथ संयोजन में एमएसीडी, केडीजे जैसे संकेतकों का परीक्षण किया जा सकता है।
इष्टतम मापदंडों को खोजने के लिए चलती औसत चक्र मापदंडों का अनुकूलन करें। विभिन्न लंबाई के चलती औसत को बैकटेस्ट करके सर्वोत्तम चक्र संख्या निर्धारित की जा सकती है।
इष्टतम व्यापारिक घंटों को खोजने के लिए व्यापारिक घंटों का विस्तार या संकुचन करें। विभिन्न उत्पाद विशेषताओं के अनुसार व्यापारिक घंटों को समायोजित करने के प्रभावों का परीक्षण करें।
विचलन से बचने के लिए प्रवृत्ति फ़िल्टरिंग स्थितियों को जोड़ें। प्रवृत्ति की ताकत का न्याय करने के लिए ADX जैसे संकेतक जोड़े जा सकते हैं और जब कोई स्पष्ट प्रवृत्ति नहीं होती है तो उलटा होने से बचें।
सिग्नल सत्यापन के लिए मशीन लर्निंग मॉडल जोड़ें। मॉडलों को रिवर्स सिग्नल की विश्वसनीयता का न्याय करने और कुछ निम्न गुणवत्ता वाले संकेतों को फ़िल्टर करने के लिए प्रशिक्षित किया जा सकता है।
डबल मूविंग एवरेज काउंटर ट्रेंड रणनीति फॉरेक्स बाजार में मध्यम अवधि के व्यापार के लिए उपयुक्त है। यह रिवर्स सिग्नल उत्पन्न करने के लिए तेज और धीमी गति से चलती औसत के बीच स्वर्ण क्रॉस और मृत क्रॉस का उपयोग करता है, जो प्रमुख बाजार बिंदुओं पर काउंटर ऑपरेशन करता है, जिसमें बड़े लाभ स्थान का लाभ होता है। साथ ही, यह जोखिमों को नियंत्रित करने के लिए ट्रेडिंग घंटे और अधिकतम ड्रॉडाउन जैसी सेटिंग्स का भी उपयोग करता है। यह एक अपेक्षाकृत स्थिर रिवर्स सिस्टम है जो जोखिमों को नियंत्रित करते हुए उच्च रिटर्न उत्पन्न कर सकता है। भविष्य में, इस रणनीति में सुधार और अनुकूलन किया जा सकता है।
/*backtest start: 2023-12-08 00:00:00 end: 2024-01-07 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © SoftKill21 //@version=4 strategy("gbpnzd 1h", overlay=true) src = close useCurrentRes = input(true, title="Use Current Chart Resolution?") resCustom = input(title="Use Different Timeframe? Uncheck Box Above", type=input.resolution, defval="60") len = input(28, title="Moving Average Length - LookBack Period") //periodT3 = input(defval=7, title="Tilson T3 Period", minval=1) factorT3 = input(defval=7, title="Tilson T3 Factor - *.10 - so 7 = .7 etc.", minval=0) atype = input(2,minval=1,maxval=8,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA, 8=Tilson T3") fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2000, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2020, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true res = useCurrentRes ? timeframe.period : resCustom resCustom2 = input(title="plm", type=input.resolution, defval="D") res2 = resCustom2 //hull ma definition hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len))) //TEMA definition ema1 = ema(src, len) ema2 = ema(ema1, len) ema3 = ema(ema2, len) tema = 3 * (ema1 - ema2) + ema3 //Tilson T3 factor = factorT3 *.10 gd(src, len, factor) => ema(src, len) * (1 + factor) - ema(ema(src, len), len) * factor t3(src, len, factor) => gd(gd(gd(src, len, factor), len, factor), len, factor) tilT3 = t3(src, len, factor) avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : atype == 7 ? 3 * (ema1 - ema2) + ema3 : tilT3 out = avg ema20 = security(syminfo.tickerid, res, out) plot3 = security(syminfo.tickerid, res2, ema20) plot33 = security(syminfo.tickerid, res, ema20) plot(plot3,linewidth=2,color=color.red) plot(plot33,linewidth=2,color=color.white) // longC = crossover(close[2], plot3) and close[1] > close[2] and close > close[1] // shortc = crossunder(close[2],plot3) and close[1] < close[2] and close < close[1] volumeMA=input(24) ema_1 = ema(volume, volumeMA) timeinrange(res, sess) => time(res, sess) != 0 //entrytime = timeinrange(timeframe.period, "0900-0915") myspecifictradingtimes = input('0900-2300', type=input.session, title="My Defined Hours") entrytime = time(timeframe.period, myspecifictradingtimes) != 0 longC = crossover(plot33,plot3) and time_cond and entrytime shortc = crossunder(plot33,plot3) and time_cond and entrytime // exitlong = crossunder(plot33,plot3) // exitshort = crossover(plot33,plot3) distanta=input(1.0025) exitshort = plot33/plot3 > distanta exitlong = plot3/plot33 > distanta inverse = input(true) exit = input(false) if(inverse==false) strategy.entry("long",1,when=longC) strategy.entry("short",0,when=shortc) if(inverse) strategy.entry("long",1,when=shortc) strategy.entry("short",0,when=longC) if(exit) strategy.close("long",when=exitlong) strategy.close("short",when=exitshort) // if(dayofweek==dayofweek.friday) // strategy.close_all() // risk = input(25) // strategy.risk.max_intraday_loss(risk, strategy.percent_of_equity)