Carta Jalur Nadaraya-Watson Pengesahan Berbilang Strategi Henti Kehilangan Dinamik

ADX DI RSI MAE
Tarikh penciptaan: 2024-05-24 17:58:47 Akhirnya diubah suai: 2024-05-24 17:58:47
Salin: 0 Bilangan klik: 1065
1
fokus pada
1617
Pengikut

Carta Jalur Nadaraya-Watson Pengesahan Berbilang Strategi Henti Kehilangan Dinamik

Gambaran keseluruhan

Strategi ini menggunakan grafik Nadarya-Watson untuk meratakan harga dan menghitung naik turun berdasarkan harga selepas meratakan. Kemudian menggunakan indikator ADX dan DI untuk menilai kekuatan dan arah trend, indikator RSI untuk mengkonfirmasi tenaga trend, sambil mengenal pasti potensi pecah dengan harga yang melintas di bawah. Akhirnya menggabungkan pelbagai isyarat seperti trend, pecah dan dinamik untuk melaksanakan perdagangan, dan menggunakan stop loss dinamik untuk menguruskan risiko.

Prinsip Strategi

  1. Menggunakan grafik pita Nadler-Watson untuk memperhalusi harga, mengira naik dan turun.
  2. Menggunakan ADX dan DI untuk menentukan kekuatan dan arah trend. Apabila ADX lebih besar daripada nilai rendah dan + DI lebih besar daripada -DI, ia menunjukkan trend naik, sebaliknya adalah trend menurun.
  3. Menentukan sama ada harga telah menembusi carta pita ke atas atau ke bawah, yang menunjukkan potensi untuk menembusi ke atas dan ke bawah.
  4. Menggunakan RSI untuk mengesahkan dinamika trend. Apabila RSI lebih besar daripada 70 menunjukkan dinamika naik, kurang daripada 30 menunjukkan dinamika turun.
  5. Perdagangan dilakukan dengan menggabungkan pelbagai isyarat seperti trend, titik penembusan dan tenaga:
    • Apabila terdapat kecenderungan kenaikan yang kuat, pecah ke atas dan peningkatan dinamik, anda boleh membuka lebih banyak kedudukan.
    • Apabila terdapat kecenderungan penurunan yang kuat, bukaan kosong apabila terdapat penembusan ke bawah dan penurunan tenaga.
  6. Menggunakan Hentian Dinamis untuk menguruskan risiko, harga Hentian Hentian dikira berdasarkan harga tertinggi / terendah dan harga penutupan.
  7. Untuk menunjukkan isyarat strategi secara intuitif dengan menandakan garisan trend, titik pecah dan isyarat tenaga pada carta.

Kelebihan Strategik

  1. Pada masa yang sama, Nadaraya-Watson Band Diagram dapat membantu meratakan data harga dengan berkesan dan mengurangkan gangguan bunyi.
  2. Mekanisme pengesahan isyarat berbilang meningkatkan kebolehpercayaan isyarat, isyarat trend, titik penembusan dan tenaga saling melengkapi, dan bersama-sama mengesahkan peluang perdagangan.
  3. Pengurusan Hentian Bergerak dapat menyesuaikan diri dengan lebih baik dengan turun naik pasaran dan mengurangkan risiko. Harga Hentian Hentian dikira berdasarkan harga tertinggi / terendah dan harga penutupan dan boleh disesuaikan dengan pasaran.
  4. Garis trend, titik penembusan dan isyarat tenaga dinamik ditandakan secara langsung di carta untuk memudahkan pengguna melihat dan membaca isyarat strategi.

Risiko Strategik

  1. Dalam pasaran yang bergolak atau dalam tempoh perubahan trend, isyarat pecah yang kerap boleh menyebabkan perdagangan berlebihan dan kerugian.
  2. Hentian dinamik mungkin tidak dapat dihentikan dalam masa yang tepat apabila trend berbalik, menyebabkan penarikan meningkat.
  3. Parameter strategi seperti bandwidth pada peta pita Nadler-Watson, nilai terhad ADX dan sebagainya perlu dioptimumkan mengikut pasaran dan piawaian yang berbeza. Tetapan parameter yang tidak betul boleh menjejaskan kesan strategi.

Arah pengoptimuman strategi

  1. Memperkenalkan lebih banyak penunjuk trend yang berkesan, seperti MACD, sistem rata-rata, dan lain-lain, untuk meningkatkan ketepatan dan kestabilan penghakiman trend.
  2. Mengoptimumkan kaedah pengiraan kerugian dinamik, seperti mempertimbangkan indikator yang berkaitan dengan kadar turun naik seperti ATR, SAR, dan lain-lain, untuk membuat penghentian lebih fleksibel dan berkesan.
  3. Untuk ciri-ciri pasaran yang berbeza, seperti jenis trend, jenis gegaran, dan lain-lain, anda boleh menetapkan kombinasi parameter yang berbeza untuk meningkatkan kebolehpasaran strategi.
  4. Menyertai modul pengurusan kedudukan, menyesuaikan kedudukan secara dinamik mengikut trend pasaran, kadar turun naik dan faktor lain, mengawal risiko.

ringkaskan

Strategi ini membina sistem perdagangan yang lebih baik dengan meratakan harga dengan Nadarya-Watson, menggabungkan indikator trend seperti ADX, DI dan indikator dinamik RSI, serta pelbagai isyarat seperti titik penembusan harga. Pengurusan stop loss dinamik dapat menyesuaikan diri dengan perubahan pasaran dan mengawal risiko. Tetapi dalam aplikasi praktikal, perhatian masih perlu diberikan untuk mengoptimumkan penghakiman trend, stop loss dinamik dan parameter pengaturan, untuk meningkatkan kestabilan dan keuntungan strategi.

Kod sumber 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")