Sistem perdagangan mengikuti tren dengan stop loss trailing dinamis ATR

ATR EMA ROI TSL
Tanggal Pembuatan: 2025-02-20 13:22:24 Akhirnya memodifikasi: 2025-02-20 14:53:21
menyalin: 2 Jumlah klik: 445
2
fokus pada
319
Pengikut

Sistem perdagangan mengikuti tren dengan stop loss trailing dinamis ATR Sistem perdagangan mengikuti tren dengan stop loss trailing dinamis ATR

Ringkasan

Strategi ini adalah sistem pelacakan tren yang secara dinamis melacak stop loss berdasarkan ATR (Average True Range). Ini menggabungkan garis rata-rata EMA sebagai filter tren dan mengontrol produksi sinyal dengan menyesuaikan parameter sensitivitas dan siklus ATR. Sistem ini tidak hanya mendukung perdagangan over and under, tetapi juga perdagangan short, dan memiliki mekanisme manajemen keuntungan yang sempurna.

Prinsip Strategi

  1. Menggunakan indikator ATR untuk menghitung amplitudo fluktuasi harga dan menentukan jarak tracking stop loss berdasarkan koefisien sensitivitas yang ditetapkan
  2. Berdasarkan garis rata-rata EMA untuk menilai arah tren pasar, hanya buka lebih banyak order di atas garis rata-rata dan buka kosong di bawah garis rata-rata
  3. Sinyal perdagangan dipicu ketika harga menembus jalur trailing stop loss dan sesuai dengan arah tren
  4. Sistem manajemen kepemilikan dengan cara mendapatkan keuntungan secara bertahap:
    • Jika keuntungan 20% - 50%, stop loss akan ditingkatkan menjadi harga jaminan biaya
    • Ketika keuntungan 50% - 80%, sebagian keuntungan ditutup dan memperketat stop loss
    • Jika keuntungan mencapai 80%-100%, lanjutkan dengan pengetatan stop loss untuk melindungi keuntungan
    • Jika keuntungan melebihi 100%, maka semua saham akan kosong.

Keunggulan Strategis

  1. Stop loss pelacakan dinamis dapat secara efektif melacak tren, tanpa meninggalkan permainan terlalu dini sambil melindungi keuntungan
  2. Filter tren EMA secara efektif mengurangi risiko terjadinya false breakout
  3. Mekanisme profit bergilir menjamin keuntungan dan memberikan ruang bagi tren untuk berkembang
  4. Mendukung lebih banyak perdagangan dua arah untuk memanfaatkan peluang pasar
  5. Parameter yang dapat disesuaikan untuk berbagai kondisi pasar

Risiko Strategis

  1. Perdagangan yang sering terjadi di pasar yang bergejolak dapat menyebabkan kerugian.
  2. Pada awal pembalikan tren, kemungkinan akan terjadi penurunan yang lebih besar.
  3. Pengaturan parameter yang tidak tepat dapat memengaruhi kinerja strategi Saran pengendalian risiko:
  • Disarankan untuk digunakan di pasar dengan tren yang jelas
  • Parameter yang dipilih dengan hati-hati, dapat dioptimalkan melalui retrospeksi
  • Tetapkan batas maksimum penarikan
  • Pertimbangkan untuk menambahkan kondisi filter lingkungan pasar

Arah optimasi strategi

  1. Menambahkan mekanisme identifikasi lingkungan pasar, menggunakan parameter yang berbeda dalam kondisi pasar yang berbeda
  2. Masuknya indikator tambahan seperti volume lalu lintas untuk meningkatkan keandalan sinyal
  3. Mengoptimalkan mekanisme manajemen laba, menyesuaikan target laba sesuai dengan fluktuasi tingkat
  4. Meningkatkan waktu penyaringan untuk menghindari perdagangan pada waktu yang tidak menguntungkan
  5. Pertimbangkan untuk menambahkan filter fluktuasi untuk mengurangi frekuensi transaksi jika terlalu fluktuatif

Meringkaskan

Ini adalah sistem pelacakan tren dengan struktur yang utuh dan logika yang jelas. Dengan kombinasi pelacakan dinamis ATR dan penyaringan tren EMA, risiko dikendalikan dengan lebih baik sambil menangkap tren. Desain mekanisme keuntungan bertahap juga mencerminkan pemikiran perdagangan yang matang. Strategi ini memiliki kepraktisan dan skalabilitas yang kuat, dan dengan terus-menerus mengoptimalkan dan menyempurnakan, diharapkan untuk mendapatkan hasil perdagangan yang lebih baik.

