Strategi Pengikut Aliran Gelombang Rangka Masa Berbilang

WT MTF WaveTrend ATR Trailing Stop TREND-FOLLOWING HLC3
Tarikh penciptaan: 2025-07-07 16:04:18 Akhirnya diubah suai: 2025-07-07 16:04:18
Salin: 0 Bilangan klik: 233
2
fokus pada
319
Pengikut

Strategi Pengikut Aliran Gelombang Rangka Masa Berbilang Strategi Pengikut Aliran Gelombang Rangka Masa Berbilang

Gambaran keseluruhan

Strategi pelacak trend gelombang pelbagai bingkai masa adalah sistem perdagangan trend pelbagai bingkai masa berdasarkan petunjuk WaveTrend. Strategi ini dioptimumkan khusus untuk bingkai masa 15 minit, menggunakan pendekatan penyelarasan bingkai masa tiga peringkat: 240 minit WaveTrend berfungsi sebagai penapis trend makro, 30 minit WaveTrend digunakan untuk pengesahan momentum, dan 15 minit WaveTrend bertanggungjawab untuk penjanaan isyarat. Strategi ini berpusat pada penentuan titik masuk dan keluar dengan mengenal pasti penyambungan penunjuk WaveTrend pada bingkai masa yang berbeza, sambil menggabungkan mekanisme pengesanan kerugian yang canggih, termasuk logik pelacakan berdasarkan keuntungan maksimum dan toleransi penarikan balik berdasarkan peratusan, untuk memaksimumkan keuntungan dan mengawal risiko dengan berkesan.

Prinsip Strategi

Prinsip teras strategi ini adalah menggunakan sinergi indikator WaveTrend pada pelbagai bingkai masa untuk mengenal pasti arah trend dan titik perubahan. Indikator WaveTrend sendiri adalah petunjuk teknikal yang mengukur keadaan harga yang lebih tinggi daripada harga yang lebih tinggi dengan mengira hubungan antara harga dan purata bergerak indeksnya (EMA) dan kemudian menggabungkan faktor turun naik.

