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