Strategi Mengikuti Tren OTT Ganda


Tanggal Pembuatan: 2023-10-08 15:10:31 Akhirnya memodifikasi: 2023-10-08 15:10:31
menyalin: 0 Jumlah klik: 912
1
fokus pada
1617
Pengikut

Ringkasan

Strategi pelacakan tren OTT ganda adalah strategi OTT yang disempurnakan, yang menggabungkan garis dan faktor OTT ganda untuk lebih baik menanggapi sinyal palsu saat pasar dihapus. Strategi ini dikembangkan oleh pedagang Turki Anıl Özekşi, yang menjelaskan secara rinci ide desain strategi ini dalam tutorial video miliknya.

Prinsip

Inti dari strategi OTT ganda adalah menggunakan dua OTT optimasi trend tracker untuk menilai arah tren. Pertama, menghitung MAvg rata-rata bergerak, dan kemudian mendapatkan garis stop panjang dan garis stop pendek berdasarkan persentase dari nilai MAvg.

Untuk mengatasi sinyal-sinyal palsu di pasar, strategi ini telah meningkatkan dua hal:

  1. Ditambahkan dua baris OTT bergeser vertikal, OTTup dan OTTdn, yang sedikit bergeser ke atas dan ke bawah dari OTT. Sinyal perdagangan nyata hanya dihasilkan ketika harga menembus dua baris bergeser tersebut.

  2. Sebuah koefisien kecil diperkenalkan untuk menyesuaikan dua jalur OTT yang dipindahkan agar lebih tepat untuk pasar.

Dengan desain OTT ganda ini, Anda dapat menyaring sebagian besar kebisingan dari pasar penataan dan menghindari sinyal yang salah. Dengan demikian, Anda dapat menangkap titik-titik perubahan tren dengan lebih baik dan beralih posisi tepat waktu. Ini adalah keuntungan terbesar dari strategi OTT ganda.

Keunggulan

  • Desain OTT ganda dapat digunakan untuk memfilter sinyal palsu secara efektif dan meningkatkan stabilitas strategi.
  • Peningkatan koefisien penyesuaian membuat saluran OTT lebih dekat dengan respon pasar
  • Anıl Özekşi, penulis video ini, menjelaskan secara rinci tentang strategi yang mudah dipahami dan dikuasai.
  • Komposisi EMA, Stop Loss Line dan berbagai indikator teknis untuk menentukan tren pasar
  • Anıl Özekşi adalah seorang pedagang Turki yang terkenal dan memiliki reputasi profesional.

Risiko

  • Indikator OTT sendiri cenderung menimbulkan risiko penarikan tes, dan desain OTT ganda dapat mengurangi masalah ini.
  • Dalam situasi yang sangat bergejolak, garis stop loss dapat sering dipicu dan ada risiko overtrading.
  • Koefisien coefficient harus diuji dengan hati-hati untuk mendapatkan nilai optimal, jika tidak, efeknya akan dikurangi
  • Video ini adalah tutorial bahasa Turki, dan hambatan bahasa dapat mempengaruhi pemahaman algoritma yang benar.
  • Data retrospektif yang tidak memadai, perlu lebih banyak periode dan lebih banyak pasar untuk memvalidasi efektivitas strategi

Tanggapan:

  • Meningkatkan buffer antara Stop Lines dan Dual OTT untuk menghindari sensitivitas yang berlebihan
  • Pengaturan koefisien yang dioptimalkan agar lebih sesuai dengan hasil pengukuran
  • Menerjemahkan tutorial penulis untuk memastikan pemahaman yang benar tentang logika algoritma
  • Memeriksa kembali parameter strategi dengan lebih banyak konteks historis

Arah optimasi

  • Pertimbangkan untuk mengatur parameter seperti panjang siklus sebagai nilai input yang dapat disesuaikan
  • Cobalah jenis rata-rata bergerak lainnya untuk mencari algoritma rata-rata yang lebih sesuai dengan prinsip OTP
  • Ukuran koefisien yang dioptimalkan untuk varietas yang berbeda
  • Menambahkan mekanisme penyaringan untuk menghindari sinyal yang salah pada periode non-trading utama
  • Mengubah Stop Loss Line menjadi Dynamic Tracking, menyesuaikan dengan fluktuasi real-time
  • Menambahkan algoritma pembelajaran mesin untuk mengoptimalkan pengaturan parameter secara otomatis menggunakan AI

Singkatnya, strategi OTT ganda memanfaatkan pengalaman Anıl Özekşi dalam OTTP dan berinovasi. Ini diharapkan menjadi kerangka strategi pelacakan tren yang dapat diandalkan dan dapat disesuaikan. Namun, uji coba yang terus-menerus harus dioptimalkan untuk menyesuaikan dengan perubahan pasar.

Meringkaskan

Strategi OTT ganda melalui jalur pelacakan tren ganda optimasi dan koefisien penyesuaian halus, secara efektif menanggapi masalah sinyal palsu untuk menyusun pasar. Ini menggunakan pemikiran rata-rata bergerak secara rasional, dibantu dengan garis stop loss untuk mengikuti tren secara dinamis. Strategi ini sederhana dan praktis, dari pengalaman pribadi pedagang terkenal, layak untuk dipelajari secara mendalam.

Kode 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)