Pelacakan tren rata-rata pergerakan T3 dan strategi perdagangan kuantitatif stop loss bergerak

T3MA SMA EMA
Tanggal Pembuatan: 2024-11-28 15:17:13 Akhirnya memodifikasi: 2024-11-28 15:17:13
menyalin: 1 Jumlah klik: 505
1
fokus pada
1617
Pengikut

Pelacakan tren rata-rata pergerakan T3 dan strategi perdagangan kuantitatif stop loss bergerak

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif komprehensif yang menggabungkan T3 rata-rata, pelacakan tren, dan mekanisme stop loss bergerak. Strategi ini mengidentifikasi arah tren pasar melalui T3 moving average, sekaligus menggunakan indikator tren Lemon dan indikator TDFI untuk konfirmasi sinyal, dan bekerja sama dengan sistem manajemen risiko yang menggabungkan stop loss bergerak dan stop loss tetap, untuk menangkap tren dan mengontrol risiko secara efektif.

Prinsip Strategi

Inti dari strategi ini terdiri dari tiga bagian utama: identifikasi tren, konfirmasi sinyal dan manajemen risiko. Pertama, menggunakan T3 moving average sebagai alat identifikasi tren utama, rata-rata T3 dengan penghitungan rata-rata bergerak enam kali lipat, dapat secara efektif mengurangi keterbelakangan dan menjaga kelancaran. Kedua, dengan indikator tren Lemon menghitung zona fluktuasi harga, digabungkan dengan indikator TDFI untuk memfilter sinyal, hanya menghasilkan sinyal perdagangan ketika harga menembus zona fluktuasi dan indikator TDFI dikonfirmasi.

Keunggulan Strategis

  1. Mekanisme konfirmasi sinyal ganda meningkatkan akurasi transaksi
  2. Penggunaan garis rata-rata T3 mengurangi dampak false breach
  3. Sistem manajemen risiko yang fleksibel, memberikan ruang yang cukup bagi tren untuk berkembang sambil melindungi keuntungan
  4. Dukungan untuk menghentikan sebagian posisi, yang memungkinkan pengembalian keuntungan secara bertahap
  5. Parameter yang dapat disesuaikan dengan mudah untuk dioptimalkan sesuai dengan kondisi pasar yang berbeda

Risiko Strategis

  1. Perhitungan rata-rata T3 rumit, mungkin ada keterlambatan perhitungan
  2. Multi-Signal Confirmation dapat menyebabkan kehilangan beberapa peluang perdagangan.
  3. Stop loss mobile dapat dipicu terlalu dini pada saat fluktuasi yang kuat
  4. Perlu adanya fluktuasi harga yang lebih besar untuk menghasilkan sinyal yang efektif.
  5. Di pasar Forex, sinyal palsu dapat sering terjadi.

Arah optimasi strategi

  1. Masukkan indikator volatilitas untuk menyesuaikan parameter stop loss bergerak
  2. Menambahkan modul identifikasi lingkungan pasar, menggunakan parameter yang berbeda dalam kondisi pasar yang berbeda
  3. Optimalkan siklus perhitungan indikator TDFI, meningkatkan waktu sinyal
  4. Pertimbangkan untuk menambahkan faktor volume transaksi untuk konfirmasi sinyal
  5. Mekanisme pengaturan proporsi partial stop adaptasi

Meringkaskan

Ini adalah strategi pelacakan tren yang dirancang secara komprehensif, dengan penggunaan kombinasi dari beberapa indikator teknis, yang menjamin keandalan sinyal perdagangan dan manajemen risiko yang efektif. Desain modular strategi ini membuatnya memiliki skalabilitas dan ruang optimasi yang baik, cocok untuk menjadi kerangka dasar sistem pelacakan tren jangka menengah dan panjang. Dalam aplikasi praktis, disarankan untuk menyesuaikan parameter secara optimal sesuai dengan varietas perdagangan dan lingkungan pasar tertentu.

Kode Sumber Strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Lemon Trend Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
 
// Input parameters
lookbackPeriod = input.int(14, "Lookback Period")
t3Length = input.int(200, "T3 MA Length")
t3Factor = input.float(0.7, "T3 Factor", minval=0, maxval=1)

// 移动止损参数
trailingStopPct = input.float(1.5, "移动止损百分比", minval=0.1, step=0.1)
trailingStopActivationPct = input.float(1.0, "移动止损激活百分比", minval=0.1, step=0.1)
 
