Chiến lược tối ưu hóa theo dõi xu hướng chỉ báo T3 kép

T3 TOTT EMA OTT RSI
Ngày tạo: 2025-01-17 14:29:51 sửa đổi lần cuối: 2025-01-17 14:29:51
sao chép: 1 Số nhấp chuột: 75
1
tập trung vào
1166
Người theo dõi

Chiến lược tối ưu hóa theo dõi xu hướng chỉ báo T3 kép

Tổng quan

Chiến lược này là hệ thống theo dõi xu hướng dựa trên chỉ báo Tillson T3 và Twin Optimized Trend Follower (TOTT). Nó tối ưu hóa việc tạo ra các tín hiệu giao dịch bằng cách kết hợp nó với bộ dao động động lượng Williams %R. Chiến lược này sử dụng các thiết lập tham số mua và bán riêng biệt, có thể linh hoạt điều chỉnh độ nhạy theo các điều kiện thị trường khác nhau và cải thiện khả năng thích ứng của chiến lược.

Nguyên tắc chiến lược

Chiến lược này bao gồm ba thành phần cốt lõi:

  1. Chỉ báo Tillson T3 - Đây là biến thể đường trung bình động hàm mũ (EMA) được tối ưu hóa, tạo ra đường xu hướng mượt mà hơn bằng cách tính trọng số cho nhiều EMA.
  2. Double Optimized Trend Tracker (TOTT) - Một công cụ theo dõi xu hướng có khả năng điều chỉnh thích ứng hành động giá và hệ số biến động để tính toán dải trên và dải dưới cho điều kiện mua và bán tương ứng.
  3. Chỉ báo Williams %R - một bộ dao động động lượng được sử dụng để xác định tình trạng mua quá mức và bán quá mức.

Logic tạo tín hiệu giao dịch:

  • Điều kiện mua: Khi đường T3 phá vỡ đường TOTT phía trên và Williams %R lớn hơn -20 (quá bán)
  • Điều kiện bán: Khi đường T3 giảm xuống dưới đường ray dưới của TOTT và Williams %R lớn hơn -70

Lợi thế chiến lược

  1. Độ ổn định tín hiệu mạnh - thông qua quá trình xử lý làm mịn nhiều lần của các chỉ số T3, nguy cơ đột phá sai được giảm thiểu hiệu quả
  2. Khả năng thích ứng tốt - việc tách biệt các thông số mua và bán cho phép tối ưu hóa độc lập cho các điều kiện thị trường khác nhau
  3. Kiểm soát rủi ro được cải thiện - Tích hợp Williams %R làm xác nhận thứ cấp để cải thiện độ tin cậy của giao dịch
  4. Hình ảnh rõ ràng - Chiến lược cung cấp hỗ trợ hình ảnh biểu đồ toàn diện để tạo điều kiện thuận lợi cho việc phân tích và phán đoán

Rủi ro chiến lược

  1. Độ trễ đảo ngược xu hướng - việc làm mịn nhiều lần chỉ báo T3 có thể gây ra tín hiệu trễ
  2. Không phù hợp với thị trường biến động - quá nhiều tín hiệu giao dịch có thể được tạo ra trong quá trình giao dịch ngang
  3. Độ nhạy tham số cao - các tham số cần được điều chỉnh thường xuyên cho các môi trường thị trường khác nhau

Đề xuất kiểm soát rủi ro:

  • Giới thiệu cơ chế dừng lỗ
  • Đặt giới hạn khối lượng giao dịch
  • Đã thêm bộ lọc xác nhận xu hướng

Hướng tối ưu hóa chiến lược

  1. Tối ưu hóa tham số động - phát triển cơ chế điều chỉnh tham số thích ứng
  2. Cải thiện nhận diện bối cảnh thị trường - giới thiệu chỉ báo sức mạnh xu hướng
  3. Cải thiện quản lý rủi ro - thêm lệnh dừng lỗ và chốt lời động
  4. Lọc tín hiệu nâng cao - Tích hợp nhiều chỉ báo kỹ thuật hơn để xác nhận

Tóm tắt

Đây là một chiến lược đi theo xu hướng với cấu trúc hoàn chỉnh và logic rõ ràng. Bằng cách kết hợp chỉ báo T3 và TOTT, và lọc bằng Williams %R, chỉ báo này hoạt động tốt trên thị trường có xu hướng. Mặc dù có độ trễ nhất định, chiến lược này có giá trị thực tiễn tốt và không gian mở rộng thông qua việc tối ưu hóa tham số và cải thiện quản lý rủi ro.

Mã nguồn chiến lược
/*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")