इस रणनीति को
रणनीति पिछले rocLength अवधियों में हेकिन आशी के बंद मूल्य के ROC की गणना करती है। फिर यह पिछले 50 अवधियों में ROC के उच्चतम rocHigh और निम्नतम rocLow मूल्यों की गणना करती है। ऊपरी रेल अपरकिललाइन और निचली रेल लोअरकिललाइन को rocHigh और rocLow के कुछ प्रतिशत के आधार पर उत्पन्न किया जाता है। जब ROC लोअरकिललाइन से ऊपर जाता है, तो एक लंबी स्थिति खोली जाती है। जब ROC अपरकिललाइन से नीचे जाता है, तो लंबी स्थिति बंद हो जाती है। इसके विपरीत, जब ROC अपरकिललाइन से नीचे जाता है, तो एक छोटी स्थिति खोली जाती है। जब ROC लोअरकिललाइन से ऊपर जाता है, तो स्थिति बंद हो जाती है।
इस रणनीति का सबसे बड़ा लाभ आरओसी संकेतक की मजबूत प्रवृत्ति ट्रैकिंग क्षमता का उपयोग करना है, जो कीमत की जानकारी को चिकनी करने की हेकिन आशि की सुविधा के साथ संयुक्त है। यह रणनीति को प्रभावी ढंग से प्रवृत्ति परिवर्तनों की पहचान करने और समय पर ट्रेडों में प्रवेश करने की अनुमति देता है। सरल चलती औसत की तुलना में, आरओसी मूल्य परिवर्तनों के लिए अधिक संवेदनशीलता से प्रतिक्रिया करता है। इसके अलावा, प्रतिशत से उत्पन्न ऊपरी और निचले रेल प्रभावी रूप से समेकन को फ़िल्टर कर सकते हैं और नकली ब्रेकआउट से अनावश्यक ट्रेडों से बच सकते हैं। कुल मिलाकर, यह रणनीति प्रमुख रुझानों में अच्छे जोखिम-इनाम अनुपात प्राप्त करने के लिए प्रवृत्ति के बाद और दोलन फ़िल्टरिंग दोनों को जोड़ती है।
इस रणनीति का मुख्य जोखिम यह है कि अनुचित पैरामीटर सेटिंग्स से ओवरट्रेडिंग या अपर्याप्त संवेदनशीलता हो सकती है। rocLength और प्रतिशत लुकबैक अवधि को सावधानीपूर्वक सेट करने की आवश्यकता है, अन्यथा रेल बहुत सुस्त या कठोर हो सकती है, जिससे चूक गए ट्रेड या अनावश्यक नुकसान हो सकते हैं। इसके अलावा, प्रतिशत सेटिंग्स को बार-बार बैकटेस्ट करने और विभिन्न बाजारों के लिए इष्टतम संयोजन खोजने के लिए समायोजित करने की आवश्यकता होती है। रणनीति भी कुछ नुकसान के अधीन है जब रुझान उलट जाते हैं, क्योंकि यह ट्रेंड-फॉलोइंग संकेतकों पर निर्भर करता है। पदों को समय पर बंद किया जाना चाहिए, या जोखिमों को नियंत्रित करने के लिए सेट किए गए नुकसान को रोकना चाहिए।
रणनीति को निम्नलिखित तरीकों से अनुकूलित किया जा सकता हैः 1) आरएसआई जैसे अन्य संकेतकों के साथ फ़िल्टर जोड़ें; 2) मशीन लर्निंग के साथ गतिशील रूप से मापदंडों का अनुकूलन करें; 3) स्वचालित जोखिम प्रबंधन के लिए स्टॉप लॉस सेट करें और लाभ लें; 4) जोखिम को संतुलित करने के लिए गैर-ट्रेंड रणनीतियों के साथ संयोजन करें।
संक्षेप में, यह रणनीति रुझान पहचान और अनुसरण के लिए हेकिन आशी के साथ संयुक्त, आरओसी संकेतक की शक्तिशाली प्रवृत्ति ट्रैकिंग क्षमता का उपयोग करती है। आरओसी प्रतिशतों से उत्पन्न ऊपरी और निचले रेल प्रभावी नुकसान फ़िल्टरिंग की अनुमति देते हैं। यह अच्छे प्रवृत्ति ट्रैकिंग प्रदर्शन को प्राप्त करता है। इसके फायदे रुझान परिवर्तनों की समय पर पहचान और प्रमुख रुझानों का पालन करने में निहित हैं, जबकि रेल के साथ समेकन को फ़िल्टर करना। हालांकि, अनुचित पैरामीटर सेटिंग्स प्रदर्शन को प्रभावित कर सकती हैं, और प्रवृत्ति उलट जोखिम बनी हुई है। पैरामीटर चयन और स्टॉप को और अधिक अनुकूलित करने से अधिक सुसंगत परिणाम प्राप्त करने में मदद मिल सकती है।
/*backtest start: 2023-09-22 00:00:00 end: 2023-10-22 00:00:00 period: 1h 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/ // © jensenvilhelm //@version=5 strategy("Heikin Ashi ROC Percentile Strategy", shorttitle="ROC ON" , overlay=false) // User Inputs zerohLine = input(0, title="Midline") // Zero line, baseline for ROC (customer can modify this to adjust midline) rocLength = input(100, title="roc Length") // Lookback period for SMA and ROC (customer can modify this to adjust lookback period) stopLossLevel = input(2, title="Stop Loss (%)") // Level at which the strategy stops the loss (customer can modify this to adjust stop loss level) startDate = timestamp("2015 03 03") // Start date for the strategy (customer can modify this to adjust start date) // Heikin Ashi values var float haClose = na // Define Heikin Ashi close price var float haOpen = na // Define Heikin Ashi open price haClose := ohlc4 // Calculate Heikin Ashi close price as average of OHLC4 (no customer modification needed here) haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2 // Calculate Heikin Ashi open price (no customer modification needed here) // ROC Calculation roc = ta.roc(ta.sma(haClose, rocLength), rocLength) // Calculate Rate of Change (ROC) (customer can modify rocLength in the inputs) rocHigh = ta.highest(roc, 50) // Get the highest ROC of the last 50 periods (customer can modify this to adjust lookback period) rocLow = ta.lowest(roc, 50) // Get the lowest ROC of the last 50 periods (customer can modify this to adjust lookback period) upperKillLine = ta.percentile_linear_interpolation(rocHigh, 10, 75) // Calculate upper kill line (customer can modify parameters to adjust this line) lowerKillLine = ta.percentile_linear_interpolation(rocLow, 10, 25) // Calculate lower kill line (customer can modify parameters to adjust this line) // Trade conditions enterLong = ta.crossover(roc, lowerKillLine) // Define when to enter long positions (customer can modify conditions to adjust entry points) exitLong = ta.crossunder(roc, upperKillLine) // Define when to exit long positions (customer can modify conditions to adjust exit points) enterShort = ta.crossunder(roc, upperKillLine) // Define when to enter short positions (customer can modify conditions to adjust entry points) exitShort = ta.crossover(roc, lowerKillLine ) // Define when to exit short positions (customer can modify conditions to adjust exit points) // Strategy execution if(time >= startDate) // Start strategy from specified start date if (enterLong) strategy.entry("Long", strategy.long) // Execute long trades if (exitLong) strategy.close("Long") // Close long trades if (enterShort) strategy.entry("Short", strategy.short) // Execute short trades if (exitShort) strategy.close("Short") // Close short trades // Plotting plot(zerohLine,title="Zeroline") // Plot zero line plot(roc, "RSI", color=color.rgb(248, 248, 248)) // Plot ROC plot(rocHigh, "Roc High", color = color.rgb(175, 78, 76)) // Plot highest ROC plot(rocLow, "Roc Low", color = color.rgb(175, 78, 76)) // Plot lowest ROC plot(upperKillLine, "Upper Kill Line", color = color.aqua) // Plot upper kill line plot(lowerKillLine, "Lower Kill Line", color = color.aqua) // Plot lower kill line