Strategi Mengikuti Arah Aliran Dwi OTT


Tarikh penciptaan: 2023-10-08 15:10:31 Akhirnya diubah suai: 2023-10-08 15:10:31
Salin: 0 Bilangan klik: 912
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi pengesanan trend OTT berganda adalah strategi OTT yang lebih baik yang menggabungkan garis dan faktor OTT berganda untuk lebih baik menangani isyarat palsu semasa penyesuaian pasaran. Strategi ini dibangunkan oleh pedagang Turki Anıl Özekşi, yang menerangkan reka bentuk strategi ini secara terperinci dalam tutorial video beliau.

Prinsip

Inti strategi OTT ganda adalah menggunakan dua garis trend pengesanan OTT yang dioptimumkan untuk menentukan arah trend. Ia pertama-tama mengira MAvg purata bergerak, dan kemudian mendapatkan garis berhenti panjang dan garis berhenti pendek berdasarkan peratusan nilai MAvg. Ia memberi isyarat kenaikan apabila harga melewati garis berhenti panjang dan turun apabila ia melewati garis berhenti pendek.

Untuk menangani isyarat palsu untuk menyusun semula pasaran, strategi ini telah diperbaiki dalam dua perkara:

  1. Tambahan dua baris OTT bersalin menegak, iaitu OTTup dan OTTdn, yang sedikit bersalin ke atas dan ke bawah OTT. Isyarat perdagangan sebenar hanya dihasilkan apabila harga menembusi kedua-dua baris ini.

  2. Satu faktor koefisien kecil diperkenalkan untuk menyesuaikan kedua-dua garis OTT perpindahan, menjadikannya lebih tepat untuk pasaran.

Dengan reka bentuk OTT berganda ini, anda boleh menapis sebahagian besar bunyi pasaran penataan dan mengelakkan isyarat yang salah. Dengan demikian, anda dapat menangkap titik perubahan trend dengan lebih baik dan menukar kedudukan tepat pada masanya. Ini adalah kelebihan terbesar strategi OTT berganda.

Kelebihan

  • Menggunakan reka bentuk OTT dua hala untuk menyaring isyarat palsu dan meningkatkan kestabilan strategi
  • Peningkatan koefisien penyesuaian menjadikan saluran OTT lebih dekat dengan tindak balas pasaran
  • Penulis Anıl Özekşi menerangkan strategi dalam video dengan terperinci dan mudah difahami.
  • Pelbagai penunjuk teknikal seperti EMA komposit, garis hentian dan lain-lain untuk menilai pergerakan pasaran
  • Anıl Özekşi adalah seorang peniaga Turki yang terkenal dan mempunyai reputasi profesional.

Risiko

  • Indeks OTT sendiri mudah menimbulkan risiko untuk menarik balik ujian, reka bentuk OTT berganda dapat mengurangkan masalah ini
  • Dalam keadaan yang sangat bergolak, barisan hentian mungkin sering dipicu dan terdapat risiko perdagangan berlebihan.
  • Coefficient perlu diuji dengan teliti untuk mencapai nilai optimum, jika tidak, kesannya akan dikurangkan
  • Video ini adalah tutorial bahasa Turki, dan masalah bahasa boleh menjejaskan pemahaman algoritma yang betul.
  • Data yang tidak mencukupi, strategi yang perlu disahkan untuk jangka masa yang lebih lama dan lebih banyak pasaran

Kaedah pencegahan:

  • Menambah buffer antara stop-loss dan OTT dua, mengelakkan sensitiviti yang berlebihan
  • Pengaturan koefisien yang dioptimumkan agar lebih sesuai dengan hasil pengukuran
  • Terjemahkan tutorial penulis untuk memastikan logik algoritma difahami dengan betul
  • Ujian semula dalam lebih banyak konteks sejarah untuk mengesahkan kebolehpercayaan parameter strategi

Arah pengoptimuman

  • Anda boleh mempertimbangkan untuk menetapkan parameter seperti panjang kitaran sebagai nilai input yang boleh disesuaikan
  • Cuba jenis purata bergerak yang lain untuk mencari algoritma purata yang lebih sesuai dengan prinsip OTP
  • Saiz koefisien yang dioptimumkan mengikut jenis dagangan yang berbeza
  • Menambah mekanisme penapisan untuk mengelakkan isyarat yang salah dalam tempoh perdagangan bukan utama
  • Mengubah garis hentian kepada pengesanan dinamik, menyesuaikan secara langsung mengikut kadar turun naik
  • Menambah algoritma pembelajaran mesin, menggunakan AI untuk mengoptimumkan parameter secara automatik

Kesimpulannya, strategi OTT berganda memanfaatkan pengalaman Anıl Özekşi dalam bidang OTTP dan berinovasi. Ia dijangka menjadi kerangka strategi trend-tracking yang boleh dipercayai dan disesuaikan. Tetapi ujian pengoptimuman berterusan diperlukan untuk menyesuaikan diri dengan perubahan pasaran.

ringkaskan

Strategi OTT berganda dengan cara mengoptimumkan garis trend dan koefisien penyesuaian halus, berkesan menangani masalah isyarat palsu untuk menyusun pasaran. Ia menggunakan pemikiran purata bergerak secara rasional, ditambah dengan garis henti rugi untuk trend trend. Strategi ini ringkas dan praktikal, dari pengalaman peribadi pedagang terkenal, bernilai kajian yang mendalam.

Kod sumber strategi
/*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)