यह रणनीति तीन अलग-अलग तकनीकी संकेतकों के संयोजन का उपयोग एक क्रॉस-साइकिल आर्बिट्रेज रणनीति बनाने के लिए करती है जो कम जोखिम वाले अतिरिक्त रिटर्न प्राप्त करने के लिए विभिन्न समय सीमाओं में मूल्य रुझानों को पकड़ती है।
इस रणनीति में उपयोग किए जाने वाले तीन तकनीकी संकेतक केल्टनर चैनल (केसी), अस्थिरता स्टॉप (वीस्टॉप), और विलियम्स एलीगेटर (डब्ल्यूएई) हैं। केल्टनर चैनल का उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या कीमतें चैनल रेंज के बाहर हैं और इस प्रकार ट्रेडिंग संकेत उत्पन्न करते हैं। अस्थिरता स्टॉप का उपयोग अनावश्यक स्टॉप लॉस को कम करते हुए स्टॉप लॉस की स्थिति को सुनिश्चित करने के लिए गतिशील रूप से समायोजित करने के लिए किया जाता है। विलियम्स एलीगेटर संकेतक का उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या कीमतें एक मजबूत प्रवृत्ति में हैं। विशेष रूप सेः
जब कीमत केल्टनर चैनल के ऊपरी रेल से अधिक होती है, तो इसे तेजी का संकेत माना जाता है। जब कीमत केल्टनर चैनल के निचले रेल से कम होती है, तो इसे मंदी का संकेत माना जाता है।
अस्थिरता स्टॉप मूल्य अस्थिरता और चैनल चौड़ाई के आधार पर स्टॉप हानि स्थिति सेट करता है। यह अत्यधिक रूढ़िवादी स्टॉप हानि पदों से बचते हुए स्टॉप हानि सुनिश्चित करने के लिए गतिशील रूप से समायोजित कर सकता है।
विलियम्स एलीगेटर संकेतक एमएसीडी और बोलिंगर बैंड चैनल चौड़ाई की गणना करके आकलन करता है कि क्या कीमतें एक मजबूत अपट्रेंड या डाउनट्रेंड में हैं।
इन तीनों संकेतकों को मिलाकर, विभिन्न समय सीमाओं में संकेतों को क्रॉस वैलिडेट किया जाता है। इससे गलत आकलन की संभावना कम हो जाती है और एक अनुकूलित रणनीति तर्क का निर्माण होता है।
इस रणनीति का सबसे बड़ा लाभ कई संकेतकों के संयोजन से लाए गए सटीक ट्रेडिंग संकेत हैं। तीन संकेतक अलग-अलग समय सीमाओं में काम करते हैं और एक-दूसरे को क्रॉस मान्य करते हैं, जो गलत आकलन की संभावना को प्रभावी ढंग से कम कर सकते हैं और संकेतों की सटीकता को बढ़ा सकते हैं। इसके अलावा, अस्थिरता स्टॉप सेटिंग गतिशील है और जोखिमों को और नियंत्रित करने के लिए वास्तविक समय की अस्थिरता के अनुसार स्टॉप लॉस स्थिति को समायोजित कर सकती है।
एकल संकेतक रणनीतियों की तुलना में, यह संयुक्त रणनीति अधिक सटीक और कुशल व्यापार संकेत प्रदान कर सकती है। साथ ही, तीन संकेतक कई समय सीमाओं के भीतर व्यापार निर्णय बनाने के लिए एक साथ काम करते हैं, जो एक बहुत ही वैज्ञानिक और उचित तर्क डिजाइन है जिससे सीखने लायक है।
इस रणनीति का मुख्य जोखिम यह है कि अनुचित पैरामीटर सेटिंग्स ओवरफिटिंग का कारण बन सकती हैं। तीन संकेतकों में कुल 8 पैरामीटर हैं। अनुचित सेटिंग्स रणनीति को प्रतिकूल रूप से प्रभावित कर सकती हैं। इसके अलावा, संकेतकों के बीच वजन संबंध को भी ठीक से कॉन्फ़िगर करने की आवश्यकता है, अन्यथा संकेत एक-दूसरे को बेअसर कर सकते हैं और अमान्य हो सकते हैं।
इन जोखिमों को कम करने के लिए, पैरामीटर सेटिंग के दौरान विभिन्न बाजार वातावरणों के अनुकूलन क्षमता पर पूरी तरह से विचार किया जाना चाहिए, और बैकटेस्टिंग विश्लेषण के माध्यम से इष्टतम पैरामीटर संयोजन को समायोजित किया जाना चाहिए। इसके अलावा, यह सुनिश्चित करने के लिए संकेतकों के बीच उचित रूप से वजन समायोजित करें कि ट्रेडिंग सिग्नल को प्रभावी ढंग से ट्रिगर किया जा सके। जब लगातार नुकसान होता है, तो नुकसान को नियंत्रित करने के लिए स्थिति के आकार को कम करने पर विचार करें।
इस रणनीति का अनुकूलन क्षेत्र मुख्य रूप से दो पहलुओं पर केंद्रित हैः पैरामीटर ट्यूनिंग और स्टॉप लॉस रणनीतियों में सुधार। विशेष रूप से निम्नलिखित पहलुओं पर विचार किया जा सकता हैः
अधिक वैज्ञानिक रूप से सूचक मापदंडों का चयन करें और मापदंड संयोजनों को अनुकूलित करें। एल्गोरिदम का उपयोग रिटर्न अधिकतम करने और जोखिम को कम करने जैसे लक्ष्यों के साथ इष्टतम मापदंडों को खोजने के लिए किया जा सकता है।
स्टॉप लॉस की रणनीति में सुधार करें ताकि स्टॉप लॉस को सुनिश्चित करते हुए अनावश्यक स्टॉप लॉस को और कम किया जा सके, जिससे जीत की दर में सुधार हो सके। उदाहरण के लिए, स्टॉप लॉस संकेतों के रूप में अधिक संकेतक शामिल करें, या स्टॉप लॉस पदों की प्रगतिशील वापसी सेट करें।
गलत आकलन दर को कम करने के लिए संकेतकों और ट्रेडिंग सिग्नल निर्णयों के तर्क के बीच भार को अनुकूलित करें। अधिक स्थिर और विश्वसनीय निर्णय नियमों का निर्माण करने के लिए अधिक मूल्य व्यवहार सुविधाओं को पेश किया जा सकता है।
स्वचालित पैरामीटर अनुकूलन प्राप्त करने के लिए मशीन लर्निंग मॉडल पेश करने का प्रयास करें। या रणनीति मूल्यांकन और सुधार के लिए गहरी सुदृढीकरण सीखने प्रोग्रामिंग का उपयोग करें।
यह रणनीति केल्टनर चैनल, अस्थिरता रोक और विलियम्स एलीगेटर के संयोजन के माध्यम से एक क्रॉस-साइकिल आर्बिट्रेज प्रणाली का निर्माण करती है। मल्टी-इंडिकेटर संयोजन सिग्नल सटीकता में सुधार करता है और गतिशील स्टॉप लॉस जोखिमों को नियंत्रित करता है। लेकिन मापदंडों की स्थापना और अनुकूलन में सुधार के लिए जगह है। कुल मिलाकर, इस रणनीति में मजबूत वैज्ञानिकता है और आगे के शोध और अनुप्रयोग के लायक है।
/*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=4 strategy("QuarryLake", overlay=true) ///Ultilized modified full kelly for this strategy = 36% ///Keltner channel/// nPeriod = input(title="Keltner Period", type=input.integer, defval=200, minval=1) Mult = input(title="Keltner Mult", type=input.integer, defval=5, minval=1) xPrice = ema(hlc3, nPeriod) xMove = ema(high - low, nPeriod) xMoveMult = xMove * Mult xUpper = xPrice + xMoveMult xLower = xPrice - xMoveMult // plot(xPrice, color=red, title="KSmid") p1 = plot(xUpper, color=color.white, title="KSup") p2 = plot(xLower, color=color.white, title="KSdn") fill(p1, p2, color=close > xUpper ? color.green : close < xLower ? color.red : color.white) kclongcondition = close > xUpper kcshortcondition = close < xLower kccloselongcondition = crossunder(close, xUpper) kccloseshortcondition = crossover(close, xLower) ///Volatility Stop/// length = input(title="Vstop length", type=input.integer, defval=3, minval=1) mult1 = 1.5 atr_ = atr(length) max1 = 0.0 min1 = 0.0 is_uptrend_prev = false stop = 0.0 vstop_prev = 0.0 vstop1 = 0.0 is_uptrend = false is_trend_changed = false max_ = 0.0 min_ = 0.0 vstop = 0.0 max1 := max(nz(max_[1]), close) min1 := min(nz(min_[1]), close) is_uptrend_prev := nz(is_uptrend[1], true) stop := is_uptrend_prev ? max1 - mult1 * atr_ : min1 + mult1 * atr_ vstop_prev := nz(vstop[1]) vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop) is_uptrend := close - vstop1 >= 0 is_trend_changed := is_uptrend != is_uptrend_prev max_ := is_trend_changed ? close : max1 min_ := is_trend_changed ? close : min1 vstop := is_trend_changed ? is_uptrend ? max_ - mult1 * atr_ : min_ + mult1 * atr_ : vstop1 plot(vstop, color=is_uptrend ? color.green : color.red, style=plot.style_line, linewidth=1) vstoplongcondition = close > vstop vstoplongclosecondition = crossunder(close, vstop) vstopshortcondition = close < vstop vstopshortclosecondition = crossover(close, vstop) ///Waddah Attar Explosion/// sensitivity = input(150, title="Sensitivity") fastLength = input(20, title="FastEMA Length") slowLength = input(40, title="SlowEMA Length") channelLength = input(20, title="BB Channel Length") mult = input(2.0, title="BB Stdev Multiplier") DEAD_ZONE = nz(rma(tr(true), 100)) * 3.7 calc_macd(source, fastLength, slowLength) => fastMA = ema(source, fastLength) slowMA = ema(source, slowLength) fastMA - slowMA calc_BBUpper(source, length, mult) => basis = sma(source, length) dev = mult * stdev(source, length) basis + dev calc_BBLower(source, length, mult) => basis = sma(source, length) dev = mult * stdev(source, length) basis - dev t1 = (calc_macd(close, fastLength, slowLength) - calc_macd(close[1], fastLength, slowLength)) * sensitivity t2 = (calc_macd(close[2], fastLength, slowLength) - calc_macd(close[3], fastLength, slowLength)) * sensitivity e1 = calc_BBUpper(close, channelLength, mult) - calc_BBLower(close, channelLength, mult) trendUp = t1 >= 0 ? t1 : 0 trendDown = t1 < 0 ? -1 * t1 : 0 waelongcondition = trendUp and trendUp > DEAD_ZONE and trendUp > e1 waeshortcondition = trendDown and trendDown > DEAD_ZONE and trendDown > e1 ///Long Entry/// longcondition = kclongcondition and vstoplongcondition and waelongcondition if longcondition strategy.entry("Long", strategy.long) ///Long exit/// closeconditionlong = kccloselongcondition or vstoplongclosecondition if closeconditionlong strategy.close("Long") ///Short Entry/// shortcondition = kcshortcondition and vstopshortcondition and waeshortcondition if shortcondition strategy.entry("Short", strategy.short) ///Short exit/// closeconditionshort = kccloseshortcondition or vstopshortclosecondition if closeconditionshort strategy.close("Short") ///Free Hong Kong, the revolution of our time///