Sumber daya yang dimuat... Pemuatan...

Nadaraya-Watson Envelope Multi-Konfirmasi Dinamis Stop-Loss Strategi

Penulis:ChaoZhang, Tanggal: 2024-05-24 17:58:47
Tag:ADXDIRSIMAE

img

Gambaran umum

Strategi ini menggunakan amplop Nadaraya-Watson untuk meratakan data harga dan menghitung band atas dan bawah berdasarkan harga yang diratakan. Kemudian menggunakan indikator ADX dan DI untuk menentukan kekuatan dan arah tren, dan indikator RSI untuk mengkonfirmasi momentum tren. Potensi breakout diidentifikasi ketika harga melintasi band amplop di atas atau di bawahnya. Akhirnya, itu mengeksekusi perdagangan berdasarkan sinyal gabungan tren, breakout, dan momentum, sambil menggunakan stop-loss dinamis untuk mengelola risiko.

Prinsip Strategi

  1. Terapkan amplop Nadaraya-Watson untuk meratakan data harga dan menghitung band atas dan bawah.
  2. Gunakan indikator ADX dan DI untuk menentukan kekuatan dan arah tren. Trend naik ditunjukkan ketika ADX berada di atas ambang batas dan +DI lebih besar dari -DI, dan sebaliknya untuk tren menurun.
  3. Mengidentifikasi kemungkinan pecah ketika harga melintasi band atas atau di bawah band bawah.
  4. Konfirmasi momentum tren menggunakan indikator RSI. RSI di atas 70 menunjukkan momentum bullish, sementara RSI di bawah 30 menunjukkan momentum bearish.
  5. Mengeksekusi perdagangan berdasarkan sinyal gabungan tren, breakout, dan momentum:
    • Masukkan posisi panjang ketika ada tren naik yang kuat, terobosan ke atas, dan momentum bullish.
    • Masukkan posisi pendek ketika ada tren penurunan yang kuat, penurunan penurunan, dan momentum penurunan.
  6. Mengimplementasikan stop loss dinamis untuk mengelola risiko. harga stop loss dihitung berdasarkan harga tertinggi / terendah dan harga penutupan.
  7. Tampilkan sinyal strategi secara visual dengan memetakan garis tren, titik pecah, dan sinyal momentum pada grafik.

Keuntungan Strategi

  1. Amplop Nadaraya-Watson secara efektif meratakan data harga, mengurangi gangguan kebisingan.
  2. Mekanisme multi-konfirmasi meningkatkan keandalan sinyal. sinyal tren, breakout, dan momentum saling melengkapi untuk memvalidasi peluang perdagangan.
  3. Manajemen stop-loss yang dinamis lebih mudah beradaptasi dengan fluktuasi pasar dan mengurangi risiko. Harga stop-loss dihitung berdasarkan harga tertinggi/terendah dan harga penutupan, yang memungkinkan untuk menyesuaikan dengan pasar.
  4. Menggambar secara visual garis tren, titik pecah, dan sinyal momentum pada grafik memudahkan pengamatan dan interpretasi sinyal strategi pengguna.

Risiko Strategi

  1. Di pasar yang bergolak atau selama pembalikan tren, sinyal breakout yang sering dapat menyebabkan overtrading dan kerugian.
  2. Stop loss dinamis mungkin gagal untuk keluar dari posisi dengan segera selama pembalikan tren, yang mengakibatkan peningkatan drawdown.
  3. Parameter strategi, seperti bandwidth dari amplop Nadaraya-Watson dan ambang ADX, perlu dioptimalkan untuk pasar dan instrumen yang berbeda.

Arah Optimasi Strategi

  1. Menggabungkan indikator penentuan tren efektif tambahan, seperti MACD, sistem rata-rata bergerak, dll, untuk meningkatkan akurasi dan stabilitas identifikasi tren.
  2. Mengoptimalkan metode perhitungan stop-loss dinamis dengan mempertimbangkan indikator terkait volatilitas seperti ATR dan SAR untuk membuat stop-loss lebih fleksibel dan efektif.
  3. Mengembangkan kombinasi parameter yang berbeda untuk berbagai karakteristik pasar, seperti tren atau pasar yang terbatas pada kisaran, untuk meningkatkan kemampuan adaptasi strategi.
  4. Memperkenalkan modul ukuran posisi untuk menyesuaikan ukuran posisi secara dinamis berdasarkan faktor-faktor seperti tren pasar dan volatilitas, sehingga mengendalikan risiko.

