डबल मूविंग एवरेज ट्रेंड ट्रैकिंग रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जो स्टॉक की कीमत के रुझानों को ट्रैक करती है। यह रणनीति कीमत के रुझानों की दिशा निर्धारित करने के लिए एक दोहरी घातीय मूविंग एवरेज प्रणाली का उपयोग करती है और ट्रेंड की ताकत का न्याय करने के लिए ADX संकेतक को जोड़ती है, मध्यम से दीर्घकालिक मूल्य रुझानों को कैप्चर करती है।
यह रणनीति मुख्य रूप से मूल्य प्रवृत्ति की दिशा निर्धारित करने के लिए दोहरे घातीय चलती औसत प्रणाली पर आधारित है। रणनीति में अलग-अलग मापदंडों वाले दो तेज और धीमे ईएमए का उपयोग किया जाता है, तेज ईएमए 1 मूल्य परिवर्तनों पर अधिक तेजी से प्रतिक्रिया करता है, और धीमी ईएमए 2 मूल्य परिवर्तनों पर अधिक धीरे-धीरे प्रतिक्रिया करता है। जब तेज रेखा धीमी रेखा के ऊपर से गुजरती है, तो यह एक खरीद संकेत है जो इंगित करता है कि कीमत बढ़ने लगी है; जब तेज रेखा धीमी रेखा से नीचे पार करती है, तो यह एक बिक्री संकेत है जो इंगित करता है कि कीमत गिरने लगी है।
इसके अलावा, रणनीति प्रवृत्ति की ताकत का न्याय करने के लिए एडीएक्स संकेतक भी पेश करती है। एडीएक्स प्रवृत्ति की ताकत का न्याय करने के लिए मूल्य उतार-चढ़ाव की गणना करता है। जब एडीएक्स बढ़ता है, तो इसका मतलब है कि प्रवृत्ति मजबूत हो रही है; जब एडीएक्स गिरता है, तो इसका मतलब है कि प्रवृत्ति कमजोर हो रही है। रणनीति एडीएक्स संकेतक के माध्यम से ट्रेडिंग फ़िल्टर स्थितियों को निर्धारित करती है, केवल ट्रेडिंग संकेत जारी करती है जब प्रवृत्ति की ताकत अपेक्षाकृत मजबूत होती है।
विशेष रूप से, रणनीति के संकेत उत्पादन नियम हैंः
यह प्रभावी रूप से कमजोर प्रवृत्ति शक्ति वाले अमान्य संकेतों को फ़िल्टर कर सकता है, जिससे ट्रेडिंग प्रणाली की स्थिरता में और सुधार होता है।
इस रणनीति के निम्नलिखित मुख्य लाभ हैंः
मध्यम से दीर्घकालिक मूल्य रुझानों को दर्शाता है: दोहरी ईएमए प्रणाली मध्यम से दीर्घकालिक मूल्य रुझानों को प्रभावी ढंग से निर्धारित कर सकती है और अल्पकालिक बाजार शोर से हस्तक्षेप से बच सकती है।
झूठे ब्रेकआउट फ़िल्टर करता है: ADX सूचक के माध्यम से प्रवृत्ति की मजबूती का आकलन करके, यह प्रवृत्ति के मोड़ के आसपास झूठे ब्रेकआउट के कारण होने वाले अनावश्यक नुकसान से बचता है।
बड़े पैरामीटर अनुकूलन स्थान: तेज और धीमी लाइन पैरामीटर, ADX पैरामीटर और अधिक अनुकूलन के लिए जगह है जो पैरामीटर संयोजन के माध्यम से बेहतर व्यापार परिणाम दे सकते हैं।
उच्च अनुकूलन क्षमता: यह रणनीति अधिकांश शेयरों और समय सीमाओं के लिए उपयुक्त है और विभिन्न बाजारों में सत्यापित की गई है।
लागू करने में आसान: इस रणनीति के लिए केवल सरल चलती औसत संकेतकों की आवश्यकता होती है, कम संसाधनों की खपत होती है, इसे प्रोग्राम करना आसान होता है, और व्यावहारिक अनुप्रयोग लागत कम होती है।
इस रणनीति में कुछ जोखिम भी हैं, जो मुख्य रूप से निम्नलिखित क्षेत्रों में केंद्रित हैंः
रुझान उलटने का जोखिम: कोई भी रुझान रणनीति रुझान उलटने के बिंदुओं को पूरी तरह से निर्धारित नहीं कर सकती है, और वास्तविक रुझान वास्तव में उलट जाने पर अधिक नुकसान उठाने के लिए बाध्य है।
अनुकूलन जोखिम से अधिक: परिमाणों को चरम सीमा तक अनुकूलित करने से रणनीतियों को ऐतिहासिक आंकड़ों से अधिक अनुकूलित किया जा सकता है, जिससे रणनीतियों की स्थिरता और व्यावहारिक प्रभाव कम हो जाएगा।
ब्लैक स्वान घटना जोखिम: प्रमुख अप्रत्याशित घटनाएं मूल मूल्य प्रवृत्ति मॉडल को तोड़ देंगी, जिससे चलती औसत संकेतक विफल हो जाएगा, जिससे नुकसान को नियंत्रित करने के लिए मैन्युअल हस्तक्षेप या स्टॉप लॉस सेटिंग की आवश्यकता होगी।
उपरोक्त जोखिमों से निपटने के लिए, हम निम्नलिखित पहलुओं से अनुकूलन कर सकते हैंः
मूल्य मोड़ बिंदुओं को निर्धारित करने के लिए अतिरिक्त संकेतक पेश करें। उदाहरण के लिए, व्यापार की मात्रा पेश करें, जो मूल्य मोड़ बिंदुओं के दिखाई देने पर बढ़ेगी।
यह सुनिश्चित करने के लिए कि रुझान के प्रारंभिक चरणों में अवसरों को जब्त किया जा सके, ADX मापदंडों को ठीक से ढीला करें। MACD और अन्य सहायक निर्णय संकेतक भी पेश किए जा सकते हैं।
पैरामीटर संयोजनों का बहु-समूह प्रशिक्षण और परीक्षण करना और अच्छी स्थिरता और व्यावहारिक प्रभाव वाले संयोजनों का चयन करना। इससे एकल पैरामीटर समूहों के अति-अनुकूलन के जोखिमों से बचा जाता है।
इस रणनीति को कुछ दिशाओं में भी अनुकूलित किया जा सकता हैः
स्टॉप लॉस तंत्र लागू करें: गतिशील स्टॉप लॉस या प्रतिशत स्टॉप लॉस सेट करें, जो अत्यधिक नुकसान से बचने के लिए रुझानों के उलट होने पर सक्रिय रूप से नुकसान को रोक सकता है।
व्यापारिक आय के संकेतकों का संयोजनउदाहरण के लिए व्यापारिक मात्रा, जो गलत संकेतों से बच सकती है जब मूल्य मोड़ के बिंदु पर व्यापारिक मात्रा बढ़ जाती है।
पैरामीटर स्व-अनुकूली अनुकूलन: स्थिर स्थैतिक मापदंडों के बजाय वास्तविक समय में बाजार परिवर्तनों के अनुसार सूचक मापदंडों को अनुकूलित करने की अनुमति दें, जो रणनीतियों की स्थिरता में काफी सुधार कर सकता है।
मशीन लर्निंग का परिचय: चलती औसत और एडीएक्स के पैरामीटर निर्धारित करने के लिए ऐतिहासिक डेटा की बड़ी मात्रा का विश्लेषण करने के लिए मशीन लर्निंग एल्गोरिदम का उपयोग करें, और यहां तक कि भविष्य के मूल्य आंदोलनों की भविष्यवाणी करें। यह चलती औसत रणनीतियों के विकास के लिए एक दिशा है।
क्रॉस-साइकिल अनुकूलन: विभिन्न व्यापार चक्र मापदंडों को अलग-अलग सेट किया जा सकता है और प्रत्येक चक्र के तहत इष्टतम विन्यास का परीक्षण किया जा सकता है।
सामान्य तौर पर, डबल मूविंग एवरेज ट्रेंड ट्रैकिंग रणनीति एक परिपक्व और स्थिर रणनीति विचार है। यह रणनीति दोहरी ईएमए प्रणाली के माध्यम से मध्यम से दीर्घकालिक मूल्य रुझानों को पकड़ती है, और इसमें एडीएक्स संकेतक है जो संकेतों को फ़िल्टर करता है, जो प्रभावी रूप से शेयर मूल्य रुझानों को पकड़ सकता है और अल्पकालिक बाजार शोर से हस्तक्षेप से बच सकता है। उसी समय, इस रणनीति में कुछ जोखिम भी हैं, जिसमें पैरामीटर संयोजनों और स्टॉप लॉस विधियों के अनुकूलन की आवश्यकता होती है, और यहां तक कि रणनीति स्थिरता को बढ़ाने के लिए अधिक सहायक संकेतक और मशीन लर्निंग एल्गोरिदम भी पेश कर सकते हैं। सारांश में, डबल मूविंग एवरेज ट्रेंड ट्रैकिंग रणनीति में अच्छा संतुलन है, और मध्यम से दीर्घकालिक निवेशकों के लिए उपयुक्त एक मात्रात्मक रणनीति विचार है।
/*backtest start: 2022-12-14 00:00:00 end: 2023-11-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Kitaec Strategy4", shorttitle = "Kitaec str4", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") len = input(14, defval=14, minval=1, maxval=1000, title="Smoothing") len2 = input(14, defval=14, minval=1, maxval=1000, title="Smoothing2") len3=input(550) src = close ema1=ema(src, len) ema2=ema(ema1, len2) d=ema1-ema2 zlema=ema1+d ema21=ema(src, (len/3)*2) ema22=ema(ema21, (len2/3)*2) d2=ema21-ema22 zlema2=ema21+d2 ema31=ema(src, len3) ema32=ema(ema21, len3) d3=ema31-ema32 zlema3=ema31+d2 fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //MAs //ma1 = security(tickerid, "60", vwma(src, len)[1]) //ma2 = security(tickerid, "120", vwma(src, len)[1]) //plot(ma1, linewidth = 2, color = blue, title = "MA") //plot(ma2, linewidth = 2, color = red, title = "MA2") // ADX lenadx = 14 lensig = 14 limadx = 18 up = change(high) down = -change(low) trur = rma(tr, lenadx) plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, lenadx) / trur) minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, lenadx) / trur) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), lensig) adx2 = ema(adx, 14) adx2i = ema(adx2,14) dadx2 = adx2 - adx2i zladx2 = adx2 + dadx2 plus2 = ema(plus, 14) plus2i = ema (plus2, 14) dplus2 = plus2 - plus2i zlplus2 = plus2 + dplus2 minus2 = ema(minus, 14) minus2i = ema (minus2, 14) dminus2 = minus2 - minus2i zlminus2 = minus2 + dminus2 vwma = vwma(close, 150) vwma2 = ema(vwma, 9) vwma2i = ema(vwma2, 9) dvwma2 = vwma2 - vwma2i zlvwma2 = vwma2 + dvwma2 rmax=rma(src, len) rmax2=rma(rmax, len2) rmd=rmax-rmax2 zlrmax=rmax+rmd rmaxz=rma(src, (len/3)*2) rmaxz2=rma(rmaxz, (len2/3)*2) rmzd=rmaxz-rmaxz2 zlrmaxz=rmaxz+rmzd rmaxcol2=zlrmaxz[1] > zlema2[1] ? red:lime rmaxcol= zlrmax[1] > zlema[1] ? red:lime rmazlema3=rma(zlema3, 100) plot(rmazlema3, color=gray, linewidth=2) plot(zlema, color=green) plot(zlema2, color=yellow) plot(zlema3, color=teal, linewidth=2) plot(ema2, color=na) plot(rmax, color=rmaxcol2, linewidth=3) plot(zlrmax, color=rmaxcol, linewidth=3) //Trading size = strategy.position_size lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if zlrmax[1] < zlema[1] strategy.entry("Buy", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if zlrmax[1] > zlema[1] strategy.entry("Sell", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))