Sumber daya yang dimuat... Pemuatan...

Strategi perdagangan konfirmasi tren ganda berdasarkan rata-rata bergerak dan pola luar bar

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

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

Gambaran umum

Strategi ini adalah sistem trend following yang menggabungkan moving average dengan pengakuan pola Outside Bar. Strategi ini menggunakan 5-periode dan 9-periode Exponential Moving Averages (EMA) sebagai indikator tren utama, bersama dengan pola Outside Bar untuk konfirmasi sinyal. Strategi ini mencakup pengaturan stop-loss dan take-profit dinamis berdasarkan ketinggian Outside Bar, serta mekanisme pembalikan posisi yang dipicu oleh hit stop-loss.

Prinsip Strategi

Logika inti didasarkan pada elemen kunci berikut: 1. Menggunakan 5 periode dan 9 periode EMA crossovers untuk menentukan arah tren dasar Konfirmasi volatilitas pasar melalui pola Outside Bar (bar saat ini tinggi di atas bar sebelumnya tinggi dan rendah di bawah bar sebelumnya rendah) 3. Memasuki perdagangan ketika sinyal crossover EMA bertepatan dengan pola Bar Luar Menggunakan ketinggian Outside Bar untuk secara dinamis mengatur tingkat stop loss dan take profit, dengan take profit pada 50% dan stop loss pada 100% dari ketinggian bar 5. Mengeksekusi posisi terbalik secara otomatis ketika stop-loss dipicu untuk menangkap potensi pembalikan tren

Keuntungan Strategi

  1. Mekanisme konfirmasi ganda meningkatkan akurasi perdagangan dengan menghindari sinyal palsu dari indikator tunggal
  2. Pengaturan stop loss dan take profit dinamis lebih beradaptasi dengan volatilitas pasar, mempertahankan manajemen risiko yang wajar di berbagai kondisi pasar
  3. Mekanisme pembalikan posisi cepat beradaptasi dengan perubahan tren pasar, meningkatkan efisiensi modal
  4. Strategi memiliki aturan masuk dan keluar yang jelas, membuatnya mudah diterapkan dan backtest

Risiko Strategi

  1. Pola di luar Bar mungkin terjadi lebih jarang di pasar volatilitas rendah, mempengaruhi frekuensi perdagangan
  2. Posisi stop loss mungkin terlalu luas di pasar yang cepat volatile, meningkatkan risiko per perdagangan
  3. Mekanisme pembalikan posisi dapat menyebabkan kerugian berturut-turut di berbagai pasar
  4. Parameter EMA tetap dapat berkinerja tidak konsisten dalam kondisi pasar yang berbeda

Arahan Optimasi

  1. Memperkenalkan indikator volatilitas untuk menyesuaikan secara dinamis rasio stop loss dan take profit untuk manajemen risiko yang lebih fleksibel
  2. Pertimbangkan untuk menambahkan filter kekuatan tren untuk menghindari perdagangan di lingkungan tren yang lemah
  3. Mengoptimalkan kondisi pemicu pembalikan posisi dengan memasukkan indikator volatilitas pasar
  4. Optimasi parameter EMA penelitian di berbagai kerangka waktu untuk meningkatkan kemampuan penyesuaian sistem

Ringkasan

Ini adalah sistem strategi yang menggabungkan analisis teknis klasik dengan konsep perdagangan kuantitatif modern. Kombinasi rata-rata bergerak dan pola Outside Bar memastikan baik tren yang tepat waktu mengikuti dan generasi sinyal yang dapat diandalkan. Desain mekanisme stop-loss / take-profit dan pembalikan posisi dinamis menunjukkan fokus yang kuat pada manajemen risiko, membuat strategi praktis layak. Meskipun ada ruang untuk optimasi, kerangka kerja keseluruhan sudah memenuhi kondisi dasar 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 banyak