यह रणनीति हॉल मूविंग एवरेज (एचएमए) के 1st, 2nd, 3rd और 4th समय व्युत्पन्नों का उपयोग करने के आधार पर पूंजी के समान प्रतिशत का निवेश करती है। प्रवेश बिंदुओं को 2nd, 3rd और 4th व्युत्पन्नों में रुझानों द्वारा पहचाना जाता है जबकि निकास बिंदु या तो एक नए प्रवेश बिंदु या एक ट्रेलिंग स्टॉप लॉस प्रतिशत पर बनाए जाते हैं।
इस रणनीति में सबसे पहले एचएमए की गणना की जाती है। हेल मूविंग एवरेज निम्नलिखित सूत्र के साथ गणना की जाने वाली भारित मूविंग एवरेज है:
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
जहां src मूल्य है और sm एक इनपुट पैरामीटर है जो औसत की लंबाई को नियंत्रित करता है।
रणनीति फिर गति (1 वें व्युत्पन्न), त्वरण (2 वें व्युत्पन्न), झटका (3 वें व्युत्पन्न) और जोड़ (4 वें व्युत्पन्न) की गणना करती है। ये एचएमए और इसके पिछड़े मूल्यों के बीच अंतर को लंबाई len से विभाजित करके गणना की जाती है। उदाहरण के लिए गति गणना हैः
speed = (hullma-hullma[len])/len
अन्य व्युत्पन्नों की गणना इसी प्रकार की जाती है।
रणनीति त्वरण, झटके और जंक्शन के संकेतों को देखकर प्रवेश और निकास निर्धारित करती है। यदि सभी तीन संकेतक सकारात्मक हैं, तो यह लंबा होगा। यदि सभी तीन नकारात्मक हैं, तो यह छोटा होगा।
इसके अतिरिक्त, रणनीति लाभ में लॉक करने के लिए स्टॉप हानि को भी ट्रेल करेगी। लंबी स्थिति में समायोज्य इनपुट प्रतिशत के आधार पर स्टॉप हानि निर्धारित होगी, और छोटी स्थिति भी।
इस रणनीति का एक प्रमुख लाभ यह है कि यह प्रवेश और निकास संकेतों के रूप में कई व्युत्पन्नों का उपयोग करता है, जो कुछ झूठे संकेतों को फ़िल्टर कर सकता है। प्रविष्टियों को निर्धारित करने के लिए केवल गति (1 व्युत्पन्न) पर भरोसा करना अक्सर बहुत नाजुक होता है, लेकिन 2nd, 3rd और 4th व्युत्पन्नों को मिलाकर एक अधिक मजबूत प्रणाली का निर्माण किया जा सकता है।
एक और लाभ यह है कि यह रणनीति बहुत लचीली है। इसमें एचएमए लंबाई, विभिन्न व्युत्पन्नों की लंबाई, स्टॉप लॉस प्रतिशत आदि सहित कई समायोज्य मापदंड हैं जिन्हें विभिन्न बाजारों के लिए अनुकूलित किया जा सकता है।
समायोज्य ट्रेलिंग स्टॉप का उपयोग भी एक लाभ है। यह रणनीति को ट्रेंडिंग बाजारों में अधिक लाभ कमाने में मदद कर सकता है, जबकि चंचल बाजारों के दौरान समय पर बाहर निकलता है, अधिकतम ड्रॉडाउन को सीमित करता है।
इस रणनीति का मुख्य जोखिम अचानक घटनाओं के कारण हिट दर में कमी है। यदि कोई प्रासंगिक फ़िल्टर नहीं हैं, तो प्रमुख समाचार घटनाएं कई डेरिवेटिव को एक ही समय में गलत संकेत देने का कारण बन सकती हैं, जिससे बड़े नुकसान हो सकते हैं। कुछ समाचार फ़िल्टर लागू किए जा सकते हैं या इस जोखिम को कम करने के लिए विस्फोट घटनाओं के बाद कुछ समय के लिए रणनीति को रोक दिया जा सकता है।
एक और जोखिम यह है कि पैरामीटर आसानी से ओवरफिट हो सकते हैं। एचएमए लंबाई, व्युत्पन्न लंबाई आदि सभी परिणामों को प्रभावित कर सकते हैं। इसके लिए विभिन्न बाजारों में इन मापदंडों की मजबूती का मूल्यांकन करने के लिए कठोर बैकटेस्टिंग की आवश्यकता होती है। इसके अलावा ट्रेलिंग स्टॉप लॉस प्रतिशत बहुत व्यापक नहीं होना चाहिए, अन्यथा नुकसान बर्फ की गेंद हो सकता है।
इस रणनीति को कई तरीकों से अनुकूलित किया जा सकता हैः
प्रमुख समाचार घटनाओं के बाद कुछ समय के लिए व्यापार को रोकने के लिए फट घटनाओं के आधार पर फ़िल्टर जोड़ें, बड़े नुकसान के कारण प्रवेश बिंदुओं को याद करने से बचें
विभिन्न बाजारों में मापदंडों की स्थिरता का परीक्षण करना। विभिन्न उत्पादों पर बैकटेस्ट, मापदंडों की स्थिरता का मूल्यांकन करने के लिए समय अवधि
प्रविष्टि तर्क में सुधार करने का प्रयास करें। सरल सकारात्मक/नकारात्मक निर्णयों के बजाय रुझानों की पहचान करने के लिए मशीन लर्निंग मॉडल पेश करें
स्टॉप लॉस पद्धति में सुधार करें। सरल प्रतिशत ट्रैलिंग स्टॉप के बजाय अस्थिरता या मशीन लर्निंग स्टॉप का उपयोग करें
मुनाफा लेने के लिए बाहर निकलें जोड़ें। वर्तमान तर्क मुख्य रूप से बंद पर निर्भर करता है, अतिरिक्त ऊपर की ओर ट्रेलिंग या लक्ष्य लाभ बाहर निकलने जोड़ सकते हैं
यह एक बहु-टाइमफ्रेम प्रवृत्ति है जो लाभ में लॉक करने के लिए ट्रेलिंग स्टॉप के साथ प्रवेश और निकास संकेतों के रूप में हुल मूविंग एवरेज के कई व्युत्पन्नों का उपयोग करने वाली रणनीति का अनुसरण करती है। प्रमुख लाभों में कई व्युत्पन्नों, लचीले ट्यून करने योग्य मापदंडों आदि का उपयोग करके झूठे संकेतों को फ़िल्टर करना शामिल है। ध्यान देने योग्य जोखिमों में विस्फोट की घटनाओं और संभावित पैरामीटर ओवरफिटिंग के प्रभाव शामिल हैं। यह एक अधिक विश्वसनीय स्वचालित ट्रेडिंग प्रणाली बनाने के लिए फ़िल्टर जोड़कर, पैरामीटर की मजबूती में सुधार करके, प्रवेश / निकास तर्क को बढ़ाकर और इसी तरह रणनीति का अनुकूलन किया जा सकता है।
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Derivative Based Strategy", shorttitle="DER", currency="USD", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000) len = input(1, minval=1, title="Derivatives Length") sm = input(4, minval=1, title="HMA Length") longTrailPerc=input(title="Trail Long Loss %", type=float,minval=0.0,step=0.1,defval=25)*0.01 shortTrailPerc=input(title="Trail Short Loss %",type=float,minval=0.0,step=0.1,defval=25)*0.01 longStopPrice=0.0 shortStopPrice=0.0 src = input(ohlc4, title="Source") hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm))) speed = (hullma-hullma[len])/len accel = (speed-speed[len])/len jerk = (accel-accel[len])/len jounce = (jerk-jerk[len])/len plot(speed, color=green) plot(accel, color=purple) plot(jerk, color=red) plot(jounce, color=blue) // hline(0, linestyle=solid, color=black) if accel>0 and jerk>0 and jounce>0// and strategy.opentrades==0 strategy.entry("openlong", strategy.long) if accel<0 and jerk<0 and jounce<0// and strategy.opentrades==0 strategy.entry("openshort",strategy.short) speed_profit = (strategy.openprofit-strategy.openprofit[1])/len accel_profit = (speed_profit-speed_profit[1])/len jerk_profit = (accel_profit-accel_profit[1])/len longStopPrice:=if(strategy.position_size>0) stopValue=ohlc4*(1-longTrailPerc) max(stopValue,longStopPrice[1]) else 0 shortStopPrice:=if(strategy.position_size<0) stopValue=ohlc4*(1+shortTrailPerc) min(stopValue,shortStopPrice[1]) else 999999 if(strategy.position_size>0) strategy.exit(id="closelong",stop=longStopPrice) if(strategy.position_size<0) strategy.exit(id="closeshort",stop=shortStopPrice)