Strategi Pengikut Tren Gelombang Multi Kerangka Waktu

WT MTF WaveTrend ATR Trailing Stop TREND-FOLLOWING HLC3
Tanggal Pembuatan: 2025-07-07 16:04:18 Akhirnya memodifikasi: 2025-07-07 16:04:18
menyalin: 0 Jumlah klik: 233
2
fokus pada
319
Pengikut

Strategi Pengikut Tren Gelombang Multi Kerangka Waktu Strategi Pengikut Tren Gelombang Multi Kerangka Waktu

Ringkasan

Strategi multi-frame wave trend tracker adalah sistem perdagangan multi-frame trend tracker yang didasarkan pada indikator WaveTrend. Strategi ini dioptimalkan khusus untuk jangka waktu 15 menit, dengan metode alignment tiga-lapisan: 240 menit WaveTrend berfungsi sebagai filter tren makro, 30 menit WaveTrend digunakan untuk konfirmasi momentum, dan 15 menit WaveTrend bertanggung jawab untuk menghasilkan sinyal. Strategi ini berpusat pada identifikasi titik masuk dan keluar dengan mengidentifikasi persilangan indikator WaveTrend pada berbagai frame waktu, sekaligus menggabungkan mekanisme tracking stop loss yang canggih, termasuk logika pelacakan berdasarkan keuntungan terbesar dan toleransi penarikan berdasarkan persentase, untuk memaksimalkan keuntungan dan mengendalikan risiko secara efektif.

Prinsip Strategi

Prinsip inti dari strategi ini adalah menggunakan sinergi indikator WaveTrend pada beberapa kerangka waktu untuk mengidentifikasi arah tren dan titik balik. Indikator WaveTrend itu sendiri adalah indikator teknis yang mengukur kondisi harga overbought dan oversold dengan menghitung hubungan antara harga dengan rata-rata bergerak indeksnya (EMA), kemudian dikombinasikan dengan faktor volatilitas.

