इस रणनीति में डायरेक्शनल मूवमेंट इंडेक्स (डीएमआई) और हॉल मूविंग एवरेज (एचएमए) को मिलाकर डीएमआई के साथ बाजार की दिशा की पहचान की जाती है और जोखिम प्रबंधन के बिना एचएमए के साथ रुझान की ताकत की पुष्टि की जाती है।
वास्तविक सीमा, डीआईपीएल, डीआईएमआईएन और एडीएक्स की गणना करें।
त्वरित और धीमी पतवार चलती औसत (एचएमए) की गणना करें।
लंबे समय तक प्रवेश को ट्रिगर करें जब DIPlus DIMinus और तेज HMA को धीमे HMA से पार करता है।
संक्षिप्त प्रवेश को ट्रिगर करें जब DIMinus DIPlus से नीचे और तेज HMA धीमी HMA से नीचे पार करता है।
प्रवेश संकेतों पर लंबी/छोटी ऑर्डर दें।
ट्रेंड इंडिकेटर डीएमआई और हुल एमए की दोहरी पुष्टि से बाजार के रुझान को पकड़ने में सटीकता सुनिश्चित होती है और विप्सॉव से बचा जाता है। जोखिम प्रबंधन की अनुपस्थिति ट्रेडिंग आवृत्ति को कम करती है और दीर्घकालिक रूप से समग्र लाभप्रदता का कारण बनती है।
मुख्य जोखिम स्टॉप लॉस न होने से आता है, जब बाजार में भारी उतार-चढ़ाव होता है तो नुकसान को नियंत्रित करने में विफलता। सीमित समायोजन स्थान और कमजोर अनुकूलन क्षमता भी कमियां हैं।
संभावित समाधानों में चलती स्टॉप लॉस जोड़ना, पैरामीटर मिश्रण का अनुकूलन करना आदि शामिल हैं।
एटीआर ट्रेलिंग स्टॉप लॉस को ट्रू रेंज के आधार पर जोड़ें।
सबसे अच्छा मिश्रण खोजने के लिए हुल अवधि का अनुकूलन करें।
लंबे/छोटे संकेतों के लिए गतिशील सीमा।
प्रवृत्ति निरंतरता सुनिश्चित करने के लिए गति फ़िल्टर जोड़ें।
डीएमआई और एचएमए संयोजन सरलता और दक्षता के साथ रुझानों की पहचान करने में उत्कृष्ट प्रदर्शन करता है। उचित स्टॉप लॉस और पैरामीटर ट्यूनिंग के साथ, यह एक महान प्रवृत्ति निम्नलिखित प्रणाली बन सकती है।
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h 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/ // © Tuned_Official //@version=4 strategy(title="DMI + HMA - No Risk Management", overlay = false, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.025) //Inputs hullLen1 = input(title="Hull 1 length", type=input.integer, defval=29) hullLen2 = input(title="Hull 2 length", type=input.integer, defval=2) len = input(title="Length for DI", type=input.integer, defval=76) //Calculations TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1]))) DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0 DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0 SmoothedTrueRange = 0.0 SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange SmoothedDirectionalMovementPlus = 0.0 SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus SmoothedDirectionalMovementMinus = 0.0 SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus //Indicators fasthull = hma(close, hullLen1) slowhull = hma(close, hullLen2) DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100 DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100 DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100 ADX = sma(DX, len) //Plots plot(DIPlus, color=color.green, title="DI+") plot(DIMinus, color=color.red, title="DI-") plot(ADX, color=color.black, title="ADX") //conditions go_long = crossover(DIPlus, DIMinus) and fasthull > slowhull //crossover(fasthull, slowhull) and DIPlus > DIMinus go_short = crossover(DIMinus, DIPlus) and fasthull < slowhull //crossunder(fasthull, slowhull) and DIMinus > DIPlus //Entry if strategy.position_size < 0 or strategy.position_size == 0 strategy.order("long", strategy.long, when=go_long) if strategy.position_size > 0 or strategy.position_size == 0 strategy.order("Short", strategy.short, when=go_short)