Sumber dimuat naik... memuat...

Strategi Dagangan Pengesahan Trend Dual Berdasarkan Purata Bergerak dan Corak Bar Luar

Penulis:ChaoZhang, Tarikh: 2025-01-17 14:39:19
Tag:EMA

 Dual Trend Confirmation Trading Strategy Based on Moving Averages and Outside Bar Pattern

Ringkasan

Strategi ini adalah sistem mengikuti trend yang menggabungkan purata bergerak dengan pengiktirafan corak Outside Bar. Ia menggunakan purata bergerak eksponen 5 tempoh dan 9 tempoh (EMA) sebagai penunjuk trend utama, bersama dengan corak Outside Bar untuk pengesahan isyarat. Strategi ini termasuk tetapan stop-loss dan take-profit dinamik berdasarkan ketinggian Outside Bar, serta mekanisme pembalikan kedudukan yang dicetuskan oleh hit stop-loss.

Prinsip Strategi

Logik teras adalah berdasarkan unsur-unsur utama berikut: 1. Menggunakan persimpangan EMA 5 tempoh dan 9 tempoh untuk menentukan arah trend asas 2. Memastikan turun naik pasaran melalui corak Outside Bar (bar semasa tinggi di atas bar sebelumnya tinggi dan rendah di bawah bar sebelumnya rendah) 3. Memasuki perdagangan apabila isyarat silang EMA bertepatan dengan corak Bar Luar 4. Menggunakan ketinggian Bar luar untuk menetapkan tahap stop-loss dan mengambil keuntungan secara dinamik, dengan mengambil keuntungan pada 50% dan stop-loss pada 100% ketinggian bar 5. Mengeksekusi kedudukan terbalik secara automatik apabila stop-loss dicetuskan untuk menangkap pembalikan trend yang berpotensi

Kelebihan Strategi

  1. Mekanisme pengesahan berganda meningkatkan ketepatan dagangan dengan mengelakkan isyarat palsu dari penunjuk tunggal
  2. Tetapan stop-loss dan mengambil keuntungan yang dinamik menyesuaikan diri dengan lebih baik dengan turun naik pasaran, mengekalkan pengurusan risiko yang munasabah dalam keadaan pasaran yang berbeza
  3. Mekanisme pembalikan kedudukan cepat menyesuaikan diri dengan perubahan trend pasaran, meningkatkan kecekapan modal
  4. Strategi mempunyai peraturan masuk dan keluar yang jelas, menjadikannya mudah dilaksanakan dan backtest

Risiko Strategi

  1. corak luar Bar mungkin berlaku kurang kerap di pasaran turun naik yang rendah, mempengaruhi kekerapan dagangan
  2. Posisi stop-loss mungkin terlalu luas di pasaran yang berubah-ubah dengan cepat, meningkatkan risiko setiap perdagangan
  3. Mekanisme pembalikan kedudukan boleh membawa kepada kerugian berturut-turut di pasaran pelbagai
  4. Parameter EMA tetap mungkin berprestasi tidak konsisten dalam keadaan pasaran yang berbeza

Arahan pengoptimuman

  1. Memperkenalkan penunjuk turun naik untuk menyesuaikan secara dinamik nisbah stop-loss dan mengambil keuntungan untuk pengurusan risiko yang lebih fleksibel
  2. Pertimbangkan untuk menambah penapis kekuatan trend untuk mengelakkan perdagangan dalam persekitaran trend yang lemah
  3. Mengoptimumkan keadaan pemicu pembalikan kedudukan dengan menggabungkan penunjuk turun naik pasaran
  4. Penyelidikan pengoptimuman parameter EMA dalam jangka masa yang berbeza untuk meningkatkan kesesuaian sistem

Ringkasan

