डबल ओटीटी ट्रेंड ट्रैकिंग रणनीति एक सुधारित ओटीटी रणनीति है, जो डबल ओटीटी लाइनों और गुणांकों को जोड़ती है ताकि बाजार में सुधार के समय के लिए झूठे संकेतों का बेहतर जवाब दिया जा सके। यह रणनीति तुर्की के व्यापारी Anıl Özekşi द्वारा विकसित की गई है, जिन्होंने अपने वीडियो ट्यूटोरियल में इस रणनीति के डिजाइन विचार को विस्तार से समझाया है।
दोहरी ओटीटी रणनीति का मूल यह है कि दो अनुकूलित प्रवृत्ति ट्रैकिंग लाइनों का उपयोग करके प्रवृत्ति की दिशा का न्याय करें। यह पहले चलती औसत एमएवीजी की गणना करता है, और फिर एमएवीजी मूल्य के प्रतिशत के आधार पर लंबी स्टॉप लाइन और शॉर्ट स्टॉप लाइन को प्राप्त करता है। जब कीमत लंबी स्टॉप लाइन को पार करती है तो यह एक bullish संकेत है, और जब यह छोटी स्टॉप लाइन को पार करती है तो यह एक bullish संकेत है।
इस रणनीति में दो सुधार किए गए हैं, ताकि बाजार को ठीक करने के लिए झूठे संकेतों से निपटा जा सकेः
दो ऊर्ध्वाधर स्थानांतरित ओटीटी लाइनें जोड़ी गई हैं, ओटीटीअप और ओटीटीडीएन, जो ओटीटी के मामूली ऊपर और नीचे हैं। केवल जब कीमत इन दो स्थानांतरण लाइनों को तोड़ती है, तो वास्तविक व्यापार संकेत उत्पन्न होता है।
दो-बिज ओटीटी लाइनों को ठीक से समायोजित करने के लिए एक छोटा सा कोफ फैक्टर पेश किया गया है, जिससे यह बाजार के लिए अधिक सटीक रूप से अनुकूल हो सके।
इस प्रकार के दोहरे ओटीटी डिजाइन के माध्यम से, अधिकांश स्टॉक बाजार के शोर को फ़िल्टर किया जा सकता है, जिससे गलत सिग्नल उत्पन्न होने से बचा जा सकता है। इस प्रकार, रुझान मोड़ बिंदुओं को बेहतर ढंग से पकड़ने और समय पर स्थिति को बदलने में मदद मिल सकती है। यह दोहरी ओटीटी रणनीति का सबसे बड़ा लाभ है।
क्या करें?
कुल मिलाकर, डबल ओटीटी रणनीति ने अनिल Özekşi के ओटीपी अनुभव का पूरा लाभ उठाया और नवाचार किया। यह एक विश्वसनीय, अनुकूलन योग्य प्रवृत्ति ट्रैकिंग रणनीति ढांचे के रूप में काम करने की उम्मीद है। लेकिन बाजार में बदलाव के लिए अनुकूलन परीक्षण की आवश्यकता है।
दोहरी ओटीटी रणनीति दोहरी अनुकूलन प्रवृत्ति ट्रैक लाइन और सूक्ष्म समायोजन गुणांक के माध्यम से, बाजार के झूठे सिग्नल की समस्या का प्रभावी ढंग से जवाब देती है। यह गतिशील ट्रैक प्रवृत्ति के लिए स्टॉप लाइन के साथ चलती औसत विचार का तर्कसंगत उपयोग करता है। यह रणनीति सरल व्यावहारिक है, प्रसिद्ध व्यापारियों के प्रत्यक्ष अनुभव से, गहराई से अध्ययन के लायक है। लेकिन हमें इसकी सीमाओं को समझना चाहिए, घमंड से बचना चाहिए, सावधानीपूर्वक सत्यापन करना चाहिए। केवल निरंतर अनुकूलन परीक्षण इसे एक विश्वसनीय प्रवृत्ति ट्रैक रणनीति बना सकता है।
/*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)