Proses pelaksanaan strategi adalah seperti berikut:

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

    • Kira harga ((biasanya HLC3) EMA
    • Mengira perbezaan mutlak antara harga dan EMA sebagai ukuran turun naik
    • Pembinaan penyesuaian bias harga relatif ((ci)
    • Hitung EMA untuk ci sebagai wt1, dan SMA untuk wt1 sebagai wt2
  2. Strategi menggunakan indikator WaveTrend dalam tiga jangka masa:

    • Carta 15 minit (dalam bingkai masa semasa) untuk menghasilkan isyarat khusus
    • Carta 30 minit digunakan untuk mengesahkan arah pergerakan pertengahan
    • Carta 60 minit memberikan latar belakang trend yang lebih lama
  3. Syarat penyertaan:

    • Buat lebih banyak: apabila wt1 di carta 15 minit melintasi wt2 ke atas, dan nilai wt1 lebih besar daripada 60, sementara trend ke atas di carta 30 minit adalah ((wt1 > wt2)
    • Keringan: apabila wt1 pada carta 15 minit melintasi wt2 ke bawah, dan nilai wt1 adalah kurang daripada 20, sementara trend ke bawah pada carta 30 minit adalah ((wt1 < wt2)
  4. Mekanisme penangguhan kerugian dan penyingkiran menggunakan kaedah komposit:

    • Peratusan Marginal Stop Tetap
    • Trailing Stop yang dicetuskan berdasarkan pendapatan
    • Hentikan pelindung berdasarkan penarikan balik keuntungan maksimum
  5. Strategi mencatat dan mengesan harga masuk, tiang masuk dan kadar pulangan maksimum untuk setiap perdagangan, yang digunakan untuk menyesuaikan titik keluar secara dinamik.

Kelebihan Strategik

  1. Kerangka masa berbilangDengan menganalisis indikator WaveTrend pada pelbagai bingkai masa, strategi dapat memahami trend pasaran dengan lebih menyeluruh, mengurangkan gangguan isyarat palsu, dan meningkatkan ketepatan perdagangan. Bingkai masa rendah menyediakan titik masuk yang tepat, dan bingkai masa tinggi memastikan arah perdagangan selaras dengan trend utama.

  2. Mekanisme Hentikan Kerosakan DinamikStrategi ini menggunakan tiga sistem perlindungan stop loss, termasuk stop loss peratusan tetap, stop loss pengesanan berdasarkan keuntungan, dan mekanisme perlindungan pendapatan maksimum. Strategi stop loss komposit ini dapat menangkap maksimum keuntungan dalam trend sambil melindungi dana.

  3. Sistem maklum balas visualTitik masuk dan keluar perdagangan ditandakan secara intuitif pada carta dengan label berwarna ((🔴) dan mengandungi maklumat tiang untuk memudahkan analisis dan pelacakan perdagangan.

  4. Parameter yang fleksibelStrategi ini menawarkan beberapa parameter yang boleh disesuaikan, termasuk peratusan pemicu tracking stop loss, peratusan tracking follow, dan peratusan pengeluaran maksimum yang dibenarkan, yang boleh disesuaikan oleh pengguna mengikut keutamaan risiko dan keadaan pasaran.

  5. Struktur kod jelasStrategi ini menggunakan reka bentuk fungsi, bahagian-bahagian logik yang jelas, mudah difahami dan dikekalkan, dan juga mudah untuk pengoptimuman dan pengembangan lebih lanjut.

Risiko Strategik

  1. Tanggapan berbalik trendSebagai satu strategi trend-following, terdapat kemungkinan reaksi lag pada titik-titik trend-turn, yang menyebabkan penarikan balik yang lebih besar apabila pasaran berbalik. Penyelesaian adalah dengan menyesuaikan parameter tracking stop-loss atau menambah tambahan indikator trend-turn sebagai bantuan.

  2. Perkembangan pasaran yang tidak stabilDalam keadaan pasaran yang berputar atau bergolak, strategi ini mungkin menghasilkan isyarat palsu dan berhenti yang kerap, yang menyebabkan kerugian berturut-turut. Ia disyorkan untuk menggunakan strategi ini hanya apabila anda mengesahkan bahawa pasaran berada dalam trend yang jelas.

  3. Kepekaan ParameterPrestasi strategi sangat sensitif terhadap parameter WaveTrend (n1=10, n2=21) dan parameter stop loss. Parameter yang terlalu longgar boleh menyebabkan terlambat berhenti, dan parameter yang terlalu ketat boleh keluar dari trend yang menguntungkan terlalu awal.

  4. Risiko kecairan: Kod secara lalai menggunakan jumlah dana relatif ((10%) untuk berdagang, tetapi dalam pasaran yang kurang kecairan, ini boleh menyebabkan peningkatan slippage atau kesukaran berdagang. Saiz kedudukan harus disesuaikan dengan kecairan varieti perdagangan sebenar.

  5. Meminta ketergantungan data luaranKaedah: Gunakan fungsi request.security() untuk mendapatkan data bingkai masa yang lebih tinggi, yang mungkin menimbulkan risiko kelewatan atau ketidaksediaan data di platform perdagangan tertentu. Pastikan persekitaran perdagangan menyokong permintaan data bingkai masa yang lebih banyak.

Arah pengoptimuman strategi

  1. Pengaturan parameter dinamikStrategi semasa menggunakan parameter WaveTrend dan peratusan hentian yang tetap, dan pertimbangan untuk menyesuaikan parameter ini secara dinamik mengikut turun naik pasaran (seperti ATR). Sebagai contoh, meningkatkan jarak hentian dalam persekitaran yang bergelombang tinggi dan mengetatkan hentian dalam persekitaran yang bergelombang rendah untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

  2. Penapisan intensiti trend meningkat: ADX atau penunjuk serupa boleh ditambah untuk mengukur kekuatan trend, dan hanya melakukan perdagangan apabila kekuatan trend melebihi paras tertentu, untuk mengelakkan terlalu banyak perdagangan di pasaran yang lemah atau di pasaran yang tidak stabil.

  3. Pilihan jangka masa yang optimumStrategi semasa menggunakan bingkai masa 15 minit, 30 minit dan 60 minit, yang boleh digunakan untuk mencari kombinasi bingkai masa yang optimum melalui analisis feedback, atau menyesuaikan bingkai masa mengikut ciri-ciri varieti perdagangan yang berbeza.

  4. Memastikan jumlah transaksi: Mengintegrasikan penunjuk jumlah transaksi ke dalam syarat kemasukan, memastikan kemasukan hanya dalam trend yang disokong oleh jumlah transaksi, meningkatkan kualiti isyarat.

  5. Peningkatan mekanisme perlawanan: Kedatangan semasa bergantung terutamanya pada pemicu hentian kerugian, boleh mempertimbangkan untuk menambah sasaran keuntungan atau isyarat pembalikan berdasarkan indikator WaveTrend itu sendiri sebagai syarat keluar aktif, dan bukan hanya bergantung pada hentian kerugian pasif.

  6. Tambah logik pengurusan kedudukanStrategi semasa menggunakan pengurusan dana peratusan tetap, boleh mempertimbangkan untuk menyesuaikan saiz kedudukan secara dinamik berdasarkan turun naik atau kekuatan isyarat, meningkatkan kedudukan dalam perdagangan yang lebih pasti, mengurangkan risiko dalam perdagangan yang lebih tidak pasti.

ringkaskan

Strategi pelacak trend gelombang jangka masa berbilang adalah sistem pelacak trend yang dirancang dengan baik, dengan sinergi indikator WaveTrend jangka masa berbilang, digabungkan dengan mekanisme tracking stop loss yang fleksibel, untuk menangkap trend pasaran dengan berkesan dan mengawal risiko. Kelebihan utama strategi ini adalah perspektif pasaran yang komprehensif dan kaedah pengurusan risiko yang dinamik, tetapi mungkin menghadapi cabaran dalam pasaran yang bergelombang. Dengan mengoptimumkan lebih lanjut pilihan parameter dinamik dalam jangka masa dan menambah syarat penapis tambahan, strategi ini berpotensi menjadi sistem perdagangan yang lebih stabil dan berdaya tahan.

Kod 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 := ""