Ini adalah sistem strategi yang menggabungkan analisis teknikal klasik dengan konsep perdagangan kuantitatif moden. Gabungan purata bergerak dan corak Outside Bar memastikan kedua-dua trend yang tepat pada masanya dan penjanaan isyarat yang boleh dipercayai. Reka bentuk mekanisme stop-loss / take-profit dan pembalikan kedudukan dinamik menunjukkan tumpuan yang kuat pada pengurusan risiko, menjadikan strategi praktikal. Walaupun terdapat ruang untuk pengoptimuman, kerangka kerja keseluruhan sudah memenuhi syarat asas untuk perdagangan langsung.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy(title="Outside Bar EMA Crossover Strategy with EMA Shift", shorttitle="Outside Bar EMA Cross", overlay=true)

// Input for EMA lengths
lenEMA1 = input.int(5, title="EMA 5 Length")
lenEMA2 = input.int(9, title="EMA 9 Length")

// Input for EMA 9 shift
emaShift = input.int(1, title="EMA 9 Shift", minval=0)

// Calculate EMAs
ema1 = ta.ema(close, lenEMA1)
ema2 = ta.ema(close, lenEMA2)

// Apply shift to EMA 9
ema2Shifted = na(ema2[emaShift]) ? na : ema2[emaShift]  // Dịch chuyển EMA 9 bằng cách sử dụng offset

// Plot EMAs
plot(ema1, title="EMA 5", color=color.blue, linewidth=2)
plot(ema2Shifted, title="EMA 9 Shifted", color=color.red, linewidth=2)

// Outside Bar condition
outsideBar() => high > high[1] and low < low[1]

// Cross above EMA 5 and EMA 9 (shifted)
crossAboveEMA = close > ema1 and close > ema2Shifted

// Cross below EMA 5 and EMA 9 (shifted)
crossBelowEMA = close < ema1 and close < ema2Shifted

// Outside Bar cross above EMA 5 and EMA 9 (shifted)
outsideBarCrossAbove = outsideBar() and crossAboveEMA

// Outside Bar cross below EMA 5 and EMA 9 (shifted)
outsideBarCrossBelow = outsideBar() and crossBelowEMA

// Plot shapes for visual signals
plotshape(series=outsideBarCrossAbove, title="Outside Bar Cross Above", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", textcolor=color.white)
plotshape(series=outsideBarCrossBelow, title="Outside Bar Cross Below", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", textcolor=color.white)

// Calculate Outside Bar height
outsideBarHeight = high - low  // Chiều cao của nến Outside Bar

// Calculate TP and SL levels
tpRatio = 0.5  // TP = 50% chiều cao nến Outside Bar
slRatio = 1.0  // SL = 100% chiều cao nến Outside Bar

tpLevelLong = close + outsideBarHeight * tpRatio  // TP cho lệnh mua
slLevelLong = close - outsideBarHeight * slRatio  // SL cho lệnh mua

tpLevelShort = close - outsideBarHeight * tpRatio  // TP cho lệnh bán
slLevelShort = close + outsideBarHeight * slRatio  // SL cho lệnh bán

// Strategy logic
if (outsideBarCrossAbove)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", stop=slLevelLong, limit=tpLevelLong)  // Thêm TP và SL

if (outsideBarCrossBelow)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", stop=slLevelShort, limit=tpLevelShort)  // Thêm TP và SL

// Logic: Nếu lệnh Buy bị Stop Loss => Vào lệnh Sell
if (strategy.position_size > 0 and close <= slLevelLong)
    strategy.close("Buy")
    strategy.entry("Sell After Buy SL", strategy.short)

// Logic: Nếu lệnh Sell bị Stop Loss => Vào lệnh Buy
if (strategy.position_size < 0 and close >= slLevelShort)
    strategy.close("Sell")
    strategy.entry("Buy After Sell SL", strategy.long)

// Cảnh báo khi label Buy xuất hiện
alertcondition(condition=outsideBarCrossAbove, title="Label Buy Xuất Hiện", message="Label Buy xuất hiện tại giá: {{close}}")

// Cảnh báo khi label Sell xuất hiện
alertcondition(condition=outsideBarCrossBelow, title="Label Sell Xuất Hiện", message="Label Sell xuất hiện tại giá: {{close}}")

Berkaitan

Lebih lanjut