Ringkasan

Strategi ini menggabungkan amplop Nadaraya-Watson untuk penyelarasan harga dengan indikator tren seperti ADX dan DI, indikator momentum RSI, dan titik pecah harga untuk menciptakan sistem perdagangan yang komprehensif. Manajemen stop-loss dinamis membantu beradaptasi dengan perubahan pasar dan mengendalikan risiko sampai batas tertentu. Namun, dalam aplikasi praktis, perhatian harus diberikan untuk mengoptimalkan identifikasi tren, stop-loss dinamis, dan pengaturan parameter untuk meningkatkan kekuatan dan profitabilitas strategi.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-18 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Nadaraya-Watson Envelope with Multi-Confirmation and Dynamic Stop-Loss", overlay=true)

// Input parameters
h = input.float(7.2, "Bandwidth", minval=0)
mult = input.float(2.1, minval=0)
src = input(close, "Source")

// ADX and DI Input Parameters
adxLength = input.int(14, "ADX Length")
adxThreshold = input.float(25, "ADX Threshold")
adxSmoothing = input.int(14, "ADX Smoothing")

// Calculate ADX and DI
[dmiPlus, dmiMinus, adx] = ta.dmi(adxLength, adxSmoothing)
strongTrendUp = dmiPlus > dmiMinus and adx > adxThreshold
strongTrendDown = dmiMinus > dmiPlus and adx > adxThreshold

// Nadaraya-Watson Envelope Calculation
gauss(x, h) =>
    math.exp(-(math.pow(x, 2) / (h * h * 2)))

coefs = array.new_float(0)
den = 0.0

for i = 0 to 100
    w = gauss(i, h)
    array.push(coefs, w)

den := array.sum(coefs)

out = 0.0
for i = 0 to 100
    out += src[i] * array.get(coefs, i)
out /= den
mae = ta.sma(math.abs(src - out), 100) * mult

upper = ta.sma(out + mae, 10)
lower = ta.sma(out - mae, 10)

// Confirmations
breakoutUp = ta.crossover(src, upper)
breakoutDown = ta.crossunder(src, lower)

// Original RSI period and thresholds
rsiPeriod = input.int(14, "RSI Period")
rsi = ta.rsi(src, rsiPeriod)
momentumUp = rsi > 70 and adx > adxThreshold
momentumDown = rsi < 30 and adx > adxThreshold

// // Plot ADX-based Trend Confirmation Lines
// if (strongTrendUp)
//     line.new(bar_index, low, bar_index + 1, low, color=color.new(color.blue, 50), width=2, style=line.style_dashed)

// if (strongTrendDown)
//     line.new(bar_index, high, bar_index + 1, high, color=color.new(color.red, 50), width=2, style=line.style_dashed)

// Plot Breakout Confirmation Dots
plotshape(series=breakoutUp, style=shape.circle, location=location.abovebar, color=color.blue, size=size.tiny, title="Breakout Up")
plotshape(series=breakoutDown, style=shape.circle, location=location.belowbar, color=color.orange, size=size.tiny, title="Breakout Down")

// Plot Momentum Confirmation Arrows
plotshape(series=momentumUp, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Momentum Up")
plotshape(series=momentumDown, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Momentum Down")

// Strategy Entry and Exit
var float stopLossLevel = na
var float highestPrice = na

potentialBuy = strongTrendUp and breakoutUp
potentialSell = strongTrendDown and breakoutDown
momentumConfirmUp = potentialBuy and momentumUp
momentumConfirmDown = potentialSell and momentumDown

if (momentumConfirmUp)
    strategy.entry("Buy", strategy.long)
    stopLossLevel := close * 0.90
    highestPrice := close

if (momentumConfirmDown)
    strategy.entry("Sell", strategy.short)
    stopLossLevel := close * 1.10
    highestPrice := close

if (strategy.position_size > 0)
    highestPrice := math.max(highestPrice, close)
    stopLossLevel := math.max(highestPrice * 0.85, close * 0.90)

if (strategy.position_size < 0)
    highestPrice := math.min(highestPrice, close)
    stopLossLevel := math.min(highestPrice * 1.15, close * 1.10)

// Close position if stop loss is hit
if (strategy.position_size > 0 and close < stopLossLevel)
    strategy.close("Buy")

if (strategy.position_size < 0 and close > stopLossLevel)
    strategy.close("Sell")


Berkaitan

Lebih banyak