Sumber daya yang dimuat... Pemuatan...

Strategi Pelacakan Tren T3 Dual yang Dioptimalkan

Penulis:ChaoZhang, Tanggal: 2025-01-17 14:29:51
Tag:T3TotalEMAOTTRSI

 Optimized Dual T3 Trend Tracking Strategy

Gambaran umum

Strategi ini adalah sistem trend following berdasarkan indikator Tillson T3 dan Twin Optimized Trend Tracker (TOTT). Strategi ini mengoptimalkan generasi sinyal perdagangan dengan menggabungkan osilator momentum Williams %R. Strategi ini menggunakan pengaturan parameter beli dan jual yang terpisah, memungkinkan penyesuaian sensitivitas yang fleksibel untuk kondisi pasar yang berbeda.

Prinsip Strategi

Strategi ini terdiri dari tiga komponen inti: 1. Tillson T3 Indicator - Varian yang dioptimalkan dari Exponential Moving Average (EMA) yang menghasilkan garis tren yang lebih halus melalui perhitungan EMA bertimbang ganda. 2. Twin Optimized Trend Tracker (TOTT) - Alat penelusuran tren adaptif yang menyesuaikan berdasarkan tindakan harga dan koefisien volatilitas, menghitung band atas dan bawah untuk kondisi beli dan jual. 3. Williams %R Indicator - Sebuah osilator momentum yang digunakan untuk mengidentifikasi kondisi overbought dan oversold.

Logika generasi sinyal: - Kondisi beli: Ketika garis T3 melintasi di atas band atas TOTT dan Williams % R di atas -20 (terlalu laris) - Kondisi jual: Ketika garis T3 melintasi di bawah band bawah TOTT dan Williams % R di atas -70

Keuntungan Strategi

  1. Stabilitas sinyal yang kuat - Mengurangi risiko pecah palsu secara efektif melalui perataan ganda T3
  2. Kemampuan beradaptasi yang baik - Parameter pembelian/penjualan yang terpisah memungkinkan optimasi independen untuk kondisi pasar yang berbeda
  3. Kontrol risiko yang komprehensif - Mengintegrasikan Williams %R sebagai konfirmasi sekunder
  4. Visualisasi yang jelas - Menyediakan dukungan visualisasi grafik yang komprehensif

Risiko Strategi

  1. Trend reversal lag - T3s multiple smoothing dapat menyebabkan penundaan sinyal
  2. Tidak cocok untuk pasar yang berbeda - Dapat menghasilkan sinyal yang berlebihan selama konsolidasi
  3. Sensitivitas parameter tinggi - Membutuhkan penyesuaian sering untuk lingkungan pasar yang berbeda

Saran pengendalian risiko: - Mengimplementasikan mekanisme stop-loss - Tetapkan batas volume perdagangan - Tambahkan filter konfirmasi tren

Arahan Optimasi

  1. Optimasi parameter dinamis - Mengembangkan mekanisme penyesuaian parameter adaptif
  2. Peningkatan pengakuan lingkungan pasar - Memperkenalkan indikator kekuatan tren
  3. Manajemen risiko yang lebih baik - Tambahkan stop loss dan take profit yang dinamis
  4. Penyaringan sinyal yang ditingkatkan - Mengintegrasikan indikator teknis tambahan

Ringkasan

Ini adalah tren yang terstruktur dengan baik mengikuti strategi dengan logika yang jelas. Melalui kombinasi indikator T3 dan TOTT, ditambah dengan penyaringan Williams %R, ia berkinerja sangat baik di pasar tren. Meskipun ada beberapa keterlambatan yang melekat, strategi ini menunjukkan nilai praktis yang baik dan ruang untuk perluasan melalui optimasi parameter dan peningkatan manajemen risiko.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("FON60DK by leventsah", overlay=true)

// Girdi AL
t3_length = input.int(5, title="Tillson Per AL", minval=1)
t3_opt = input.float(0.1, title="Tillson Opt AL", step=0.1, minval=0)
tott_length = input.int(5, title="TOTT Per AL", minval=1)
tott_opt = input.float(0.1, title="TOTT Opt AL", step=0.1, minval=0)
tott_coeff = input.float(0.006, title="TOTT Coeff AL", step=0.001, minval=0)

//GİRDİ SAT
t3_lengthSAT = input.int(5, title="Tillson Per SAT", minval=1)
t3_optSAT = input.float(0.1, title="Tillson Opt SAT", step=0.1, minval=0)
tott_lengthSAT = input.int(5, title="TOTT Per SAT", minval=1)
tott_opt_SAT = input.float(0.1, title="TOTT Opt SAT", step=0.1, minval=0)
tott_coeff_SAT = input.float(0.006, title="TOTT Coeff SAT", step=0.001, minval=0)

