यह एक मात्रात्मक ट्रेडिंग रणनीति है जिसे LazyBear
इस रणनीति का मुख्य संकेतक LazyBear
विशेष रूप से, रणनीति पहले मूल्य के 2 मानक विचलन की चौड़ाई के साथ 21-अवधि वाले बोलिंगर बैंड की गणना करती है। साथ ही, यह मूल्य आयाम की 1.5 गुना चौड़ाई के साथ 20-अवधि वाले केल्टनर चैनलों की गणना करती है। जब बोलिंगर बैंड को केल्टनर चैनलों द्वारा
बाहर निकलने के लिए, जब गति संकेतक का रंग ग्रे हो जाता है, तो यह दर्शाता है कि निचोड़ की स्थिति समाप्त हो गई है और प्रवृत्ति उलट सकती है।
इन संकेतकों के बीच समग्र संबंध का आकलन करके व्यापारिक निर्णयों की सटीकता में सुधार किया जा सकता है और गलत व्यापार की संभावना कम हो सकती है।
गति निचोड़ रणनीति उन प्रमुख बिंदुओं को पकड़ सकती है जहां बाजार में विस्फोट होने की संभावना है। ये बिंदु अक्सर मोड़ बिंदु होते हैं जहां बाजार महत्वपूर्ण दिशात्मक निर्णय लेता है। यदि सही ढंग से न्याय किया जाता है, तो बाद में बाजार आंदोलन अपेक्षाकृत लंबा होगा, इसलिए रणनीति का संभावित लाभ स्थान बहुत बड़ा है।
यादृच्छिक ब्रेकआउट ट्रेडिंग की तुलना में, इस रणनीति द्वारा चयनित प्रवेश बिंदु बोलिंगर बैंड और केल्टनर चैनलों के बीच निचोड़ बिंदु पर है। एकीकृत संकेतक निर्णय के माध्यम से, व्यापार सफलता दर बहुत अधिक है।
बोलिंगर बैंड और केल्टनर चैनलों के चक्र मापदंडों और बैंडविड्थ मापदंडों का व्यापार परिणामों पर बहुत प्रभाव पड़ता है। यदि मापदंडों को अनुचित रूप से सेट किया जाता है, तो गलत निर्णय हो सकते हैं। इसके लिए बहुत सारे बैकटेस्टिंग के माध्यम से इष्टतम मापदंडों को खोजने की आवश्यकता होती है।
इस रणनीति के द्वारा चुने गए बिंदु को तोड़ने के बाद कीमत वापस आने का हमेशा जोखिम होता है, जिससे नुकसान होता है। नुकसान को नियंत्रित करने के लिए इसे सख्ती से रोकने की आवश्यकता है।
जब निचोड़ राज्य समाप्त होता है, तो यह रणनीति सभी पदों को बंद कर देगी। हालांकि, कभी-कभी मूल्य प्रवृत्ति अभी भी जारी रह सकती है, जो समय से पहले बाहर निकलने का जोखिम पैदा करती है। बाहर निकलने के तर्क को अनुकूलित करने की आवश्यकता है।
अधिक बैकटेस्टिंग डेटा ट्रायआउट के माध्यम से, बेहतर चक्र और बैंडविड्थ पैरामीटर सेटिंग्स को रणनीति प्रदर्शन में सुधार के लिए पाया जा सकता है।
कीमतों के उलट जाने पर घाटे में तेजी से कटौती करने के लिए चलती या अस्थिर स्टॉप सेट करें।
जब रणनीति पदों से बाहर निकलती है, तो यदि प्रवृत्ति जारी रहती है तो बाजार में पुनः प्रवेश करने के लिए कुछ पुनः प्रवेश शर्तें निर्धारित की जा सकती हैं।
विभिन्न प्रकार के अधिक संकेतकों को शामिल करने का प्रयास करें, जैसे कि अन्य अस्थिरता संकेतकों, मात्रा संकेतकों आदि, ताकि निर्णयों की सटीकता में सुधार के लिए संकेतकों के एकीकरण की एक समग्र रणनीति स्थापित की जा सके।
रणनीति बोलिंगर बैंड, केल्टनर चैनल और गति संकेतक को एकीकृत करती है। इन संकेतकों के बीच संबंधों का न्याय करके, यह उच्च सफलता दर ब्रेकआउट बिंदुओं पर प्रवेश करती है। रणनीति के प्रदर्शन में और सुधार के लिए पैरामीटर अनुकूलन, स्टॉप लॉस रणनीतियों, पुनः प्रवेश शर्तों और समग्र संकेतक एकीकरण जैसे कई पहलुओं में अनुकूलन स्थान हैं।
/*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 //All credits to LazyBear. All I did was turn it into a strategy! strategy(title = "SQZMOM STRAT", overlay=false) // --- GENERAL INPUTS --- FromMonth = input(defval = 4, title = "From Month", minval = 1, maxval = 12) FromYear = input(defval = 2020, title = "From Year", minval = 2012) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToYear = input(defval = 9999, title = "To Year", minval = 2017) FromDay = 1 ToDay = 1 start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true get_round(value, precision) => round(value * (pow(10, precision))) / pow(10, precision) trade_leverage = input(1, title = "Trade - Leverage", step = 0.25) trade_risk = input(100, title = "Trade - Risk Percent", type = input.float, step = 0.1, minval = 0.1, maxval = 100) tradeType = input("LONG", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH"]) // --- SQZMOM CODE length = input(21, title="BB Length") mult = input(2.0,title="BB MultFactor") lengthKC=input(20, title="KC Length") multKC = input(1.5, title="KC MultFactor") useTrueRange = input(true, title="Use TrueRange (KC)", type=input.bool) // Calculate BB source = close basis = sma(source, length) dev = multKC * stdev(source, length) upperBB = basis + dev lowerBB = basis - dev // Calculate KC ma = sma(source, lengthKC) range = useTrueRange ? tr : (high - low) rangema = sma(range, lengthKC) upperKC = ma + rangema * multKC lowerKC = ma - rangema * multKC sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC) sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC) noSqz = (sqzOn == false) and (sqzOff == false) val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0) bcolor = color.gray if (val > 0 and val > nz(val[1])) bcolor := color.green if (val < 0 and val < nz(val[1])) bcolor := color.red scolor = noSqz ? color.blue : sqzOn ? color.black : color.gray plot(val, color=bcolor, style=plot.style_histogram, linewidth=4) plot(0, color=scolor, style=plot.style_cross, linewidth=2) // --- VWMA CODE --- useVWMA = input(false, title = "Use VWMA to selectively long/short?", type = input.bool) lengthVWMA=input(42, title = "VWMA Length", step = 1, minval = 1) useCV=input(false, type=input.bool, title="Use Cumulative Volume for VWMA?") nbfs = useCV ? cum(volume) : sum(volume, lengthVWMA) medianSrc=close calc_evwma(price, lengthVWMA, nb_floating_shares) => data = (nz(close[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume*price/nb_floating_shares) m=calc_evwma(medianSrc, lengthVWMA, nbfs) // ---STRATEGY--- if ((tradeType == "LONG" or tradeType == "BOTH") and (m>0 or useVWMA == false)) longCondition = (val > 0 and noSqz == 0 and sqzOn == 0 and sqzOn[1] == 1) if (longCondition) contracts = get_round((strategy.equity * trade_leverage / close) * (trade_risk / 100), 4) strategy.entry("LONG", strategy.long, qty = contracts, when = window()) if((tradeType == "SHORT" or tradeType == "BOTH") and (m<0 or useVWMA == false)) shortCondition = (val < 0 and noSqz == 0 and sqzOn == 0 and sqzOn[1] == 1) if (shortCondition) contracts = get_round((strategy.equity * trade_leverage / close) * (trade_risk / 100), 4) strategy.entry("SHORT", strategy.short, qty = contracts, when = window()) if (bcolor == color.gray) strategy.close("LONG") strategy.close("SHORT")