यह रणनीति काफमैन अनुकूलनशील चलती औसत (कामा) के आधार पर डिज़ाइन की गई है ताकि गतिशील रूप से ट्रेडिंग पदों को समायोजित किया जा सके और बाजार के रुझानों को स्वचालित रूप से ट्रैक किया जा सके। रणनीति के मुख्य कार्यों में शामिल हैंः
इन कार्यों को लागू करके, रणनीति जोखिमों को नियंत्रित करते हुए रुझानों से अतिरिक्त लाभ प्राप्त करने का प्रयास करती है।
यह रणनीति काफमैन अनुकूलित चलती औसत सूचक के आधार पर काम करती है। कामा गतिशील औसत के वजन और चिकनाई को गतिशील रूप से समायोजित करने के लिए मूल्य गति और अस्थिरता के अनुपात की गणना करता है, जिससे यह मूल्य परिवर्तनों पर तेजी से प्रतिक्रिया करने की अनुमति देता है।
जब KAMA डाउनसाइड स्टॉप लॉस लाइन के ऊपर से गुजरता है, तो यह एक ट्रेंड रिवर्स का संकेत देता है और एक खरीद सिग्नल ट्रिगर करता है। जब KAMA अपसाइड स्टॉप लॉस लाइन के नीचे से गुजरता है, तो यह एक ट्रेंड रिवर्स का सुझाव देता है और एक बिक्री सिग्नल ट्रिगर करता है। एक स्थिति में प्रवेश करने के बाद, रणनीति एटीआर के आधार पर एक गतिशील स्टॉप लॉस दूरी की गणना करती है और एक अनुकूल स्टॉप लॉस लाइन सेट करती है। जैसा कि KAMA एक दिशा में चलता है, स्टॉप लॉस लाइन भी तदनुसार समायोजित होती है, अधिक लाभ में लॉक करने के लिए अधिक अनुकूल स्थिति में स्थानांतरित होती है।
इस प्रकार, रणनीति प्रवृत्ति का अनुसरण कर सकती है, धीरे-धीरे स्टॉप लॉस लाइन को तब तक स्थानांतरित कर सकती है जब तक कि यह ट्रिगर न हो जाए या स्थिति को बंद करने के लिए एक रिवर्स सिग्नल ट्रिगर न हो जाए।
पारंपरिक चलती औसत रणनीतियों की तुलना में, इस रणनीति के निम्नलिखित फायदे हैंः
सामान्य तौर पर, रणनीति उत्तरदायी, नियंत्रित करने योग्य और एक विशिष्ट प्रवृत्ति ट्रैकिंग प्रणाली है।
इस रणनीति में कुछ जोखिम भी शामिल हैंः
इन जोखिमों को प्रबंधित करने के लिए, स्टॉप लॉस दूरी को अनुकूलित करने और अधिकतम स्टॉप लॉस प्रतिशत निर्धारित करने जैसे तरीकों का उपयोग किया जा सकता है। पुष्टि के लिए अन्य संकेतकों को मिलाकर गलत ट्रेडों से भी बचा जाता है।
रणनीति को अनुकूलित करने के लिए संभावित दिशाओं में शामिल हैंः
उदाहरण के लिए, एमएसीडी को एक सहायक पुष्टिकरण संकेतक के रूप में जोड़ा जा सकता है, जिसके लिए एमएसीडी डीआईएफ को सकारात्मक होना चाहिए और केएएमए के गोल्डन क्रॉस के साथ विस्तार करना चाहिए। यह कुछ नकली संकेतों को फ़िल्टर कर सकता है और अनावश्यक दोहराए गए प्रविष्टियों से बच सकता है।
इस रणनीति का समग्र संचालन सुचारू है। रुझानों को ट्रैक करने और रुझान लाभ को अधिकतम करने के लिए गतिशील स्टॉप लॉस का उपयोग करके, तेजी से बाजार परिवर्तनों का तेजी से जवाब देने के लिए KAMA संकेतक की अनुकूलन क्षमता के साथ, यह रणनीति कुछ अनुकूलन के बाद एक कुशल रुझान ट्रैकिंग प्रणाली बन सकती है, जो मध्यम से दीर्घकालिक व्यापार के लिए उपयुक्त है।
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("THMA - Bharath Vc Improved", overlay=true, process_orders_on_close=true) // Function to calculate pips with higher precision getPips(price) => difc = syminfo.mintick hlpips = price / difc math.round(hlpips / syminfo.mintick) * syminfo.mintick // Inputs buyMess = input.string("Buy Message","Buy Alert Message") sellMess = input.string("Sell Message","Sell Alert Message") buyExitMessage = input.string("Buy Exit","Buy Exit Alert Message" ) sellExitMessage = input.string("Sell Exit","Sell Exit Alert Message" ) tmf = input.timeframe("", "Timeframe") length = input(title='Length', defval=14) fastLength = input(title='Fast EMA Length', defval=2) slowLength = input(title='Slow EMA Length', defval=30) src = input(title='Source', defval=close) highlight = input(title='Highlight ?', defval=true) awaitBarConfirmation = input(title='Await Bar Confirmation ?', defval=true) // Function to calculate the TMA gettma() => mom = math.abs(ta.change(src, length)) volatility = math.sum(math.abs(ta.change(src)), length) er = volatility != 0 ? mom / volatility : 0 fastAlpha = 2 / (fastLength + 1) slowAlpha = 2 / (slowLength + 1) alpha = math.pow(er * (fastAlpha - slowAlpha) + slowAlpha, 2) kama = 0.0 kama := alpha * src + (1 - alpha) * nz(kama[1], src) await = awaitBarConfirmation ? barstate.isconfirmed : true maColor = highlight ? kama > kama[1] and await ? color.green : color.red : color.new(color.purple, 0) thma = kama hma_dif = (thma - thma[2])/2 colour = hma_dif > 0 ? color.green : color.red isGreen = hma_dif > 0 [thma, isGreen, colour] // Dynamic pip size based on ATR to adapt better to smaller timeframes pips = ta.atr(14) * 0.1 // Main execution logic var float psl = na var int lastSignal = 0 var float lastPsl = na [thma, isGreen, colour] = request.security(syminfo.tickerid, tmf, gettma(), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off) plot(thma, title='KAMA', linewidth=2, color=colour) if ta.crossover(thma, psl) and strategy.position_size < 0 strategy.exit("Sell Exit", stop=thma, alert_message=sellExitMessage) if ta.crossunder(thma, psl) and strategy.position_size > 0 strategy.exit("Buy Exit", stop=thma, alert_message=buyExitMessage) if isGreen and strategy.position_size <= 0 if na(psl) psl := close + getPips(pips) strategy.entry("Buy", strategy.long, alert_message=buyMess) lastSignal := 1 if not isGreen and strategy.position_size >= 0 if na(psl) psl := close - getPips(pips) strategy.entry("Sell", strategy.short, alert_message=sellMess) lastSignal := -1 if (thma >= lastPsl or na(lastPsl)) and thma > psl psl := psl + getPips(pips) lastPsl := psl if (thma <= lastPsl or na(lastPsl)) and thma < psl psl := psl - getPips(pips) lastPsl := psl plot(psl, title="Position Stop Level", style=plot.style_stepline, color=color.blue) plot(lastPsl, title="Last Position Stop Level", style=plot.style_cross, color=color.red)