Strategi tren gelombang pelacakan dinamis

EMA SMA HLC MA
Tanggal Pembuatan: 2024-12-20 16:17:27 Akhirnya memodifikasi: 2024-12-20 16:17:27
menyalin: 3 Jumlah klik: 413
1
fokus pada
1617
Pengikut

Strategi tren gelombang pelacakan dinamis

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif yang didasarkan pada indikator WaveTrend dan pelacakan tren. Strategi ini membentuk kerangka keputusan perdagangan yang lengkap dengan menggabungkan indikator WaveTrend dengan rata-rata bergerak. Strategi ini menggunakan EMA dan SMA untuk menghitung nilai tren gelombang dan tren pasar secara keseluruhan, untuk mengidentifikasi titik balik pasar dengan menetapkan overbought dan oversold threshold, dan untuk meningkatkan akurasi perdagangan dengan kombinasi filter tren.

Prinsip Strategi

Inti dari strategi ini adalah melalui langkah-langkah berikut:

  1. Pertama, hitung HLC (Highest Price, Lowest Price, and Average Closing Price)
  2. EMA digunakan untuk memperlancar HLC rata-rata untuk mendapatkan garis ESA
  3. HLC menghitung deviasi antara nilai rata-rata dan garis ESA, dan menggunakan EMA untuk smoothing
  4. K-value dihitung berdasarkan deviasi, dan garis TCI akhir diperoleh dengan dua kali EMA
  5. Menggunakan SMA untuk menghitung garis tren jangka panjang sebagai filter tren
  6. Sinyal perdagangan dihasilkan ketika garis TCI melampaui level overbought dan oversold dan sesuai dengan arah tren

Keunggulan Strategis

  1. Keandalan sinyal yang tinggi: efektif mengurangi sinyal palsu dengan menggabungkan indikator WaveTrend dan filter tren
  2. Pengendalian risiko yang sempurna: menetapkan batas overbought dan oversold yang jelas, membantu menghentikan kerugian tepat waktu
  3. Adaptif: Parameter strategi dapat disesuaikan secara fleksibel sesuai dengan kondisi pasar yang berbeda
  4. Logika operasi yang jelas: masuk dan keluar kondisi yang jelas, mudah untuk melaksanakan
  5. Analisis komprehensif: meningkatkan stabilitas perdagangan dengan mempertimbangkan fluktuasi jangka pendek dan tren jangka panjang

Risiko Strategis

  1. Risiko perubahan tren: kemungkinan keterlambatan dalam pasar yang sangat bergejolak
  2. Sensitivitas parameter: Kombinasi parameter yang berbeda dapat menghasilkan hasil yang sangat berbeda
  3. Adaptasi pasar: mungkin terjadi perdagangan yang sering terjadi di pasar yang bergolak
  4. Manajemen Uang: Perlu Kontrol Posisi yang Rasional untuk Menangkal Fluktuasi Pasar
  5. Ketergantungan teknologi: Indikator ketergantungan teknologi mungkin mengabaikan faktor mendasar

Arah optimasi strategi

  1. Menambahkan filter volatilitas: menyesuaikan nilai transaksi pada periode volatilitas tinggi
  2. Pengenalan analisis multi-siklus: peningkatan akurasi sinyal yang menggabungkan periode waktu yang berbeda
  3. Parameter optimasi beradaptasi sendiri: menyesuaikan parameter indikator secara dinamis sesuai dengan kondisi pasar
  4. Perbaikan Stop Loss: Meningkatkan mekanisme Stop Loss Dinamis
  5. Menambahkan konfirmasi lalu lintas: Analisis lalu lintas gabungan meningkatkan keandalan sinyal

Meringkaskan

Strategi ini membangun sistem perdagangan yang solid dengan kombinasi yang cerdik dari indikator WaveTrend dan filter tren. Strategi ini memungkinkan analisis pasar secara menyeluruh sambil tetap sederhana. Meskipun ada risiko tertentu, dengan manajemen risiko yang masuk akal dan pengoptimalan berkelanjutan, strategi ini memiliki nilai praktis dan potensi pengembangan yang baik.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mojomarv

//@version=6
strategy("WaveTrend with Trend Filter", shorttitle="WaveTrend Trend", overlay=false, initial_capital = 100000)

// Inputs for the WaveTrend indicator
inputLength = input.int(10, title="Channel Length", minval=1)
avgLength = input.int(21, title="Average Length", minval=1)
obLevel = input.float(45, title="Overbought Level")
osLevel = input.float(-45, title="Oversold Level")
showSignals = input.bool(true, title="Show Buy/Sell Signals")

// Trend filter input
maLength = input.int(500, title="Trend MA Length", minval=1)

// Calculate WaveTrend values
hlc_avg = (high + low + close) / 3  // Renamed from hlc3 to hlc_avg
esa = ta.ema(hlc_avg, inputLength)
d = ta.ema(math.abs(hlc_avg - esa), inputLength)
k = (hlc_avg - esa) / (0.015 * d)
ci = ta.ema(k, avgLength)
tci = ta.ema(ci, avgLength)

// Moving average for trend detection
trendMA = ta.sma(close, maLength)

// Determine trend
bullishTrend = close > trendMA
bearishTrend = close < trendMA

// Generate signals with trend filter
crossUp = ta.crossover(tci, osLevel)
crossDown = ta.crossunder(tci, obLevel)

// Plot WaveTrend
plot(tci, title="WaveTrend Line", color=color.new(color.blue, 0), linewidth=2)
hline(obLevel, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(osLevel, "Oversold", color=color.green, linestyle=hline.style_dotted)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid)

// Plot moving average for trend visualization
plot(trendMA, title="Trend MA", color=color.orange, linewidth=1)

// Plot buy and sell signals
plotshape(showSignals and crossUp, title="Buy Signal", location=location.belowbar, style=shape.labelup, color=color.new(color.green, 0), size=size.small)
plotshape(showSignals and crossDown, title="Sell Signal", location=location.abovebar, style=shape.labeldown, color=color.new(color.red, 0), size=size.small)

// Alerts
alertcondition(crossUp, title="Buy Alert", message="WaveTrend Buy Signal (Trend Confirmed)")
alertcondition(crossDown, title="Sell Alert", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bullishTrend, title="bull", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bearishTrend, title="bear", message="WaveTrend Sell Signal (Trend Confirmed)")

// Strategy logic
if crossUp and bullishTrend
    strategy.entry("Long", strategy.long)

if crossDown
    strategy.close("Long")

if crossDown and bearishTrend
    strategy.entry("Short", strategy.short)

if crossUp
    strategy.close("Short")