টুইন অপ্টিমাইজড ট্রেন্ড ট্র্যাকার কৌশলটি ওটিটি কৌশলটির একটি বর্ধিত সংস্করণ যা ডুয়াল ওটিটি লাইন এবং একটি সহগকে একত্রিত করে যা পাশের বাজারের সময় মিথ্যা সংকেতগুলি আরও ভালভাবে পরিচালনা করতে পারে। এই কৌশলটি তুর্কি ব্যবসায়ী আনিল ওজেকসি দ্বারা তৈরি করা হয়েছিল, যিনি তার ভিডিও টিউটোরিয়ালগুলিতে নকশা দর্শনের ব্যাখ্যা করেছিলেন।
টুইন ওটিটি কৌশলটির মূলটি হ'ল দুটি অনুকূলিত ট্রেন্ড ট্র্যাকিং লাইন - ওটিটি ব্যবহার করে প্রবণতা দিক নির্ধারণ করা। এটি প্রথমে চলমান গড় এমএভিজি গণনা করে, তারপরে এমএভিজি মানের শতাংশের ভিত্তিতে দীর্ঘ স্টপ লস লাইন লংস্টপ এবং সংক্ষিপ্ত স্টপ লস লাইন শর্টস্টপ পায়। যখন দাম লংস্টপ লাইনের উপরে অতিক্রম করে, এটি একটি দীর্ঘ সংকেত, এবং যখন এটি শর্টস্টপ লাইনের নীচে অতিক্রম করে, এটি একটি সংক্ষিপ্ত সংকেত।
পার্শ্ববর্তী বাজারের সময় মিথ্যা সংকেত মোকাবেলা করার জন্য, কৌশলটি নিম্নলিখিত দুটি দিক উন্নত করেঃ
দুটি উল্লম্বভাবে স্থানচ্যুত ওটিটি লাইন, ওটিটিআপ এবং ওটিটিডন যুক্ত করা হয়। এগুলি মূল ওটিটি-র সামান্য উপরে এবং নীচে স্থানান্তর। কেবলমাত্র যখন দাম এই দুটি স্থানচ্যুত লাইনগুলি ভেঙে যায়, তখন বৈধ ট্রেডিং সংকেত উত্পন্ন হয়।
আরও ভাল নির্ভুলতার জন্য দুটি স্থানচ্যুত ওটিটি লাইনকে সূক্ষ্মভাবে সামঞ্জস্য করার জন্য একটি ছোট সহগ প্রবর্তন করা হয়।
এই টুইন ওটিটি ডিজাইনের সাহায্যে, ভুল সংকেত এড়াতে পাশের বাজার থেকে বেশিরভাগ গোলমাল ফিল্টার করা যায়। এটি প্রবণতা টার্নিং পয়েন্টগুলি ক্যাপচার করতে এবং সময়মতো অবস্থানগুলি স্যুইচ করতে সহায়তা করে। এটি টুইন ওটিটি কৌশলটির সবচেয়ে বড় সুবিধা।
প্রতিরোধ ব্যবস্থাঃ
সংক্ষেপে, টুইন ওটিটি কৌশলটি আনিল ওজেকশির ওটিটি অভিজ্ঞতা পুরোপুরি ব্যবহার করে এবং উদ্ভাবন করে। এটি একটি নির্ভরযোগ্য, কাস্টমাইজযোগ্য ট্রেন্ড ট্র্যাকিং ফ্রেমওয়ার্ক হওয়ার সম্ভাবনা রয়েছে। তবে পরিবর্তিত বাজারে খাপ খাইয়ে নেওয়ার জন্য এখনও ক্রমাগত অপ্টিমাইজেশন এবং পরীক্ষার প্রয়োজন।
টুইন ওটিটি কৌশলটি ডাবল অপ্টিমাইজড ট্রেন্ড ট্র্যাকিং লাইন এবং ফাইন টিউনিং সহগ ব্যবহার করে পার্শ্ববর্তী বাজারগুলির সময় কার্যকরভাবে মিথ্যা সংকেতগুলি পরিচালনা করে। এটি প্রবণতা ট্র্যাক করার জন্য চলমান গড় ধারণা এবং গতিশীল স্টপ লস লাইনগুলির যুক্তিসঙ্গত ব্যবহার করে। এই সংক্ষিপ্ত এবং ব্যবহারিক কৌশলটি একটি নামী ব্যবসায়ীর প্রথম হাতের অভিজ্ঞতা থেকে উদ্ভূত, এটি গভীর গবেষণা এবং প্রয়োগের মূল্যবান করে তোলে। তবে আমাদের অবশ্যই এর সীমাবদ্ধতাগুলি সম্পর্কে সচেতন হওয়া উচিত এবং স্বচ্ছন্দতা এড়ানো উচিত। কেবলমাত্র অবিচ্ছিন্ন অপ্টিমাইজেশন এবং কঠোর পরীক্ষার মাধ্যমে এটি একটি শক্তিশালী ট্রেন্ড ট্র্যাকিং কৌশল হয়ে উঠতে পারে।
/*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)