ٹوئن آپٹمائزڈ ٹرینڈ ٹریکر حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-08 15:10:31
ٹیگز:

جائزہ

ٹوئن آپٹمائزڈ ٹرینڈ ٹریکر حکمت عملی او ٹی ٹی حکمت عملی کا ایک بہتر ورژن ہے جس میں دوہری او ٹی ٹی لائنوں اور ایک گتانک کو یکجا کیا گیا ہے تاکہ سائیڈ ویز مارکیٹ کے دوران غلط سگنلز کو بہتر طریقے سے سنبھال سکے۔ یہ حکمت عملی ترک تاجر انیل اوزیکی نے تیار کی تھی ، جس نے اپنے ویڈیو ٹیوٹوریلز میں ڈیزائن فلسفہ کی وضاحت کی۔

اصول

جڑواں او ٹی ٹی حکمت عملی کا بنیادی مقصد دو اصلاح شدہ ٹرینڈ ٹریکنگ لائنوں - او ٹی ٹی کا استعمال کرتے ہوئے رجحان کی سمت کا تعین کرنا ہے۔ یہ پہلے حرکت پذیر اوسط MAvg کا حساب لگاتا ہے ، پھر MAvg قیمت کے فیصد کی بنیاد پر لمبی اسٹاپ نقصان لائن لانگ اسٹاپ اور مختصر اسٹاپ نقصان لائن شارٹ اسٹاپ حاصل کرتا ہے۔ جب قیمت لانگ اسٹاپ لائن سے اوپر گزرتی ہے تو ، یہ ایک لمبا سگنل ہے ، اور جب یہ شارٹ اسٹاپ لائن سے نیچے گزرتی ہے تو ، یہ ایک مختصر سگنل ہے۔

سائیڈ ویز مارکیٹ کے دوران جھوٹے سگنلز سے نمٹنے کے لئے، حکمت عملی مندرجہ ذیل دو پہلوؤں کو بہتر بناتا ہے:

  1. دو عمودی طور پر منتقل شدہ او ٹی ٹی لائنیں ، او ٹی ٹی اپ اور او ٹی ٹی ڈی این ، شامل کی گئیں۔ یہ اصل او ٹی ٹی کی معمولی اوپر اور نیچے کی تبدیلیاں ہیں۔ صرف اس وقت جب قیمت ان دو منتقل شدہ لائنوں سے ٹوٹ جاتی ہے ، تو درست تجارتی سگنل تیار ہوتے ہیں۔

  2. بہتر درستگی کے لئے دو ہٹائے گئے او ٹی ٹی لائنوں کو ٹھیک کرنے کے لئے ایک چھوٹا سا کوفیسیئنٹ متعارف کرایا گیا ہے۔

اس جڑواں او ٹی ٹی ڈیزائن کے ساتھ ، غلط سگنلز سے بچنے کے لئے سائیڈ ویز مارکیٹ سے زیادہ تر شور کو فلٹر کیا جاسکتا ہے۔ اس سے رجحان کے موڑ کے مقامات کو پکڑنے اور بروقت انداز میں پوزیشنوں کو تبدیل کرنے میں مدد ملتی ہے۔ یہ جڑواں او ٹی ٹی حکمت عملی کا سب سے بڑا فائدہ ہے۔

فوائد

  • جڑواں او ٹی ٹی لائنوں کا ڈیزائن غلط سگنل کو مؤثر طریقے سے فلٹر کرسکتا ہے اور حکمت عملی کے استحکام کو بڑھا سکتا ہے
  • اضافی کوفیسیٹر او ٹی ٹی لائنوں کو مارکیٹ پر بہتر ردعمل دینے میں مدد کرتا ہے
  • مصنف اینل اوزیکی نے اپنی ویڈیو سبق میں حکمت عملی کی منطق کو واضح طور پر بیان کیا ہے ، جو سمجھنا آسان ہے
  • یہ مارکیٹ کے رجحانات کا تعین کرنے کے لئے EMA، سٹاپ نقصان لائنوں کی طرح متعدد تکنیکی اشارے یکجا
  • مصنف انیل اوزیکی ایک مشہور ترک تاجر ہیں، جو اس کی ساکھ میں اضافہ کرتے ہیں