william_length = input.int(3, title="William %R Periyodu", minval=1)

// Tillson T3 AL
t3(src, length, opt) =>
    k = 2 / (length + 1)
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    ema3 = ta.ema(ema2, length)
    ema4 = ta.ema(ema3, length)
    c1 = -opt * opt * opt
    c2 = 3 * opt * opt + 3 * opt * opt * opt
    c3 = -6 * opt * opt - 3 * opt - 3 * opt * opt * opt
    c4 = 1 + 3 * opt + opt * opt * opt + 3 * opt * opt
    t3_val = c1 * ema4 + c2 * ema3 + c3 * ema2 + c4 * ema1
    t3_val

t3_value = t3(close, t3_length, t3_opt)
t3_valueSAT = t3(close, t3_lengthSAT, t3_optSAT)


// TOTT hesaplaması (Twin Optimized Trend Tracker)
Var_Func(src, length) =>
    valpha = 2 / (length + 1)
    vud1 = math.max(src - src[1], 0)
    vdd1 = math.max(src[1] - src, 0)
    vUD = math.sum(vud1, 9)
    vDD = math.sum(vdd1, 9)
    vCMO = (vUD - vDD) / (vUD + vDD)
    var float VAR = na
    VAR := valpha * math.abs(vCMO) * src + (1 - valpha * math.abs(vCMO)) * nz(VAR[1], src)
    VAR

VAR = Var_Func(close, tott_length)
VAR_SAT = Var_Func(close, tott_lengthSAT)

//LONG 
MAvg = VAR
fark = MAvg * tott_opt * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? math.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 + tott_opt) / 200 : MT * (200 - tott_opt) / 200
OTTup = OTT * (1 + tott_coeff)
OTTdn = OTT * (1 - tott_coeff)

//CLOSE
MAvgS = VAR_SAT
farkS = MAvgS * tott_opt_SAT * 0.01
longStopS = MAvgS - farkS
longStopPrevS = nz(longStopS[1], longStopS)
longStopS := MAvgS > longStopPrevS ? math.max(longStopS, longStopPrevS) : longStopS
shortStopS = MAvgS + farkS
shortStopPrevS = nz(shortStopS[1], shortStopS)
shortStopS := MAvgS < shortStopPrevS ? math.min(shortStopS, shortStopPrevS) : shortStopS
dirS = 1
dirS := nz(dirS[1], dirS)
dirS := dirS == -1 and MAvgS > shortStopPrevS ? 1 : dirS == 1 and MAvgS < longStopPrevS ? -1 : dirS
MTS = dirS == 1 ? longStopS : shortStopS
OTTS = MAvgS > MTS ? MTS * (200 + tott_opt_SAT) / 200 : MTS * (200 - tott_opt_SAT) / 200
OTTupS = OTTS * (1 + tott_coeff_SAT)
OTTdnS = OTTS * (1 - tott_coeff_SAT)

// Calculation of Williams %R
williamsR = -100 * (ta.highest(high, william_length) - close) / (ta.highest(high, william_length) - ta.lowest(low, william_length))

// Alım koşulu
longCondition = (t3_value > OTTup) and (williamsR > -20)

// Short koşulu (long pozisyonunu kapatmak için)
shortCondition = (t3_valueSAT < OTTdnS) and (williamsR > -70)

// Alım pozisyonu açma
if (longCondition)
    strategy.entry("Long", strategy.long)

// Short koşulu sağlandığında long pozisyonunu kapama
if (shortCondition)
    strategy.close("Long")


// Alım pozisyonu boyunca barları yeşil yapma
barcolor(strategy.position_size > 0 ? color.green : na)

// Grafikte göstergeleri çizme
plot(t3_value, color=color.blue, linewidth=1, title="Tillson AL")
plot(OTTup, color=color.green, linewidth=1, title="TOTT Up AL")
plot(OTTdn, color=color.red, linewidth=1, title="TOTT Down AL")

// Grafikte göstergeleri çizme
plot(t3_valueSAT, color=color.blue, linewidth=1, title="Tillson SAT")
plot(OTTupS, color=color.green, linewidth=1, title="TOTT Up SAT")
plot(OTTdnS, color=color.red, linewidth=1, title="TOTT Down SAT")


Berkaitan

Lebih banyak