यह रणनीति अपनी पुस्तक
रणनीति पहले बंद मूल्य की गणना करती है - उद्घाटन मूल्य, जो मोमबत्ती का शरीर है। फिर यह उच्च मूल्य की गणना करती है - कम मूल्य, जो मोमबत्ती की छाया है। क्रमशः इन दो भागों के योग और औसत को लेकर, यह स्टॉक की गति प्राप्त करता है। फिर स्टॉक की अस्थिरता के साथ गति को विभाजित करके, यह सापेक्ष शक्ति सूचकांक (आरवीआई) प्राप्त करता है।
इसके बाद, संकेत मूल्य प्राप्त करने के लिए आरवीआई पर एहलर्स फिशर सूत्र लागू किया जाता है। जब संकेत ट्रिगर के ऊपर से गुजरता है तो यह लंबा हो जाता है, और जब संकेत ट्रिगर के नीचे से गुजरता है तो यह छोटा हो जाता है। इसके अलावा, जोखिमों को नियंत्रित करने के लिए फिक्स्ड स्टॉप लॉस और ट्रेलिंग स्टॉप लॉस लागू किए जाते हैं।
यह रणनीति स्टॉक की गति विशेषताओं और स्टोकैस्टिक संकेतक को एकीकृत करती है, जो प्रभावी रूप से बाजार में सापेक्ष शक्ति निर्धारित कर सकती है। एहल्स फिशर संकेतक का डिजाइन शोर के प्रभाव को कम कर सकता है और अपेक्षाकृत विश्वसनीय ट्रेडिंग संकेत उत्पन्न कर सकता है। जीवंतता सूचकांक एक स्टॉक की प्रवृत्ति गुणवत्ता और अस्थिरता को दर्शाता है, जिससे यह एक गतिशील संकेतक बन जाता है।
एक एकल गति संकेतक या स्टोकैस्टिक संकेतक का उपयोग करने की तुलना में, यह रणनीति संकेतक और मॉडल को व्यवस्थित रूप से जोड़ती है, जो संकेतों की गुणवत्ता में सुधार कर सकती है। सख्त स्टॉप लॉस नियम लाभप्रदता सुनिश्चित करते हुए जोखिमों को नियंत्रित करने के लिए रणनीति को भी सक्षम बनाते हैं।
यह रणनीति मुख्य रूप से एहल्स फिशर संकेतक पर निर्भर करती है। जब बाजार में भारी बदलाव होते हैं, तो नए वातावरण के अनुकूल होने के लिए संकेतक के मापदंडों को अनुकूलित करने की आवश्यकता होती है। यदि मापदंडों को गलत तरीके से सेट किया जाता है, तो यह गलत संकेत या लेगिंग संकेत उत्पन्न कर सकता है।
इसके अलावा, रणनीति में ही कुछ हद तक वक्र फिट जोखिम अंतर्निहित है। यदि बैकटेस्टिंग और लाइव ट्रेडिंग में बाजार वातावरण बहुत बदल जाता है, तो रणनीति का प्रदर्शन काफी हद तक विचलित हो सकता है। इस मामले में, रणनीति मापदंडों को समायोजित करने की आवश्यकता होती है और नए बाजार की परिस्थितियों के अनुकूल ट्रेडिंग नियमों को अनुकूलित करने की आवश्यकता होती है।
इस रणनीति को निम्नलिखित पहलुओं में और अधिक अनुकूलित किया जा सकता हैः
उच्च संवेदनशीलता या शोर फ़िल्टरिंग के लिए Ehlers Fisher सूचक के मापदंडों का अनुकूलन करें।
अधिक विश्वसनीय ट्रेडिंग संकेत उत्पन्न करने के लिए एलएसटीएम जैसे मशीन लर्निंग एल्गोरिदम के साथ संकेतक का मॉडल।
स्टॉप लॉस दूरी को गतिशील रूप से समायोजित करने के लिए एटीआर जैसे बाजार अस्थिरता संकेतकों को शामिल करें।
सिग्नल की गुणवत्ता में सुधार के लिए अन्य तकनीकी और मौलिक संकेतकों को जोड़ने वाले बहु-कारक मॉडल के लिए समर्थन जोड़ना।
गतिशील प्रवेश/निकास मानदंडों के साथ खुले/बंद पदों के तर्क को अनुकूलित करें। अनुकूलन स्टॉप लॉस और लाभ लेने की तकनीकें पेश करें।
यह रणनीति बाजार की प्रवृत्ति और ताकत को निर्धारित करने के लिए एहल्स फिशर स्टोकैस्टिक आरवीआई संकेतक का उपयोग करती है, और जोखिमों को नियंत्रित करने के लिए उचित स्टॉप लॉस तंत्र निर्धारित करती है। एकल संकेतकों की तुलना में, यह रणनीति कई संकेतकों और मॉडल को व्यवस्थित रूप से जोड़ती है, जो शोर को फ़िल्टर कर सकती है और उच्च गुणवत्ता वाले संकेत प्रदान कर सकती है। पैरामीटर अनुकूलन, मॉडल संलयन, अनुकूली समायोजन और अन्य साधनों के माध्यम से रणनीति प्रदर्शन में आगे सुधार के लिए अभी भी जगह है।
/*backtest start: 2022-12-15 00:00:00 end: 2023-12-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Ehlers Fisher Stochastic Relative Vigor Index Strategy", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, commission_type = strategy.commission.percent, commission_value = 0.1) p = input(10, title = "Length") FisherStoch(src, len) => val1 = stoch(src, src, src, len) / 100 val2 = (4 * val1 + 3 * val1[1] + 2 * val1[2] + val1[3]) / 10 FisherStoch = 0.5 * log((1 + 1.98 * (val2 - 0.5)) / (1 - 1.98 * (val2 - 0.5))) / 2.64 CO = close - open HL = high - low value1 = (CO + 2 * CO[1] + 2 * CO[2] + CO[3]) / 6 value2 = (HL + 2 * HL[1] + 2 * HL[2] + HL[3]) / 6 num = sum(value1, p) denom = sum(value2, p) RVI = denom != 0 ? num / denom : 0 signal = FisherStoch(RVI, p) trigger = signal[1] oppositeTrade = input(true) barsSinceEntry = 0 barsSinceEntry := nz(barsSinceEntry[1]) + 1 if strategy.position_size == 0 barsSinceEntry := 0 if ((crossover(signal, trigger) and not oppositeTrade) or (oppositeTrade and crossunder(signal, trigger))) and abs(signal) > 2 / 2.64 strategy.entry("Long", strategy.long) barsSinceEntry := 0 if ((crossunder(signal, trigger) and not oppositeTrade) or (oppositeTrade and crossover(signal, trigger))) and abs(signal) > 2 / 2.64 strategy.entry("Short", strategy.short) barsSinceEntry := 0 if strategy.openprofit < 0 and barsSinceEntry > 8 strategy.close_all() barsSinceEntry := 0 hline(0, title="ZeroLine", color=gray) signalPlot = plot(signal, title = "Signal", color = blue) triggerPlot = plot(trigger, title = "Trigger", color = green) fill(signalPlot, triggerPlot, color = signal < trigger ? red : lime, transp = 50)