// === T3 Moving Average Function ===
t3(src, length, factor) =>
    // First EMA
    e1 = ta.ema(src, length)
    // Second EMA
    e2 = ta.ema(e1, length)
    // Third EMA
    e3 = ta.ema(e2, length)
    // Fourth EMA
    e4 = ta.ema(e3, length)
    // Fifth EMA
    e5 = ta.ema(e4, length)
    // Sixth EMA
    e6 = ta.ema(e5, length)
   
    c1 = -factor * factor * factor
    c2 = 3 * factor * factor + 3 * factor * factor * factor
    c3 = -6 * factor * factor - 3 * factor - 3 * factor * factor * factor
    c4 = 1 + 3 * factor + factor * factor * factor + 3 * factor * factor
   
    t3 = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3
 
// Calculate T3 MA
t3ma = t3(close, t3Length, t3Factor)
plot(t3ma, "T3 MA", color=color.blue)
 
// === Lemon Trend Indicator ===
highLowDiff = high - low
normalizedDiff = ta.sma(highLowDiff, lookbackPeriod)
upperBand = ta.highest(high, lookbackPeriod)
lowerBand = ta.lowest(low, lookbackPeriod)
buySignal = ta.crossover(close, upperBand - normalizedDiff)
sellSignal = ta.crossunder(close, lowerBand + normalizedDiff)
 
// === TDFI Indicator ===
tdfiLength = input.int(14, "TDFI Length")
tdfi = ta.ema(close - close[1], tdfiLength)
tdfiSignal = ta.ema(tdfi, 9)
 
// Plot signals
plotshape(buySignal and tdfi > tdfiSignal and close > t3ma, "Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal and tdfi < tdfiSignal and close < t3ma, "Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
 
// === Strategy Logic ===
longCondition = buySignal and tdfi > tdfiSignal and close > t3ma
shortCondition = sellSignal and tdfi < tdfiSignal and close < t3ma
 
// 计算移动止损价格
var float longTrailingStop = na
var float shortTrailingStop = na

// 更新移动止损价格
if (strategy.position_size > 0)
    threshold = strategy.position_avg_price * (1 + trailingStopActivationPct / 100)
    if (high > threshold)
        stopPrice = high * (1 - trailingStopPct / 100)
        if (na(longTrailingStop) or stopPrice > longTrailingStop)
            longTrailingStop := stopPrice
    
if (strategy.position_size < 0)
    threshold = strategy.position_avg_price * (1 - trailingStopActivationPct / 100)
    if (low < threshold)
        stopPrice = low * (1 + trailingStopPct / 100)
        if (na(shortTrailingStop) or stopPrice < shortTrailingStop)
            shortTrailingStop := stopPrice

// Entry orders
if (longCondition)
    strategy.entry("Long", strategy.long)
    longTrailingStop := na
    
if (shortCondition)
    strategy.entry("Short", strategy.short)
    shortTrailingStop := na
 
// Calculate stop loss and take profit levels
longStopLoss = ta.lowest(low, lookbackPeriod)
shortStopLoss = ta.highest(high, lookbackPeriod)
 
// Exit conditions with fixed R:R
fixedRR = input.float(1.8, "Fixed Risk:Reward Ratio")
partialExitPct = input.float(50.0, "Partial Exit Percentage", minval=0, maxval=100) / 100
 
// 综合移动止损和固定止损
if (strategy.position_size > 0)
    longTakeProfit = strategy.position_avg_price + (strategy.position_avg_price - longStopLoss) * fixedRR
    stopPrice = na(longTrailingStop) ? longStopLoss : math.max(longStopLoss, longTrailingStop)
    strategy.exit("Long Exit", "Long", qty_percent=partialExitPct, stop=stopPrice, limit=longTakeProfit)
    
if (strategy.position_size < 0)
    shortTakeProfit = strategy.position_avg_price - (shortStopLoss - strategy.position_avg_price) * fixedRR
    stopPrice = na(shortTrailingStop) ? shortStopLoss : math.min(shortStopLoss, shortTrailingStop)
    strategy.exit("Short Exit", "Short", qty_percent=partialExitPct, stop=stopPrice, limit=shortTakeProfit)

// 绘制移动止损线
plot(strategy.position_size > 0 ? longTrailingStop : na, "Long Trailing Stop", color=color.red, style=plot.style_linebr)
plot(strategy.position_size < 0 ? shortTrailingStop : na, "Short Trailing Stop", color=color.red, style=plot.style_linebr)