ٹوئن آپٹمائزڈ ٹرینڈ ٹریکر حکمت عملی او ٹی ٹی حکمت عملی کا ایک بہتر ورژن ہے جس میں دوہری او ٹی ٹی لائنوں اور ایک گتانک کو یکجا کیا گیا ہے تاکہ سائیڈ ویز مارکیٹ کے دوران غلط سگنلز کو بہتر طریقے سے سنبھال سکے۔ یہ حکمت عملی ترک تاجر انیل اوزیکی نے تیار کی تھی ، جس نے اپنے ویڈیو ٹیوٹوریلز میں ڈیزائن فلسفہ کی وضاحت کی۔
جڑواں او ٹی ٹی حکمت عملی کا بنیادی مقصد دو اصلاح شدہ ٹرینڈ ٹریکنگ لائنوں - او ٹی ٹی کا استعمال کرتے ہوئے رجحان کی سمت کا تعین کرنا ہے۔ یہ پہلے حرکت پذیر اوسط MAvg کا حساب لگاتا ہے ، پھر MAvg قیمت کے فیصد کی بنیاد پر لمبی اسٹاپ نقصان لائن لانگ اسٹاپ اور مختصر اسٹاپ نقصان لائن شارٹ اسٹاپ حاصل کرتا ہے۔ جب قیمت لانگ اسٹاپ لائن سے اوپر گزرتی ہے تو ، یہ ایک لمبا سگنل ہے ، اور جب یہ شارٹ اسٹاپ لائن سے نیچے گزرتی ہے تو ، یہ ایک مختصر سگنل ہے۔
سائیڈ ویز مارکیٹ کے دوران جھوٹے سگنلز سے نمٹنے کے لئے، حکمت عملی مندرجہ ذیل دو پہلوؤں کو بہتر بناتا ہے:
دو عمودی طور پر منتقل شدہ او ٹی ٹی لائنیں ، او ٹی ٹی اپ اور او ٹی ٹی ڈی این ، شامل کی گئیں۔ یہ اصل او ٹی ٹی کی معمولی اوپر اور نیچے کی تبدیلیاں ہیں۔ صرف اس وقت جب قیمت ان دو منتقل شدہ لائنوں سے ٹوٹ جاتی ہے ، تو درست تجارتی سگنل تیار ہوتے ہیں۔
بہتر درستگی کے لئے دو ہٹائے گئے او ٹی ٹی لائنوں کو ٹھیک کرنے کے لئے ایک چھوٹا سا کوفیسیئنٹ متعارف کرایا گیا ہے۔
اس جڑواں او ٹی ٹی ڈیزائن کے ساتھ ، غلط سگنلز سے بچنے کے لئے سائیڈ ویز مارکیٹ سے زیادہ تر شور کو فلٹر کیا جاسکتا ہے۔ اس سے رجحان کے موڑ کے مقامات کو پکڑنے اور بروقت انداز میں پوزیشنوں کو تبدیل کرنے میں مدد ملتی ہے۔ یہ جڑواں او ٹی ٹی حکمت عملی کا سب سے بڑا فائدہ ہے۔
انسداد اقدامات:
خلاصہ یہ کہ ، جڑواں او ٹی ٹی حکمت عملی انیل اوزیکی کے او ٹی ٹی تجربے کو پوری طرح استعمال کرتی ہے اور جدت طرازی کرتی ہے۔ اس میں قابل اعتماد ، اپنی مرضی کے مطابق رجحانات کی پیروی کرنے کا فریم ورک بننے کی صلاحیت ہے۔ لیکن بدلتی ہوئی منڈیوں کے مطابق ڈھالنے کے لئے اب بھی مسلسل اصلاح اور جانچ کی ضرورت ہے۔
جڑواں او ٹی ٹی حکمت عملی ضمنی مارکیٹوں کے دوران غلط سگنلز کو مؤثر طریقے سے دوہری اصلاح شدہ ٹرینڈ ٹریکنگ لائنوں اور ٹھیک ٹیوننگ گتانک کا استعمال کرتے ہوئے سنبھالتی ہے۔ یہ رجحانات کو ٹریک کرنے کے لئے متحرک اوسط تصورات اور متحرک اسٹاپ نقصان کی لائنوں کا معقول استعمال کرتی ہے۔ یہ جامع اور عملی حکمت عملی ایک مشہور تاجر کے پہلے ہاتھ کے تجربے سے پیدا ہوتی ہے ، جس کی وجہ سے اس کی گہرائی سے تحقیق اور اطلاق کے قابل ہے۔ لیکن ہمیں اس کی حدود سے بھی آگاہ ہونا چاہئے اور خود اطمینان سے بچنا چاہئے۔ صرف مسلسل اصلاحات اور سخت جانچ کے ذریعے ہی یہ ایک مضبوط ٹرینڈ ٹریکنگ حکمت عملی بن سکتی ہے۔
/*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)