خطرات

  • او ٹی ٹی اشارے خود کو وِپسا اور پِل بیک ٹیسٹ کرنے کا رجحان ہے۔ جڑواں او ٹی ٹی ڈیزائن اس مسئلے کو کم کرتا ہے۔
  • شدید اتار چڑھاؤ کے ساتھ، سٹاپ نقصان کی لائنیں اکثر ٹرگر ہو سکتی ہیں، جس کی وجہ سے اوور ٹریڈنگ ہوتی ہے۔
  • ضارب کو زیادہ سے زیادہ قدر کے لئے محتاط جانچ کی ضرورت ہے ، ورنہ یہ افادیت کو نقصان پہنچاتا ہے۔
  • ٹیوٹوریلز ترکی میں ہیں۔ زبان کی رکاوٹ منطق کی غلط فہمی کا باعث بن سکتی ہے۔
  • ناکافی بیک ٹیسٹ۔ حکمت عملی کی تصدیق کے لئے مزید ادوار اور بازاروں کی ضرورت ہے۔

انسداد اقدامات:

  • زیادہ حساسیت کو روکنے کے لئے سٹاپ نقصان لائنوں اور جڑواں او ٹی ٹی کے درمیان ایک بفر شامل کریں
  • بیک ٹسٹ کے نتائج کے مطابق کوف کی ترتیبات کو بہتر بنائیں
  • منطق کی درست تفہیم کو یقینی بنانے کے لئے سبق کا ترجمہ کریں
  • قابل اعتماد کی توثیق کرنے کے لئے زیادہ تاریخی ادوار میں بیک ٹسٹ انجام دیں

اصلاح کی ہدایات

  • مدت کی لمبائی کی طرح پیرامیٹرز ایڈجسٹ ان پٹ بنائیں
  • دوسرے قسم کے چلتے ہوئے اوسط کی کوشش کریں جو او ٹی ٹی کے اصولوں کے مطابق بہتر ہوں
  • مختلف تجارتی آلات کے لئے الگ الگ کوف کو بہتر بنائیں
  • چھوٹے تجارتی سیشن کے دوران غلط سگنل سے بچنے کے لئے فلٹرز شامل کریں
  • اتار چڑھاؤ کی بنیاد پر سٹاپ نقصان کی لائنوں کو متحرک بنائیں
  • پیرامیٹرز کو خودکار طور پر بہتر بنانے کے لئے مشین لرننگ متعارف کروائیں

خلاصہ یہ کہ ، جڑواں او ٹی ٹی حکمت عملی انیل اوزیکی کے او ٹی ٹی تجربے کو پوری طرح استعمال کرتی ہے اور جدت طرازی کرتی ہے۔ اس میں قابل اعتماد ، اپنی مرضی کے مطابق رجحانات کی پیروی کرنے کا فریم ورک بننے کی صلاحیت ہے۔ لیکن بدلتی ہوئی منڈیوں کے مطابق ڈھالنے کے لئے اب بھی مسلسل اصلاح اور جانچ کی ضرورت ہے۔

نتیجہ

جڑواں او ٹی ٹی حکمت عملی ضمنی مارکیٹوں کے دوران غلط سگنلز کو مؤثر طریقے سے دوہری اصلاح شدہ ٹرینڈ ٹریکنگ لائنوں اور ٹھیک ٹیوننگ گتانک کا استعمال کرتے ہوئے سنبھالتی ہے۔ یہ رجحانات کو ٹریک کرنے کے لئے متحرک اوسط تصورات اور متحرک اسٹاپ نقصان کی لائنوں کا معقول استعمال کرتی ہے۔ یہ جامع اور عملی حکمت عملی ایک مشہور تاجر کے پہلے ہاتھ کے تجربے سے پیدا ہوتی ہے ، جس کی وجہ سے اس کی گہرائی سے تحقیق اور اطلاق کے قابل ہے۔ لیکن ہمیں اس کی حدود سے بھی آگاہ ہونا چاہئے اور خود اطمینان سے بچنا چاہئے۔ صرف مسلسل اصلاحات اور سخت جانچ کے ذریعے ہی یہ ایک مضبوط ٹرینڈ ٹریکنگ حکمت عملی بن سکتی ہے۔


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

مزید