Sumber dimuat naik... memuat...

Strategi Pengesanan Trend Gelombang Dinamik

Penulis:ChaoZhang, Tarikh: 2024-12-20 16:17:27
Tag:EMASMAHLCMA

img

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan penunjuk WaveTrend dan trend berikut. Ia menggabungkan penunjuk WaveTrend dengan purata bergerak untuk membentuk kerangka keputusan perdagangan yang lengkap. Strategi ini menggunakan EMA dan SMA untuk mengira nilai trend gelombang dan trend pasaran secara keseluruhan, mengenal pasti titik perubahan pasaran melalui ambang beli dan oversold, dan menggabungkan penapis trend untuk meningkatkan ketepatan perdagangan.

Prinsip Strategi

Inti strategi ini dilaksanakan melalui langkah-langkah berikut:

  1. Mengira harga purata HLC (rata-rata harga tinggi, rendah, dan penutupan)
  2. Meratakan purata HLC menggunakan EMA untuk mendapatkan garis ESA
  3. Mengira dan merata penyimpangan antara purata HLC dan garis ESA menggunakan EMA
  4. Mengira nilai K berdasarkan penyimpangan dan lancar dua kali dengan EMA untuk mendapatkan garis TCI akhir
  5. Gunakan SMA untuk mengira garis trend jangka panjang sebagai penapis trend
  6. Menghasilkan isyarat perdagangan apabila garis TCI memecahkan tahap overbought / oversold dan menyelaraskan dengan arah trend

Kelebihan Strategi

  1. Kebolehpercayaan isyarat yang tinggi: Mengurangkan isyarat palsu dengan berkesan dengan menggabungkan penunjuk WaveTrend dan penapis trend
  2. Pengendalian risiko yang komprehensif: Batas overbought/oversold yang jelas untuk stop loss yang tepat pada masanya
  3. Kebolehsesuaian yang kuat: Parameter strategi boleh disesuaikan dengan fleksibel untuk keadaan pasaran yang berbeza
  4. Logik operasi yang jelas: Syarat kemasukan dan keluar yang jelas, mudah dilaksanakan
  5. Analisis komprehensif: Mempertimbangkan kedua-dua turun naik jangka pendek dan trend jangka panjang, meningkatkan kestabilan perdagangan

Risiko Strategi

  1. Risiko pembalikan trend: Mungkin tertinggal di pasaran yang tidak menentu
  2. Sensitiviti parameter: Gabungan parameter yang berbeza boleh membawa kepada hasil yang sangat berbeza
  3. Kemampuan penyesuaian pasaran: Boleh menghasilkan perdagangan yang kerap di pasaran yang berbeza
  4. Pengurusan modal: Memerlukan kawalan kedudukan yang munasabah untuk menangani turun naik pasaran
  5. Kebergantungan teknikal: Bergantung pada penunjuk teknikal boleh mengabaikan faktor asas

Arahan Pengoptimuman Strategi

  1. Tambah penapis turun naik: Sesuaikan ambang dagangan semasa tempoh turun naik yang tinggi
  2. Menggabungkan analisis pelbagai jangka masa: Gabungkan isyarat dari jangka masa yang berbeza untuk meningkatkan ketepatan
  3. Mengoptimumkan penyesuaian parameter: Sesuaikan parameter indikator secara dinamik berdasarkan keadaan pasaran
  4. Meningkatkan pengurusan keuntungan/kerugian: Tambah mekanisme mengambil keuntungan dan menghentikan kerugian yang dinamik
  5. Tambah pengesahan jumlah: Masukkan analisis jumlah untuk meningkatkan kebolehpercayaan isyarat

Ringkasan

Strategi ini membina sistem perdagangan yang kukuh dengan menggabungkan indikator WaveTrend dengan bijak dengan penapis trend. Walaupun mengekalkan kesederhanaan operasi, ia mencapai analisis pasaran yang komprehensif. Walaupun terdapat risiko tertentu, strategi ini mempunyai nilai praktikal yang baik dan potensi pembangunan melalui pengurusan risiko yang betul dan pengoptimuman berterusan.


/*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")

Berkaitan

Lebih lanjut