Sumber dimuat naik... memuat...

Nadaraya-Watson Envelope Multi-Pengesahan Strategi Stop-Loss Dinamik

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

img

Ringkasan

Strategi ini menggunakan sampul Nadaraya-Watson untuk meluruskan data harga dan mengira jalur atas dan bawah berdasarkan harga yang diluruskan. Ia kemudian menggunakan penunjuk ADX dan DI untuk menentukan kekuatan dan arah trend, dan penunjuk RSI untuk mengesahkan momentum trend. Penembusan berpotensi dikenal pasti apabila harga melintasi di atas atau di bawah jalur sampul. Akhirnya, ia melaksanakan perdagangan berdasarkan isyarat gabungan trend, pecah, dan momentum, sambil menggunakan stop-loss dinamik untuk menguruskan risiko.

Prinsip Strategi

  1. Gunakan sampul Nadaraya-Watson untuk meratakan data harga dan mengira jalur atas dan bawah.
  2. Gunakan penunjuk ADX dan DI untuk menentukan kekuatan trend dan arah. Trend menaik ditunjukkan apabila ADX berada di atas ambang dan +DI lebih besar daripada -DI, dan sebaliknya untuk trend menurun.
  3. Mengenal pasti kemungkinan pecah apabila harga melintasi band atas atau di bawah band bawah.
  4. Memastikan momentum trend menggunakan penunjuk RSI. RSI di atas 70 menunjukkan momentum bullish, manakala RSI di bawah 30 menunjukkan momentum bearish.
  5. Melakukan perdagangan berdasarkan isyarat gabungan trend, pecah, dan momentum:
    • Masukkan kedudukan panjang apabila terdapat trend menaik yang kuat, pecah ke atas, dan momentum menaik.
    • Masukkan kedudukan pendek apabila terdapat trend menurun yang kuat, pecah ke bawah, dan momentum menurun.
  6. Melaksanakan stop-loss dinamik untuk menguruskan risiko. Harga stop-loss dikira berdasarkan harga tertinggi / terendah dan harga penutupan.
  7. Tampilkan isyarat strategi secara visual dengan merangka garis trend, titik pecah, dan isyarat momentum pada carta.

Kelebihan Strategi

  1. Envelope Nadaraya-Watson secara berkesan meluruskan data harga, mengurangkan gangguan bunyi.
  2. Mekanisme pengesahan berbilang meningkatkan kebolehpercayaan isyarat. Isyarat trend, pecah, dan momentum saling melengkapi untuk mengesahkan peluang perdagangan.
  3. Pengurusan stop-loss dinamik menyesuaikan diri dengan lebih baik dengan turun naik pasaran dan mengurangkan risiko. Harga stop-loss dikira berdasarkan harga tertinggi / terendah dan harga penutupan, yang membolehkannya menyesuaikan dengan pasaran.
  4. Menggambar secara visual garis trend, titik pecah, dan isyarat momentum pada carta memudahkan pemerhatian pengguna dan penafsiran isyarat strategi.

Risiko Strategi

  1. Dalam pasaran yang bergolak atau semasa pembalikan trend, isyarat pecah yang kerap boleh menyebabkan overtrading dan kerugian.
  2. Stop-loss dinamik mungkin gagal untuk keluar dari kedudukan dengan segera semasa pembalikan trend, mengakibatkan peningkatan pengeluaran.
  3. Parameter strategi, seperti lebar jalur sampul Nadaraya-Watson dan ambang ADX, perlu dioptimumkan untuk pasaran dan instrumen yang berbeza.

Arahan Pengoptimuman Strategi

  1. Memasukkan penunjuk penentuan trend yang berkesan tambahan, seperti MACD, sistem purata bergerak, dan lain-lain, untuk meningkatkan ketepatan dan kestabilan pengenalan trend.
  2. Mengoptimumkan kaedah pengiraan stop-loss dinamik dengan mempertimbangkan penunjuk yang berkaitan dengan turun naik seperti ATR dan SAR untuk menjadikan stop-loss lebih fleksibel dan berkesan.
  3. Membangunkan kombinasi parameter yang berbeza untuk pelbagai ciri pasaran, seperti pasaran trend atau jangkauan terhad, untuk meningkatkan kesesuaian strategi.
  4. Memperkenalkan modul saiz kedudukan untuk menyesuaikan saiz kedudukan secara dinamik berdasarkan faktor seperti trend pasaran dan turun naik, dengan itu mengawal risiko.

Ringkasan

Strategi ini menggabungkan amplop Nadaraya-Watson untuk penyelarasan harga dengan penunjuk trend seperti ADX dan DI, penunjuk momentum RSI, dan titik pecah harga untuk mewujudkan sistem perdagangan yang komprehensif. Pengurusan stop-loss dinamik membantu menyesuaikan diri dengan perubahan pasaran dan mengawal risiko hingga tahap tertentu. Walau bagaimanapun, dalam aplikasi praktikal, perhatian harus diberikan untuk mengoptimumkan pengenalan trend, stop-loss dinamik, dan tetapan parameter untuk meningkatkan kekuatan dan keuntungan 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 lanjut