जुड़वां अनुकूलित रुझान ट्रैकर रणनीति

लेखक:चाओझांग, दिनांक: 2023-10-08 15:10:31
टैगः

अवलोकन

ट्विन ऑप्टिमाइज़्ड ट्रेंड ट्रैकर रणनीति ओटीटी रणनीति का एक उन्नत संस्करण है जो दोहरी ओटीटी लाइनों और एक गुणांक को जोड़ती है ताकि साइडवेज बाजार के दौरान झूठे संकेतों को बेहतर ढंग से संभाला जा सके। यह रणनीति तुर्की के व्यापारी अनिल ओज़ेकी द्वारा विकसित की गई थी, जिन्होंने अपने वीडियो ट्यूटोरियल में डिजाइन दर्शन की व्याख्या की थी।

सिद्धांत

ट्विन ओटीटी रणनीति का मूल दो अनुकूलित प्रवृत्ति ट्रैकिंग लाइनों - ओटीटी का उपयोग करके प्रवृत्ति दिशा निर्धारित करना है। यह पहले चलती औसत एमएवीजी की गणना करता है, फिर एमएवीजी मूल्य के प्रतिशत के आधार पर लंबी स्टॉप लॉस लाइन लॉन्गस्टॉप और छोटी स्टॉप लॉस लाइन शॉर्टस्टॉप प्राप्त करता है। जब कीमत लॉन्गस्टॉप लाइन से ऊपर जाती है, तो यह एक लंबा संकेत है, और जब यह शॉर्टस्टॉप लाइन से नीचे जाती है, तो यह एक छोटा संकेत है।

साइडवेज मार्केट के दौरान झूठे संकेतों से निपटने के लिए, रणनीति में निम्नलिखित दो पहलुओं में सुधार किया गया हैः

  1. दो ऊर्ध्वाधर विस्थापित ओटीटी लाइनें, ओटीटीअप और ओटीटीडीएन, जोड़ी जाती हैं। वे मूल ओटीटी के मामूली ऊपर और नीचे की ओर शिफ्ट हैं। केवल जब कीमत इन दो विस्थापित लाइनों के माध्यम से टूटती है, तो वैध ट्रेडिंग सिग्नल उत्पन्न होते हैं।

  2. बेहतर परिशुद्धता के लिए दो विस्थापित ओटीटी लाइनों को ठीक से समायोजित करने के लिए एक छोटा गुणांक पेश किया गया है।

इस जुड़वां ओटीटी डिजाइन के साथ, गलत संकेतों से बचने के लिए साइडवेज बाजार से अधिकांश शोर को फ़िल्टर किया जा सकता है। यह समय पर रुझान मोड़ बिंदुओं को पकड़ने और पदों को बदलने में मदद करता है। यह जुड़वां ओटीटी रणनीति का सबसे बड़ा लाभ है।

लाभ

  • ट्विन ओटीटी लाइन डिजाइन प्रभावी ढंग से झूठे संकेतों को फ़िल्टर कर सकता है और रणनीति स्थिरता को बढ़ा सकता है
  • अतिरिक्त गुणांक ओटीटी लाइनों को बाजार पर बेहतर प्रतिक्रिया देने में मदद करता है
  • लेखक अनिल ओज़ेकी ने अपने वीडियो ट्यूटोरियल में रणनीति के तर्क को स्पष्ट रूप से समझाया है, जिसे समझना आसान है
  • यह बाजार के रुझानों को निर्धारित करने के लिए ईएमए, स्टॉप लॉस लाइन जैसे कई तकनीकी संकेतकों को जोड़ती है
  • लेखक अनिल ओज़ेकशी एक प्रसिद्ध तुर्की व्यापारी हैं, जो इस लेख की विश्वसनीयता को बढ़ाते हैं।

जोखिम

  • ओटीटी संकेतक स्वयं ही whipsaw और pullback परीक्षण करने के लिए करते हैं। जुड़वां ओटीटी डिजाइन इस समस्या को कम करता है।
  • हिंसक उतार-चढ़ाव के साथ, स्टॉप लॉस लाइनें अक्सर ट्रिगर हो सकती हैं, जिससे ओवरट्रेडिंग हो सकती है।
  • गुणांक को इष्टतम मूल्य के लिए सावधानीपूर्वक परीक्षण करने की आवश्यकता है, अन्यथा यह प्रभावशीलता को कम करता है।
  • ट्यूटोरियल तुर्की में हैं। भाषा की बाधा से तर्क की गलतफहमी हो सकती है।
  • अपर्याप्त बैकटेस्ट। रणनीति को सत्यापित करने के लिए अधिक अवधि और बाजारों की आवश्यकता है।

प्रतिरोधात्मक उपाय:

  • अतिसंवेदनशीलता को रोकने के लिए स्टॉप लॉस लाइनों और ट्विन ओटीटी के बीच एक बफर जोड़ें
  • बैकटेस्ट परिणामों के अनुसार गुणांक सेटिंग्स का अनुकूलन करें
  • तर्क की सही समझ सुनिश्चित करने के लिए ट्यूटोरियल का अनुवाद
  • विश्वसनीयता सत्यापित करने के लिए अधिक ऐतिहासिक अवधियों में बैकटेस्ट करें

अनुकूलन दिशाएँ

  • अवधि लंबाई समायोज्य इनपुट जैसे मापदंडों बनाओ
  • अन्य प्रकार के चलती औसत की कोशिश करें जो ओटीटी सिद्धांतों के अनुकूल हों
  • विभिन्न व्यापारिक साधनों के लिए अलग से गुणांक का अनुकूलन करना
  • छोटे व्यापारिक सत्रों के दौरान गलत संकेतों से बचने के लिए फ़िल्टर जोड़ें
  • अस्थिरता के आधार पर स्टॉप लॉस लाइनों को गतिशील बनाएं
  • स्वचालित रूप से मापदंडों का अनुकूलन करने के लिए मशीन सीखने का परिचय दें

संक्षेप में, ट्विन ओटीटी रणनीति पूरी तरह से अनिल ओज़ेकशी के ओटीटी अनुभव का उपयोग करती है और नवाचार करती है। इसमें एक विश्वसनीय, अनुकूलन योग्य ट्रेंड ट्रैकिंग फ्रेमवर्क बनने की क्षमता है। लेकिन बदलते बाजारों के अनुकूल होने के लिए अभी भी निरंतर अनुकूलन और परीक्षण की आवश्यकता है।

निष्कर्ष

ट्विन ओटीटी रणनीति दोहरे अनुकूलित ट्रेंड ट्रैकिंग लाइनों और एक ठीक ट्यूनिंग गुणांक का उपयोग करके पार्श्व बाजारों के दौरान गलत संकेतों को प्रभावी ढंग से संभालती है। यह रुझानों को ट्रैक करने के लिए चलती औसत अवधारणाओं और गतिशील स्टॉप लॉस लाइनों का समझदार उपयोग करती है। यह संक्षिप्त और व्यावहारिक रणनीति एक प्रसिद्ध व्यापारी के पहले हाथ के अनुभव से निकलती है, जिससे यह गहन शोध और अनुप्रयोग के लायक है। लेकिन हमें इसकी सीमाओं के बारे में भी पता होना चाहिए और आत्मसंतुष्टि से बचना चाहिए। केवल निरंतर अनुकूलन और कठोर परीक्षण के माध्यम से यह एक मजबूत ट्रेंड ट्रैकिंग रणनीति बन सकती है।


/*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)

अधिक