यह रणनीति तीन अलग-अलग तकनीकी संकेतकों को जोड़ती है और एक अपेक्षाकृत स्थिर और प्रभावी अल्पकालिक ट्रेडिंग रणनीति बनाने के लिए कैंडलस्टिक के रंग और शरीर के आधार पर अतिरिक्त फिल्टर के साथ एक दोहरी चलती औसत प्रणाली का उपयोग करके ट्रेडिंग सिग्नल उत्पन्न करती है।
यह रणनीति बाजार में संपीड़न और विस्तार के चरणों की पहचान करने के लिए बोलिंगर बैंड और केसी चैनलों के संयोजन का उपयोग करती है। विशेष रूप से, जब बोलिंगर बैंड केसी चैनल के भीतर होते हैं, तो इसे संपीड़न माना जाता है; जब बोलिंगर बैंड केसी चैनल को तोड़ते हैं, तो इसे विस्तार माना जाता है। संपीड़न तीव्र अस्थिरता और संभावित प्रवृत्ति उलट का प्रतिनिधित्व करता है, और इस समय रैखिक प्रतिगमन को प्राथमिक ट्रेडिंग सिग्नल संकेतक के रूप में उपयोग किया जाता है।
यदि रैखिक प्रतिगमन हिस्टोग्राम सकारात्मक है (एक ऊपर की प्रवृत्ति का प्रतिनिधित्व करता है) और बार एक लाल मोमबत्ती है (एक बंद निचले हिस्से का प्रतिनिधित्व करता है), उसी समय मोमबत्ती शरीर पिछले 30 मोमबत्तियों के औसत शरीर के 1/3 से बड़ा है, तो ऐसा संयोजन संकेत लंबा जाता है। इसके विपरीत, यदि रैखिक प्रतिगमन हिस्टोग्राम नकारात्मक है, तो बार एक हरी मोमबत्ती है, और शरीर भी बड़ा है, यह छोटा हो जाता है।
रणनीति में बाजार के चरण का आकलन करने में सहायता के लिए संपीड़न और विस्तार की पृष्ठभूमि का विज़ुअलाइज़ेशन भी दिया गया है।
संकेतकों के मापदंडों को समायोजित करके, फ़िल्टरिंग मानदंडों को अनुकूलित करके आदि जोखिमों को कम किया जा सकता है।
इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः
यह रणनीति कई संकेतकों को जोड़ती है, जबकि संपीड़न के अवसरों की पहचान करती है, यह अपेक्षाकृत मजबूत कुशल अल्पकालिक रणनीति बनाने के लिए फ़िल्टरिंग स्थितियों को बढ़ाती है। पैरामीटर और फ़िल्टरिंग स्थिति अनुकूलन के माध्यम से, बेहतर परिणाम प्राप्त किए जा सकते हैं। इसके अलावा, रणनीति ढांचा लचीला है और विभिन्न किस्मों में उपयोग के लिए समायोजित करना आसान है, आगे परीक्षण और अनुकूलन के लायक है।
/*backtest start: 2023-11-24 00:00:00 end: 2023-12-24 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2017 //@version=2 strategy(shorttitle = "Squeeze str 1.0", title="Noro's Squeeze Momentum Strategy v1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") length = input(20, title="BB Length") mult = input(2.0,title="BB MultFactor") lengthKC=input(20, title="KC Length") multKC = input(1.5, title="KC MultFactor") useTrueRange = true usecolor = input(true, defval = true, title = "Use color of candle") usebody = input(true, defval = true, title = "Use EMA Body") needbg = input(false, defval = false, title = "Show trend background") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") // 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 = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon)) scolor = noSqz ? blue : sqzOn ? black : gray trend = val > 0 ? 1 : val < 0 ? -1 : 0 //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //EMA Body body = abs(close - open) emabody = ema(body, 30) / 3 //Signals bar = close > open ? 1 : close < open ? -1 : 0 up = trend == 1 and (bar == -1 or usecolor == false) and (body > emabody or usebody == false) dn = trend == -1 and (bar == 1 or usecolor == false) and (body > emabody or usebody == false) if up strategy.entry("Long", strategy.long) if dn strategy.entry("Short", strategy.short)