টুইন অপ্টিমাইজড ট্রেন্ড ট্র্যাকার কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৩-০৮-১৫ঃ১০ঃ৩১
ট্যাগঃ

সারসংক্ষেপ

টুইন অপ্টিমাইজড ট্রেন্ড ট্র্যাকার কৌশলটি ওটিটি কৌশলটির একটি বর্ধিত সংস্করণ যা ডুয়াল ওটিটি লাইন এবং একটি সহগকে একত্রিত করে যা পাশের বাজারের সময় মিথ্যা সংকেতগুলি আরও ভালভাবে পরিচালনা করতে পারে। এই কৌশলটি তুর্কি ব্যবসায়ী আনিল ওজেকসি দ্বারা তৈরি করা হয়েছিল, যিনি তার ভিডিও টিউটোরিয়ালগুলিতে নকশা দর্শনের ব্যাখ্যা করেছিলেন।

নীতিমালা

টুইন ওটিটি কৌশলটির মূলটি হ'ল দুটি অনুকূলিত ট্রেন্ড ট্র্যাকিং লাইন - ওটিটি ব্যবহার করে প্রবণতা দিক নির্ধারণ করা। এটি প্রথমে চলমান গড় এমএভিজি গণনা করে, তারপরে এমএভিজি মানের শতাংশের ভিত্তিতে দীর্ঘ স্টপ লস লাইন লংস্টপ এবং সংক্ষিপ্ত স্টপ লস লাইন শর্টস্টপ পায়। যখন দাম লংস্টপ লাইনের উপরে অতিক্রম করে, এটি একটি দীর্ঘ সংকেত, এবং যখন এটি শর্টস্টপ লাইনের নীচে অতিক্রম করে, এটি একটি সংক্ষিপ্ত সংকেত।

পার্শ্ববর্তী বাজারের সময় মিথ্যা সংকেত মোকাবেলা করার জন্য, কৌশলটি নিম্নলিখিত দুটি দিক উন্নত করেঃ

  1. দুটি উল্লম্বভাবে স্থানচ্যুত ওটিটি লাইন, ওটিটিআপ এবং ওটিটিডন যুক্ত করা হয়। এগুলি মূল ওটিটি-র সামান্য উপরে এবং নীচে স্থানান্তর। কেবলমাত্র যখন দাম এই দুটি স্থানচ্যুত লাইনগুলি ভেঙে যায়, তখন বৈধ ট্রেডিং সংকেত উত্পন্ন হয়।

  2. আরও ভাল নির্ভুলতার জন্য দুটি স্থানচ্যুত ওটিটি লাইনকে সূক্ষ্মভাবে সামঞ্জস্য করার জন্য একটি ছোট সহগ প্রবর্তন করা হয়।

এই টুইন ওটিটি ডিজাইনের সাহায্যে, ভুল সংকেত এড়াতে পাশের বাজার থেকে বেশিরভাগ গোলমাল ফিল্টার করা যায়। এটি প্রবণতা টার্নিং পয়েন্টগুলি ক্যাপচার করতে এবং সময়মতো অবস্থানগুলি স্যুইচ করতে সহায়তা করে। এটি টুইন ওটিটি কৌশলটির সবচেয়ে বড় সুবিধা।

সুবিধা

  • টুইন ওটিটি লাইন ডিজাইন কার্যকরভাবে মিথ্যা সংকেত ফিল্টার করতে পারে এবং কৌশল স্থিতিশীলতা উন্নত করতে পারে
  • অতিরিক্ত কোয়েফিসিয়েন্ট ওটিটি লাইনগুলিকে বাজারে আরও ভালভাবে সাড়া দিতে সহায়তা করে
  • লেখক আনিল ওজেকসি তার ভিডিও টিউটোরিয়ালগুলিতে কৌশলগত যুক্তি পরিষ্কারভাবে ব্যাখ্যা করেছেন, যা বোঝা সহজ
  • এটি বাজারের প্রবণতা নির্ধারণের জন্য ইএমএ, স্টপ লস লাইন মত একাধিক প্রযুক্তিগত সূচক একত্রিত করে
  • লেখক অ্যানিল ওজেকসি একজন সুপরিচিত তুর্কি ব্যবসায়ী, যা এর বিশ্বাসযোগ্যতাকে আরও বাড়িয়ে তোলে।

