
यह एक मात्रात्मक ट्रेडिंग रणनीति है जो LazyBear पर आधारित गतिशीलता एक्सट्रूज़न सूचकांक पर विकसित की गई है। यह रणनीति ब्रिन बैंड, कैलकिन चैनल और गतिशीलता सूचकांक को एकीकृत करती है, जो कई तकनीकी संकेतकों के संयोजन के माध्यम से उच्च जीत दर के साथ गतिशीलता ब्रेकआउट ट्रेडिंग को प्राप्त करती है।
इस रणनीति का केंद्रीय संकेतक LazyBear की गतिशीलता है, जो यह बताता है कि क्या बुरीन बैंड को कल्किन चैनल द्वारा दबाया जा रहा है, और जब यह होता है, तो यह एक संभावित विस्फोट बिंदु में प्रवेश करने के लिए बाजार का प्रतिनिधित्व करता है। गतिशीलता संकेतक के साथ, यह निर्धारित करने के बाद कि यह किस दिशा में है, यह बाजार के विस्फोट को पकड़ सकता है जब यह रिलीज हो जाता है।
विशेष रूप से, यह रणनीति पहले 21 चक्रों के ब्लिंक बैंड की गणना करती है, जो मूल्य मानक अंतर के 2 गुना की चौड़ाई है। साथ ही, 20 चक्रों के कैल्शियम चैनल की गणना की जाती है, जो मूल्य वृद्धि के 1.5 गुना की चौड़ाई है। जब ब्लिंक बैंड को कैल्शियम चैनल के स्ट्रिप्स द्वारा दबाया जाता है, तो एक एक्सट्रूज़न सिग्नल जारी किया जाता है। इसके अलावा, यह रणनीति कुछ समय के लिए कीमतों की गतिशीलता की गणना करती है। जब एक्सट्रूज़न होता है, तो गतिशीलता सूचकांक की दिशा के साथ, खरीद या बेचने का निर्णय लें।
आउटफील्ड पर, जब गतिशीलता सूचक रंग ग्रे हो जाता है, तो स्थिति को समतल करना, जो कि निचोड़ की स्थिति के अंत का प्रतिनिधित्व करता है, प्रवृत्ति को उलट सकता है।
इस रणनीति में ब्रिन बैंड, केल्विन चैनल और गतिशीलता के संकेतकों को शामिल किया गया है, जो इन संकेतकों के समग्र संबंधों को समझने से व्यापारिक निर्णयों की सटीकता को बढ़ा सकते हैं और गलत ट्रेडों की संभावना को कम कर सकते हैं।
गतिशीलता की रणनीति बाजार के विस्फोट के महत्वपूर्ण बिंदुओं को पकड़ सकती है, जो अक्सर महत्वपूर्ण दिशा निर्णय लेने के लिए महत्वपूर्ण बिंदु होते हैं, और यदि सही निर्णय लिया जाता है, तो बाद में लंबे समय तक चलती है, इसलिए रणनीति के लिए संभावित मुनाफे की जगह बहुत अधिक है।
इस रणनीति के लिए चुना गया प्रवेश बिंदु ब्रीनिंग बैंड और कैलकिन चैनल के निचोड़ बिंदुओं में स्थित है, जो कि आकस्मिक ब्रेकआउट ट्रेडों की तुलना में सूचकांकों के एकीकरण के आधार पर व्यापार की सफलता की उच्च दर है।
ब्रिन बैंड और केल्विन चैनल के लिए आवधिक पैरामीटर और बैंडविड्थ पैरामीटर सेटिंग्स रणनीति के व्यापार परिणामों पर बहुत प्रभाव डालती हैं। यदि पैरामीटर गलत तरीके से सेट किए जाते हैं, तो गलतफहमी का कारण बन सकता है। इसके लिए बहुत सारे रिट्रेसिंग के माध्यम से इष्टतम पैरामीटर खोजने की आवश्यकता होती है।
किसी भी ब्रेकआउट ट्रेड में विफलता का जोखिम होता है, और जब कीमत रणनीति के चयनित बिंदु को तोड़ती है, तो फिर से वापस लेने की संभावना होती है, जिससे नुकसान होता है। इसे सख्ती से रोकने की आवश्यकता होती है।
जब दबाव समाप्त हो जाता है, तो यह रणनीति सभी पदों को समाप्त कर देती है। हालांकि, कभी-कभी कीमत की प्रवृत्ति अभी भी जारी रह सकती है, जिससे रणनीति के जल्द से जल्द बाहर निकलने का जोखिम होता है।
अधिक मात्रा में परीक्षण त्रुटि के साथ, ब्रीनिंग बैंड और कैलकिन चैनल के लिए बेहतर पैरामीटर चक्र और बैंडविड्थ सेटिंग्स की तलाश करें ताकि रणनीति की प्रभावशीलता में सुधार हो सके।
एक गतिशील रोक या दोलन रोक सेट किया जा सकता है, जो रणनीति के अधिकतम निकासी को नियंत्रित करने के लिए कीमतों के पलटने पर तेजी से बंद हो जाता है।
जब रणनीति स्थिति से बाहर निकलती है, तो कुछ पुनः प्रवेश की शर्तें निर्धारित की जा सकती हैं और यदि प्रवृत्ति जारी रहती है, तो फिर से प्रवेश किया जा सकता है।
निर्णय लेने की सटीकता में सुधार के लिए एक सूचक-एकीकृत समग्र रणनीति बनाने के लिए विभिन्न प्रकार के सूचकांकों जैसे कि अन्य अस्थिरता सूचकांकों, लेन-देन सूचकांकों आदि के संयोजन का प्रयास किया जा सकता है।
इस रणनीति में ब्रिन बैंड, कैल्किन चैनल और गतिशीलता के संकेतकों को एकीकृत किया गया है, इन संकेतकों के संबंधों का आकलन करके, उच्च सफलता दर के साथ प्रवेश के लिए एक सफलता बिंदु का चयन किया गया है। पैरामीटर अनुकूलन, स्टॉपलॉस रणनीति, पुनः प्रवेश की शर्तों और मिश्रित संकेतकों के एकीकरण जैसे कई पहलुओं में अनुकूलन की जगह है, जो रणनीति की प्रभावशीलता को और बढ़ा सकती है।
/*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")