ट्विन ऑप्टिमाइज़्ड ट्रेंड ट्रैकर रणनीति ओटीटी रणनीति का एक उन्नत संस्करण है जो दोहरी ओटीटी लाइनों और एक गुणांक को जोड़ती है ताकि साइडवेज बाजार के दौरान झूठे संकेतों को बेहतर ढंग से संभाला जा सके। यह रणनीति तुर्की के व्यापारी अनिल ओज़ेकी द्वारा विकसित की गई थी, जिन्होंने अपने वीडियो ट्यूटोरियल में डिजाइन दर्शन की व्याख्या की थी।
ट्विन ओटीटी रणनीति का मूल दो अनुकूलित प्रवृत्ति ट्रैकिंग लाइनों - ओटीटी का उपयोग करके प्रवृत्ति दिशा निर्धारित करना है। यह पहले चलती औसत एमएवीजी की गणना करता है, फिर एमएवीजी मूल्य के प्रतिशत के आधार पर लंबी स्टॉप लॉस लाइन लॉन्गस्टॉप और छोटी स्टॉप लॉस लाइन शॉर्टस्टॉप प्राप्त करता है। जब कीमत लॉन्गस्टॉप लाइन से ऊपर जाती है, तो यह एक लंबा संकेत है, और जब यह शॉर्टस्टॉप लाइन से नीचे जाती है, तो यह एक छोटा संकेत है।
साइडवेज मार्केट के दौरान झूठे संकेतों से निपटने के लिए, रणनीति में निम्नलिखित दो पहलुओं में सुधार किया गया हैः
दो ऊर्ध्वाधर विस्थापित ओटीटी लाइनें, ओटीटीअप और ओटीटीडीएन, जोड़ी जाती हैं। वे मूल ओटीटी के मामूली ऊपर और नीचे की ओर शिफ्ट हैं। केवल जब कीमत इन दो विस्थापित लाइनों के माध्यम से टूटती है, तो वैध ट्रेडिंग सिग्नल उत्पन्न होते हैं।
बेहतर परिशुद्धता के लिए दो विस्थापित ओटीटी लाइनों को ठीक से समायोजित करने के लिए एक छोटा गुणांक पेश किया गया है।
इस जुड़वां ओटीटी डिजाइन के साथ, गलत संकेतों से बचने के लिए साइडवेज बाजार से अधिकांश शोर को फ़िल्टर किया जा सकता है। यह समय पर रुझान मोड़ बिंदुओं को पकड़ने और पदों को बदलने में मदद करता है। यह जुड़वां ओटीटी रणनीति का सबसे बड़ा लाभ है।
प्रतिरोधात्मक उपाय:
संक्षेप में, ट्विन ओटीटी रणनीति पूरी तरह से अनिल ओज़ेकशी के ओटीटी अनुभव का उपयोग करती है और नवाचार करती है। इसमें एक विश्वसनीय, अनुकूलन योग्य ट्रेंड ट्रैकिंग फ्रेमवर्क बनने की क्षमता है। लेकिन बदलते बाजारों के अनुकूल होने के लिए अभी भी निरंतर अनुकूलन और परीक्षण की आवश्यकता है।
ट्विन ओटीटी रणनीति दोहरे अनुकूलित ट्रेंड ट्रैकिंग लाइनों और एक ठीक ट्यूनिंग गुणांक का उपयोग करके पार्श्व बाजारों के दौरान गलत संकेतों को प्रभावी ढंग से संभालती है। यह रुझानों को ट्रैक करने के लिए चलती औसत अवधारणाओं और गतिशील स्टॉप लॉस लाइनों का समझदार उपयोग करती है। यह संक्षिप्त और व्यावहारिक रणनीति एक प्रसिद्ध व्यापारी के पहले हाथ के अनुभव से निकलती है, जिससे यह गहन शोध और अनुप्रयोग के लायक है। लेकिन हमें इसकी सीमाओं के बारे में भी पता होना चाहिए और आत्मसंतुष्टि से बचना चाहिए। केवल निरंतर अनुकूलन और कठोर परीक्षण के माध्यम से यह एक मजबूत ट्रेंड ट्रैकिंग रणनीति बन सकती है।
/*backtest start: 2023-09-07 00:00:00 end: 2023-10-07 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © KivancOzbilgic //created by: @Anil_Ozeksi //developer: ANIL ÖZEKŞİ //author: @kivancozbilgic strategy("Twin Optimized Trend Tracker","TOTT", overlay=true) src = input(close, title="Source") length=input(40, "OTT Period", minval=1) percent=input(1, "Optimization Constant", type=input.float, step=0.1, minval=0) coeff=input(0.001, "Twin OTT Coefficient", type=input.float, step=0.001, minval=0) showsupport = input(title="Show Support Line?", type=input.bool, defval=true) showsignalsk = input(title="Show Signals?", type=input.bool, defval=true) mav = input(title="Moving Average Type", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"]) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) Var_Func(src,length)=> valpha=2/(length+1) vud1=src>src[1] ? src-src[1] : 0 vdd1=src<src[1] ? src[1]-src : 0 vUD=sum(vud1,9) vDD=sum(vdd1,9) vCMO=nz((vUD-vDD)/(vUD+vDD)) VAR=0.0 VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1]) VAR=Var_Func(src,length) Wwma_Func(src,length)=> wwalpha = 1/ length WWMA = 0.0 WWMA := wwalpha*src + (1-wwalpha)*nz(WWMA[1]) WWMA=Wwma_Func(src,length) Zlema_Func(src,length)=> zxLag = length/2==round(length/2) ? length/2 : (length - 1) / 2 zxEMAData = (src + (src - src[zxLag])) ZLEMA = ema(zxEMAData, length) ZLEMA=Zlema_Func(src,length) Tsf_Func(src,length)=> lrc = linreg(src, length, 0) lrc1 = linreg(src,length,1) lrs = (lrc-lrc1) TSF = linreg(src, length, 0)+lrs TSF=Tsf_Func(src,length) getMA(src, length) => ma = 0.0 if mav == "SMA" ma := sma(src, length) ma if mav == "EMA" ma := ema(src, length) ma if mav == "WMA" ma := wma(src, length) ma if mav == "TMA" ma := sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) ma if mav == "VAR" ma := VAR ma if mav == "WWMA" ma := WWMA ma if mav == "ZLEMA" ma := ZLEMA ma if mav == "TSF" ma := TSF ma ma MAvg=getMA(src, length) fark=MAvg*percent*0.01 longStop = MAvg - fark longStopPrev = nz(longStop[1], longStop) longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop shortStop = MAvg + fark shortStopPrev = nz(shortStop[1], shortStop) shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir MT = dir==1 ? longStop: shortStop OTT=MAvg>MT ? MT*(200+percent)/200 : MT*(200-percent)/200 OTTup=OTT*(1+coeff) OTTdn=OTT*(1-coeff) PPLOT=plot(showsupport ? MAvg : na, color=#0585E1, linewidth=2, title="Support Line") pALLup=plot(nz(OTTup[2]), color=color.green, linewidth=2, title="OTTup", transp=0) pALLdn=plot(nz(OTTdn[2]), color=color.red, linewidth=2, title="OTTdown", transp=0) buySignalk = crossover(MAvg, OTTup[2]) sellSignalk = crossunder(MAvg, OTTdn[2]) K1=barssince(buySignalk) K2=barssince(sellSignalk) O1=barssince(buySignalk[1]) O2=barssince(sellSignalk[1]) plotshape(buySignalk and showsignalsk and O1>K2 ? min(low-abs(roc(low,1)),OTTdn-abs(roc(low,1))) : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0) plotshape(sellSignalk and showsignalsk and O2>K1 ? max(high+abs(roc(high,1)),OTTup+abs(roc(high,1))) : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0,display=display.none) longFillColor = highlighting ? (O2>K1 ? color.green : na) : na shortFillColor = highlighting ? (O1>K2 ? color.red : na) : na fill(mPlot, PPLOT, title="UpTrend Highligter", color=longFillColor,transp=90) fill(mPlot, PPLOT, title="DownTrend Highligter", color=shortFillColor,transp=90) fill(pALLup, pALLdn, title="Flat Zone Highligter", color=color.blue,transp=90) dummy0 = input(true, title = "=Backtest Inputs=") FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromYear = input(defval = 2005, title = "From Year", minval = 2005) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToYear = input(defval = 9999, title = "To Year", minval = 2006) Start = timestamp(FromYear, FromMonth, FromDay, 00, 00) Finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) Timerange() => time >= Start and time <= Finish ? true : false if buySignalk strategy.entry("Long", strategy.long) if sellSignalk strategy.entry("Short", strategy.short)