ঝুঁকি

  • ওটিটি ইন্ডিকেটর নিজেই উইপসো এবং পুলব্যাক টেস্টের প্রবণতা রাখে। টুইন ওটিটি ডিজাইন এই সমস্যাটি হ্রাস করে।
  • হিংস্র ওঠানামা সহ, স্টপ লস লাইনগুলি প্রায়শই ট্রিগার হতে পারে, যা ওভারট্রেডিংয়ের কারণ হতে পারে।
  • সর্বোত্তম মানের জন্য সহগকে সাবধানে পরীক্ষা করা দরকার, অন্যথায় এটি কার্যকারিতা হ্রাস করে।
  • টিউটোরিয়ালগুলো তুর্কি ভাষায় আছে। ভাষা বাধা যুক্তির ভুল বোঝাবুঝির কারণ হতে পারে।
  • পর্যাপ্ত ব্যাকটেস্ট নেই। কৌশলটি যাচাই করার জন্য আরও সময় এবং বাজারের প্রয়োজন।

প্রতিরোধ ব্যবস্থাঃ

  • অতিরিক্ত সংবেদনশীলতা রোধ করতে স্টপ লস লাইন এবং টুইন ওটিটি এর মধ্যে একটি বাফার যুক্ত করুন
  • ব্যাকটেস্টের ফলাফল অনুযায়ী কোয়েফ সেটিংস অপ্টিমাইজ করুন
  • যুক্তির সঠিক বোঝার জন্য টিউটোরিয়াল অনুবাদ করুন
  • নির্ভরযোগ্যতা যাচাই করার জন্য আরো ঐতিহাসিক সময়কাল জুড়ে ব্যাকটেস্ট পরিচালনা

অপ্টিমাইজেশান নির্দেশাবলী

  • প্যারামিটার যেমন সময়ের দৈর্ঘ্য নিয়মিত ইনপুট করুন
  • অন্যান্য ধরণের চলমান গড়গুলি চেষ্টা করুন যা ওটিটি নীতিগুলির সাথে আরও ভালভাবে খাপ খায়
  • বিভিন্ন ট্রেডিং ইনস্ট্রুমেন্টের জন্য পৃথকভাবে কোয়েফ অপ্টিমাইজ করুন
  • ছোট ট্রেডিং সেশনের সময় ভুল সংকেত এড়ানোর জন্য ফিল্টার যুক্ত করুন
  • স্টপ লস লাইনগুলিকে অস্থিরতার উপর ভিত্তি করে গতিশীল করুন
  • স্বয়ংক্রিয়ভাবে প্যারামিটার অপ্টিমাইজ করার জন্য মেশিন লার্নিং চালু করুন

সংক্ষেপে, টুইন ওটিটি কৌশলটি আনিল ওজেকশির ওটিটি অভিজ্ঞতা পুরোপুরি ব্যবহার করে এবং উদ্ভাবন করে। এটি একটি নির্ভরযোগ্য, কাস্টমাইজযোগ্য ট্রেন্ড ট্র্যাকিং ফ্রেমওয়ার্ক হওয়ার সম্ভাবনা রয়েছে। তবে পরিবর্তিত বাজারে খাপ খাইয়ে নেওয়ার জন্য এখনও ক্রমাগত অপ্টিমাইজেশন এবং পরীক্ষার প্রয়োজন।

সিদ্ধান্ত

টুইন ওটিটি কৌশলটি ডাবল অপ্টিমাইজড ট্রেন্ড ট্র্যাকিং লাইন এবং ফাইন টিউনিং সহগ ব্যবহার করে পার্শ্ববর্তী বাজারগুলির সময় কার্যকরভাবে মিথ্যা সংকেতগুলি পরিচালনা করে। এটি প্রবণতা ট্র্যাক করার জন্য চলমান গড় ধারণা এবং গতিশীল স্টপ লস লাইনগুলির যুক্তিসঙ্গত ব্যবহার করে। এই সংক্ষিপ্ত এবং ব্যবহারিক কৌশলটি একটি নামী ব্যবসায়ীর প্রথম হাতের অভিজ্ঞতা থেকে উদ্ভূত, এটি গভীর গবেষণা এবং প্রয়োগের মূল্যবান করে তোলে। তবে আমাদের অবশ্যই এর সীমাবদ্ধতাগুলি সম্পর্কে সচেতন হওয়া উচিত এবং স্বচ্ছন্দতা এড়ানো উচিত। কেবলমাত্র অবিচ্ছিন্ন অপ্টিমাইজেশন এবং কঠোর পরীক্ষার মাধ্যমে এটি একটি শক্তিশালী ট্রেন্ড ট্র্যাকিং কৌশল হয়ে উঠতে পারে।


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

আরো