Kode Sumber Strategi
/*backtest
start: 2024-10-15 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Enhanced UT Bot with Long & Short Trades", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Input Parameters
keyvalue = input.float(1.1, title="Key Value (Sensitivity)", step=0.1)
atrperiod = input.int(200, title="ATR Period")
emaPeriod = input.int(50, title="EMA Period")
roi_close = input.float(100, title="Close Trade at ROI (%)", step=1)

// ATR Calculation
src = close
xATR = ta.atr(atrperiod)
nLoss = keyvalue * xATR

// EMA for Trend Filtering
ema = ta.ema(src, emaPeriod)

// Trailing Stop Logic
var float xATRTrailingStop = na
if na(xATRTrailingStop)
    xATRTrailingStop := src - nLoss

if src > nz(xATRTrailingStop[1]) and src[1] > nz(xATRTrailingStop[1])
    xATRTrailingStop := math.max(nz(xATRTrailingStop[1]), src - nLoss)
else if src < nz(xATRTrailingStop[1]) and src[1] < nz(xATRTrailingStop[1])
    xATRTrailingStop := math.min(nz(xATRTrailingStop[1]), src + nLoss)
else
    xATRTrailingStop := src > nz(xATRTrailingStop[1]) ? src - nLoss : src + nLoss

// Buy/Sell Signal with Trend Filter
buySignal = ta.crossover(src, xATRTrailingStop) and src > ema
sellSignal = ta.crossunder(src, xATRTrailingStop) and src < ema

// Strategy Logic: Long Trades
if buySignal and strategy.position_size <= 0
    strategy.entry("Buy", strategy.long)

if sellSignal and strategy.position_size > 0
    strategy.close("Buy")

// Strategy Logic: Short Trades
if sellSignal and strategy.position_size >= 0
    strategy.entry("Sell", strategy.short)

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

// ROI Calculation for Both Long and Short Trades
var float entryPrice = na
var bool isLong = na
if strategy.position_size > 0
    entryPrice := strategy.opentrades.entry_price(0)
    isLong := true
if strategy.position_size < 0
    entryPrice := strategy.opentrades.entry_price(0)
    isLong := false

// Calculate current profit
currentProfit = isLong ? (close - entryPrice) / entryPrice * 100 : (entryPrice - close) / entryPrice * 100

// Enhanced ROI Management
if strategy.position_size > 0 // Long Position
    if currentProfit >= 20 and currentProfit < 50
        stopLevel = entryPrice // Breakeven
        strategy.exit("TSL Breakeven", from_entry="Buy", stop=stopLevel)
    if currentProfit >= 50 and currentProfit < 80
        stopLevel = entryPrice * 1.30 // 30% ROI
        strategy.exit("TSL 30%", from_entry="Buy", stop=stopLevel)
        strategy.close("Partial Profit", qty_percent=50) // Take 50% profit
    if currentProfit >= 80 and currentProfit < roi_close
        stopLevel = entryPrice * 1.60 // 60% ROI
        strategy.exit("TSL 60%", from_entry="Buy", stop=stopLevel)
    if currentProfit >= roi_close
        strategy.close("Full Exit at 100% ROI")

if strategy.position_size < 0 // Short Position
    if currentProfit >= 20 and currentProfit < 50
        stopLevel = entryPrice // Breakeven
        strategy.exit("TSL Breakeven", from_entry="Sell", stop=stopLevel)
    if currentProfit >= 50 and currentProfit < 80
        stopLevel = entryPrice * 0.70 // 30% ROI (Short stop)
        strategy.exit("TSL 30%", from_entry="Sell", stop=stopLevel)
        strategy.close("Partial Profit", qty_percent=50) // Take 50% profit
    if currentProfit >= 80 and currentProfit < roi_close
        stopLevel = entryPrice * 0.40 // 60% ROI (Short stop)
        strategy.exit("TSL 60%", from_entry="Sell", stop=stopLevel)
    if currentProfit >= roi_close
        strategy.close("Full Exit at 100% ROI")

// Plotting
plot(xATRTrailingStop, color=buySignal ? color.green : sellSignal ? color.red : color.gray, title="Trailing Stop")
plot(ema, color=color.blue, title="EMA Trend Filter")
plotshape(buySignal, title="Buy Signal", style=shape.labelup, location=location.belowbar, color=color.green, text="Buy")
plotshape(sellSignal, title="Sell Signal", style=shape.labeldown, location=location.abovebar, color=color.red, text="Sell")