डबल हॉल मूविंग एवरेज ट्रेडिंग रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जो डबल हॉल मूविंग एवरेज को ट्रेडिंग सिग्नल के रूप में उपयोग करती है। यह एक एकल मूविंग एवरेज लाइन का उपयोग करने के पारंपरिक तकनीकी विश्लेषण दृष्टिकोण पर आधारित है और क्रॉसओवर बिंदुओं पर लंबे और छोटे निर्णय लेने के लिए डबल हॉल मूविंग एवरेज के साथ इसे बदल देती है।
डबल हॉल मूविंग एवरेज ट्रेडिंग रणनीति के मूल में डबल हॉल मूविंग एवरेज (डीएचएमए) है। डीएचएमए में तीन लाइनें होती हैंः मध्य, ऊपरी और निचली रेल, जो विभिन्न औसत मूल्य मूल्यों का प्रतिनिधित्व करती हैं। सूत्र हैंः
मध्य रेलः मोड (modeSwitch, src, len)
ऊपरी रेलः पतवार[0]
निचला रेलः HULL[2]
यहाँ मोड फ़ंक्शन HMA, EHMA या THMA जैसे विभिन्न Hull MA वेरिएंट के बीच चयन कर सकता है। Src मूल्य स्रोत के लिए खड़ा है, और len अवधि पैरामीटर है।
रणनीति मूल्य संबंध निर्धारित करने और व्यापार संकेत उत्पन्न करने के लिए संदर्भ के रूप में DHMA के मध्य रेल का उपयोग करती हैः
दूसरे शब्दों में, यदि वर्तमान पट्टी का समापन मूल्य मध्य रेल मूल्य से ऊपर है, तो अगले पट्टी पर लंबा जाएं; यदि समापन मूल्य नीचे है, तो अगले पट्टी पर लंबी स्थिति बंद करें।
डबल हेल मूविंग एवरेज ट्रेडिंग रणनीति के निम्नलिखित फायदे हैंः
बेहतर समर्थन/प्रतिरोध प्रभाव और प्रवृत्ति ट्रैकिंग के लिए एकल चलती औसत रेखा के बजाय ट्रिपल बैंड तंत्र का उपयोग करता है।
सामान्य एमए की तुलना में, हॉल मूविंग एवरेज में कम देरी होती है और मूल्य परिवर्तनों पर बेहतर प्रतिक्रिया होती है।
आसानी से समझने के लिए पारंपरिक तकनीकी विश्लेषण तकनीकों को अपनाता है, जो एल्गो ट्रेडिंग के लिए उपयुक्त है।
तर्क सरल और स्पष्ट है, लागू करने में आसान है, उच्च आवृत्ति एल्गोरिथम ट्रेडिंग के लिए उपयुक्त है।
विभिन्न उत्पादों और समय सीमाओं में अनुकूलन के लिए अनुकूलन योग्य पतवार एमए प्रकार और पैरामीटर।
हालांकि इस रणनीति के कई फायदे हैं, लेकिन इसके साथ कुछ जोखिम भी हैं।
कुछ शोर व्यापारों को फ़िल्टर करने के लिए बारीकी से ट्यून पैरामीटर।
यह रणनीति मुख्य रूप से रुझानों का अनुसरण करती है, फ्लैट अवधि के दौरान कम प्रभावी होती है। रुझान की ताकत के लिए अतिरिक्त फ़िल्टर मददगार हो सकते हैं।
पतवार एमए में अभी भी कुछ हद तक विलंब है, विशेष रूप से कम अवधि के लिए। पैरामीटर अनुकूलन और कॉम्बो संकेतक इसे कम कर सकते हैं।
लगातार सिग्नल होने से ओवर ट्रेडिंग हो सकती है।
रणनीति के लिए अनुकूलित करने के लिए यहां कुछ प्रमुख पहलू दिए गए हैंः
विभिन्न उत्पादों के लिए मध्य रेल संवेदनशीलता को ठीक करने के लिए hull MA प्रकारों और मापदंडों को अनुकूलित करें।
एकल व्यापार हानि राशि को नियंत्रित करने के लिए ट्रेलिंग स्टॉप या क्रमिक स्टॉप लॉस जैसे स्टॉप लॉस तंत्र जोड़ें।
ट्रेंड की दिशा और ताकत निर्धारित करने के लिए अन्य संकेतकों के साथ संयोजन करें, जाल से बचें। उदाहरण के लिए एमएसीडी, केडी आदि।
चक्र बंद होने की संख्या को नियंत्रित करने के लिए ट्रेडों की संख्या या लाभ अनुपात के आधार पर रणनीति सक्रियण शर्तें जोड़ें, जिससे बाहर निकलने की संख्या कम हो जाती है।
मल्टी टाइमफ्रेम संयोजन। शोर से बचने के लिए समग्र प्रवृत्ति निर्धारित करने के लिए उच्च TF का उपयोग करें।
प्रवेश तर्क को परिष्कृत करें. प्रवेश निश्चितता में सुधार के लिए मोमबत्ती पैटर्न के साथ प्रविष्टियों की पुष्टि करें.
संक्षेप में, डबल हॉल मूविंग एवरेज ट्रेडिंग रणनीति एक मात्रात्मक दृष्टिकोण है जो ट्रेडिंग संकेतों का निर्माण करने के लिए तेजी से प्रतिक्रिया, प्रवृत्ति के बाद हॉल मूविंग एवरेज का उपयोग करता है। पारंपरिक एमए की तुलना में, इसमें तेजी से प्रतिक्रिया और बेहतर ट्रैकिंग क्षमताएं हैं। रणनीति तर्क सरल और स्पष्ट है, एल्गोरिथ्म ट्रेडिंग के लिए स्वचालित करना आसान है। अभी भी शोर और प्रवृत्ति के बाद सीमाओं के जोखिम हैं। पैरामीटर ट्यूनिंग, स्टॉप लॉस और अन्य संकेतकों के संयोजन जैसी तकनीकें इसके व्यावहारिक प्रदर्शन को बढ़ा सकती हैं।
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Basic Hull Ma Pack tinkered by InSilico //Converted to Strategy by DashTrader strategy("Hull Suite Strategy", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0) ////////////////////////////////////////////////////////////////////// // Testing Start dates testStartYear = input(2016, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) //Stop date if you want to use a specific range of dates testStopYear = input(2030, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false // Component Code Stop ////////////////////////////////////////////////////////////////////// //INPUT HAClose = security(heikinashi(syminfo.tickerid), timeframe.period, close) src = input(close, title="Source") modeSwitch = input("Hma", title="Hull Variation", options=["Hma", "Thma", "Ehma"]) length = input(55, title="Length(180-200 for floating S/R , 55 for swing entry)") switchColor = input(true, "Color Hull according to trend?") candleCol = input(false,title="Color candles based on Hull's Trend?") visualSwitch = input(true, title="Show as a Band?") thicknesSwitch = input(1, title="Line Thickness") transpSwitch = input(40, title="Band Transparency",step=5) //FUNCTIONS //HMA HMA(_src, _length) => wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length))) //EHMA EHMA(_src, _length) => ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length))) //THMA THMA(_src, _length) => wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length) //SWITCH Mode(modeSwitch, src, len) => modeSwitch == "Hma" ? HMA(src, len) : modeSwitch == "Ehma" ? EHMA(src, len) : modeSwitch == "Thma" ? THMA(src, len/2) : na //OUT HULL = Mode(modeSwitch, src, length) MHULL = HULL[0] SHULL = HULL[2] //COLOR hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800 //PLOT ///< Frame Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50) Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50) ///< Ending Filler fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch) ///BARCOLOR barcolor(color = candleCol ? (switchColor ? hullColor : na) : na) if HULL[0] > HULL[2] and testPeriod() strategy.entry("long", strategy.long) if HULL[0] < HULL[2] and testPeriod() strategy.close("long")