Sumber dimuat naik... memuat...

Strategi Pengesanan Trend T3 Berganda yang Dioptimumkan

Penulis:ChaoZhang, Tarikh: 2025-01-17 14:29:51
Tag:T3TOTTEMAOTTRSI

 Optimized Dual T3 Trend Tracking Strategy

Ringkasan

Strategi ini adalah sistem trend berikut berdasarkan penunjuk Tillson T3 dan Twin Optimized Trend Tracker (TOTT). Ia mengoptimumkan penjanaan isyarat perdagangan dengan menggabungkan osilator momentum Williams % R. Strategi ini menggunakan tetapan parameter beli dan jual yang berasingan, yang membolehkan penyesuaian kepekaan yang fleksibel untuk keadaan pasaran yang berbeza.

Prinsip Strategi

Strategi ini terdiri daripada tiga komponen utama: 1. Tilson T3 Indicator - Varian yang dioptimumkan dari Exponential Moving Average (EMA) yang menghasilkan garis trend yang lebih lancar melalui pengiraan EMA bertimbang ganda. 2. Twin Optimized Trend Tracker (TOTT) - Alat mengikuti trend adaptif yang menyesuaikan berdasarkan tindakan harga dan pekali turun naik, mengira jalur atas dan bawah untuk keadaan beli dan jual. 3. Williams %R Indikator - Osilator momentum yang digunakan untuk mengenal pasti keadaan overbought dan oversold.

Logik penjanaan isyarat: - Syarat beli: Apabila garis T3 melintasi di atas band atas TOTT dan Williams % R di atas -20 (terlalu dijual) - Syarat jual: Apabila garis T3 melintasi di bawah TOTT band bawah dan Williams % R adalah di atas -70

Kelebihan Strategi

  1. Kestabilan isyarat yang kuat - Mengurangkan risiko pecah palsu dengan berkesan melalui kelancaran berganda T3
  2. Kemudahan penyesuaian yang baik - Parameter pembelian/penjualan yang berasingan membolehkan pengoptimuman bebas untuk keadaan pasaran yang berbeza
  3. Kawalan risiko yang komprehensif - Mengintegrasikan Williams %R sebagai pengesahan sekunder
  4. Visualisasi yang jelas - Menyediakan sokongan visualisasi carta yang komprehensif

Risiko Strategi

  1. Kelewatan pembalikan trend - T3s penghalusan berganda boleh menyebabkan kelewatan isyarat
  2. Tidak sesuai untuk pasaran pelbagai - Boleh menghasilkan isyarat yang berlebihan semasa penyatuan
  3. Sensitiviti parameter yang tinggi - Memerlukan pelarasan yang kerap untuk persekitaran pasaran yang berbeza

Cadangan kawalan risiko: - Melaksanakan mekanisme stop-loss - Tetapkan had jumlah dagangan - Tambah penapis pengesahan trend

Arahan pengoptimuman

  1. Pengoptimuman parameter dinamik - Membangunkan mekanisme penyesuaian parameter adaptif
  2. Pengiktirafan persekitaran pasaran yang dipertingkatkan - Memperkenalkan penunjuk kekuatan trend
  3. Pengurusan risiko yang lebih baik - Tambah stop-loss dan mengambil keuntungan yang dinamik
  4. Penapisan isyarat yang lebih baik - Mengintegrasikan penunjuk teknikal tambahan

Ringkasan

Ini adalah trend yang terstruktur dengan baik mengikuti strategi dengan logik yang jelas. Melalui gabungan penunjuk T3 dan TOTT, ditambah dengan penapisan Williams %R, ia berprestasi dengan cemerlang di pasaran trend. Walaupun terdapat beberapa kelewatan yang melekat, strategi ini menunjukkan nilai praktikal yang baik dan ruang untuk pengembangan melalui pengoptimuman parameter dan penambahbaikan pengurusan 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 lanjut