Proses implementasi strategi adalah sebagai berikut:

  1. Pertama, tentukan fungsi WaveTrend, yang menghitung dua nilai utama (wt1 dan wt2):

    • EMA yang menghitung harga (biasanya HLC3)
    • Menghitung EMA dari perbedaan mutlak antara harga dan EMA, sebagai ukuran volatilitas
    • Pembentukan penyusunan deviasi harga relatif (ci)
    • Hitung EMA dari ci sebagai wt1, dan SMA dari wt1 sebagai wt2
  2. Strategi untuk menerapkan indikator WaveTrend pada tiga kerangka waktu:

    • Grafik 15 menit (frame waktu saat ini) untuk menghasilkan sinyal spesifik
    • Grafik 30 menit digunakan untuk mengkonfirmasi arah momentum pertengahan
    • Grafik 60 menit memberikan latar belakang tren yang lebih panjang
  3. Syarat masuk:

    • Lakukan lebih banyak: ketika wt1 pada grafik 15 menit melintasi wt2 ke atas, dan nilai wt1 lebih besar dari 60, sementara pada grafik 30 menit tren ke atas adalah (wt1 > wt2)
    • Keringan: ketika wt1 pada grafik 15 menit turun melewati wt2, dan nilai wt1 kurang dari 20, sementara pada grafik 30 menit tren turun ((wt1 < wt2)
  4. Sistem stop loss dan penarikan diri menggunakan kombinasi:

    • Marginal Stop dalam Persentase Tetap
    • Trailing Stop berdasarkan pendapatan yang dipicu
    • Stop pelindung berdasarkan penarikan keuntungan maksimum
  5. Strategi mencatat dan melacak harga masuk, pilar masuk, dan tingkat pengembalian maksimum untuk setiap transaksi, yang digunakan untuk menyesuaikan titik keluar secara dinamis.

Keunggulan Strategis

  1. Kerangka Waktu BerkolaborasiDengan menganalisis indikator WaveTrend pada berbagai kerangka waktu, strategi dapat lebih menyeluruh menangkap tren pasar, mengurangi gangguan sinyal palsu, dan meningkatkan akurasi perdagangan. Kerangka waktu rendah menyediakan titik masuk yang tepat, dan kerangka waktu tinggi memastikan arah perdagangan sesuai dengan tren utama.

  2. Mekanisme Stop Loss DinamisStrategi ini menggunakan tiga sistem perlindungan stop loss, termasuk stop loss persentase tetap, stop loss pelacakan berdasarkan keuntungan, dan mekanisme perlindungan keuntungan maksimum. Strategi stop loss komposit ini dapat menangkap keuntungan maksimum dalam tren sambil melindungi dana.

  3. Sistem umpan balik visualTitik masuk dan keluar perdagangan ditandai secara intuitif pada grafik dengan label warna ((🔴) dan berisi informasi pilar untuk memudahkan analisis dan pelacakan perdagangan.

  4. Parameter yang dapat disesuaikan secara fleksibelStrategi ini menawarkan beberapa parameter yang dapat disesuaikan, termasuk persentase pemicu stop loss, persentase pelacakan, dan persentase penarikan maksimum yang diizinkan, yang dapat disesuaikan oleh pengguna sesuai dengan preferensi risiko dan kondisi pasar mereka.

  5. Struktur kode yang jelasStrategi ini menggunakan desain fungsional, dengan pembagian logis yang jelas, mudah dipahami dan dipertahankan, dan juga mudah dioptimalkan dan diperluas lebih lanjut.

Risiko Strategis

  1. Reaksi Pembalikan Tren TerlambatSebagai salah satu strategi trend following, reaksi lag dapat terjadi pada titik-titik trend reversal, sehingga terjadi retracement yang lebih besar ketika pasar berbalik. Solusinya adalah dengan menyesuaikan parameter tracking stop loss atau menambahkan indikator reversal tren tambahan sebagai tambahan.

  2. Performa Bursa yang BergolakDalam situasi pasar yang berfluktuasi, strategi ini dapat menghasilkan sinyal palsu dan stop loss yang sering terjadi, yang menyebabkan kerugian berturut-turut.

  3. Parameter SensitivitasPerforma strategi sangat sensitif terhadap parameter WaveTrend (n1=10, n2=21) dan parameter stop loss. Parameter yang terlalu longgar dapat menyebabkan stop loss yang terlambat, dan parameter yang terlalu ketat dapat keluar dari tren yang menguntungkan terlalu cepat.

  4. Risiko likuiditas: Pada kode, default adalah menggunakan jumlah modal relatif ((10%) untuk berdagang, tetapi dalam pasar yang kurang likuid, ini dapat menyebabkan peningkatan slippage atau kesulitan berdagang. Ukuran posisi harus disesuaikan dengan kondisi likuiditas varietas perdagangan yang sebenarnya.

  5. Meminta ketergantungan data eksternalStrategi: Gunakan fungsi request.security() untuk mendapatkan data kerangka waktu yang lebih tinggi, yang dapat menimbulkan risiko keterlambatan atau ketidaksediaan data di beberapa platform perdagangan. Pastikan lingkungan perdagangan mendukung permintaan data kerangka waktu yang lebih banyak.

Arah optimasi strategi

  1. Pengaturan parameter dinamis: Strategi saat ini menggunakan parameter WaveTrend dan stop loss yang tetap, dan pertimbangan untuk menyesuaikan parameter ini secara dinamis sesuai dengan volatilitas pasar (seperti ATR). Misalnya, meningkatkan jarak stop loss di lingkungan yang bergejolak tinggi, memperketat stop loss di lingkungan yang bergejolak rendah, untuk menyesuaikan diri dengan kondisi pasar yang berbeda.

  2. Filter intensitas tren meningkat: Anda dapat menambahkan ADX atau indikator serupa untuk mengukur kekuatan tren, dan hanya melakukan perdagangan ketika kekuatan tren melampaui titik terendah tertentu, untuk menghindari terlalu banyak perdagangan di pasar yang lemah atau horizontal.

  3. Optimalkan waktu frame pilihanStrategi saat ini menggunakan 15 menit, 30 menit, dan 60 menit waktu frame, yang dapat digunakan untuk menemukan kombinasi optimal dari waktu frame dengan analisis feedback, atau menyesuaikan waktu frame sesuai dengan karakteristik dari varietas perdagangan yang berbeda.

  4. Menambahkan konfirmasi volume transaksi: Mengintegrasikan indikator volume transaksi ke dalam kondisi masuk, memastikan hanya masuk dalam tren yang didukung volume transaksi, meningkatkan kualitas sinyal.

  5. Peningkatan mekanisme pertandingan: Keluar saat ini terutama bergantung pada pemicu stop loss, Anda dapat mempertimbangkan untuk menambahkan target keuntungan atau sinyal mundur berdasarkan indikator WaveTrend itu sendiri sebagai kondisi keluar aktif, bukan hanya bergantung pada stop loss pasif.

  6. Menambahkan logika manajemen posisiStrategi saat ini menggunakan pengelolaan dana dengan persentase tetap, dapat mempertimbangkan untuk menyesuaikan ukuran posisi secara dinamis berdasarkan volatilitas atau intensitas sinyal, meningkatkan posisi dalam perdagangan yang lebih pasti, mengurangi risiko dalam perdagangan yang lebih tidak pasti.

Meringkaskan

Strategi pelacak tren gelombang multi-frame adalah sistem pelacak tren yang dirancang dengan baik, yang secara efektif menangkap tren pasar dan mengendalikan risiko melalui sinergi indikator WaveTrend multi-frame, dengan mekanisme tracking stop loss yang fleksibel. Keunggulan utama strategi ini adalah perspektif pasar yang komprehensif dan metode manajemen risiko yang dinamis, tetapi mungkin menghadapi tantangan di pasar yang bergolak.

Kode Sumber Strategi
/*backtest
start: 2024-07-07 00:00:00
end: 2024-11-28 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("WT-FLOW: MTF WaveTrend Trend-Follower", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === WaveTrend Fonksiyonu ===
waveTrend(_src, _n1, _n2) =>
    esa = ta.ema(_src, _n1)
    d = ta.ema(math.abs(_src - esa), _n1)
    ci = (_src - esa) / (0.015 * d)
    wt1 = ta.ema(ci, _n2)
    wt2 = ta.sma(wt1, 4)
    [wt1, wt2]

// === Giriş Fiyatı ve Maksimum Kazanç Değişkenleri ===
var float longEntryPrice = na
var float shortEntryPrice = na
var float maxGainLong = 0.0
var float maxGainShort = 0.0
var int longEntryBar = na
var int shortEntryBar = na
var string currentPosition = ""

// === WT Değerlerini Al (Farklı Zaman Dilimleri) ===
var int n1 = 10
var int n2 = 21
ap = hlc3
[wt1_15, wt2_15] = waveTrend(ap, n1, n2)
[wt1_30, wt2_30] = request.security(syminfo.tickerid, "30", waveTrend(ap, n1, n2))
[wt1_60, wt2_60] = request.security(syminfo.tickerid, "60", waveTrend(ap, n1, n2))

// === Kullanıcı Girdileri: Trailing Stop Parametreleri ===
marginStopPerc = input.float(2.0, "Marjinal Stop (%)")
trailTriggerPerc = input.float(1.5, "Trailing Tetikleyici (%)")
trailFollowPerc = input.float(0.8, "Trailing Takip (%)")
trailMaxDropPerc = input.float(3.0, "Maksimum Düşüş (%)")

// === ATR için tr hesaplaması ===
tr = ta.tr(true)

// === Sinyal Koşulları ===
trendUp = wt1_30 > wt2_30
trendDown = wt1_30 < wt2_30
entryLong = ta.crossover(wt1_15, wt2_15) and wt1_15 > -60 and trendUp
entryShort = ta.crossunder(wt1_15, wt2_15) and wt1_15 < 20 and trendDown

// === Pozisyon Girişleri ===
if entryLong and currentPosition != "Long"
    strategy.entry("Long", strategy.long)
    longEntryPrice := close
    maxGainLong := 0.0
    longEntryBar := bar_index
    currentPosition := "Long"
    label.new(bar_index, high + 2 * tr, "🟢 Giriş Long #" + str.tostring(bar_index), style=label.style_label_up, color=color.green, textcolor=color.white)

if entryShort and currentPosition != "Short"
    strategy.entry("Short", strategy.short)
    shortEntryPrice := close
    maxGainShort := 0.0
    shortEntryBar := bar_index
    currentPosition := "Short"
    label.new(bar_index, low - 2 * tr, "🔴 Giriş Short #" + str.tostring(bar_index), style=label.style_label_down, color=color.red, textcolor=color.white)

// === Trailing Stop ve Marjinal Stop Seviyeleri ===
if currentPosition == "Long" and not na(longEntryPrice)
    gainFromEntry = (close - longEntryPrice) / longEntryPrice * 100
    maxGainLong := math.max(maxGainLong, gainFromEntry)
    trailTriggerReached = gainFromEntry >= trailTriggerPerc
    trailStop = close * (1 - trailFollowPerc / 100)
    dropStop = longEntryPrice * (1 + (maxGainLong - trailMaxDropPerc) / 100)
    finalStop = trailTriggerReached ? math.max(trailStop, dropStop) : longEntryPrice * (1 - marginStopPerc / 100)
    if close <= finalStop
        strategy.close("Long")
        label.new(bar_index, low - 2 * tr, "❅ Çıkış Long #" + str.tostring(longEntryBar), style=label.style_label_down, color=color.red, textcolor=color.white)
        longEntryPrice := na
        longEntryBar := na
        currentPosition := ""

if currentPosition == "Short" and not na(shortEntryPrice)
    gainFromEntryShort = (shortEntryPrice - close) / shortEntryPrice * 100
    maxGainShort := math.max(maxGainShort, gainFromEntryShort)
    trailTriggerReachedShort = gainFromEntryShort >= trailTriggerPerc
    trailStopShort = close * (1 + trailFollowPerc / 100)
    dropStopShort = shortEntryPrice * (1 - (maxGainShort - trailMaxDropPerc) / 100)
    finalStopShort = trailTriggerReachedShort ? math.min(trailStopShort, dropStopShort) : shortEntryPrice * (1 + marginStopPerc / 100)
    if close >= finalStopShort
        strategy.close("Short")
        label.new(bar_index, high + 2 * tr, "❄ Çıkış Short #" + str.tostring(shortEntryBar), style=label.style_label_up, color=color.green, textcolor=color.white)
        shortEntryPrice := na
        shortEntryBar := na
        currentPosition := ""