Sistem perdagangan mengikut arah aliran dengan trailing stop loss dinamik ATR

ATR EMA ROI TSL
Tarikh penciptaan: 2025-02-20 13:22:24 Akhirnya diubah suai: 2025-02-20 14:53:21
Salin: 2 Bilangan klik: 445
2
fokus pada
319
Pengikut

Sistem perdagangan mengikut arah aliran dengan trailing stop loss dinamik ATR Sistem perdagangan mengikut arah aliran dengan trailing stop loss dinamik ATR

Gambaran keseluruhan

Strategi ini adalah sistem pengesanan trend yang secara dinamik menjejaki stop loss berdasarkan ATR (Average True Range). Ia menggabungkan garis rata-rata EMA sebagai penapis trend, dan mengawal penjanaan isyarat dengan menyesuaikan parameter sensitiviti dan kitaran ATR. Sistem ini menyokong bukan sahaja perdagangan lebih banyak, tetapi juga perdagangan short, dan mempunyai mekanisme pengurusan keuntungan yang sempurna.

Prinsip Strategi

  1. Menggunakan indikator ATR untuk mengira amplitudo turun naik harga dan menentukan jarak hentian pengesanan berdasarkan faktor kepekaan yang ditetapkan (nilai utama)
  2. Mencari arah trend pasaran melalui garis rata-rata EMA, hanya membuka lebih banyak pesanan di atas garis rata-rata dan membuka kosong di bawah garis rata-rata
  3. Sinyal dagangan dihidupkan apabila harga menembusi garis berhenti dan mengikut arah trend
  4. Sistem pengurusan pegangan menggunakan kaedah keuntungan berturutan:
    • Pendapatan 20% -50% dan Stop Loss akan dinaikkan kepada kos.
    • Apabila keuntungan 50% - 80%, sebahagian keuntungan ditutup dan menutup kerugian
    • Apabila keuntungan 80%-100% , pengetatan lebih lanjut untuk perlindungan stop loss keuntungan
    • Apabila keuntungan melebihi 100 peratus, semua saham akan kosong.

Kelebihan Strategik

  1. Hentian pelacakan dinamik boleh mengesan trend dengan berkesan, tanpa meninggalkan permainan terlalu awal sambil melindungi keuntungan
  2. Penapis trend EMA berkesan mengurangkan risiko penembusan palsu
  3. Mekanisme keuntungan berpecah memastikan keuntungan dan memberi ruang kepada trend
  4. Menyokong lebih banyak perdagangan dua hala untuk memanfaatkan peluang pasaran
  5. Parameter yang boleh laras untuk menyesuaikan diri dengan keadaan pasaran yang berbeza

Risiko Strategik

  1. Perdagangan yang kerap boleh menyebabkan kerugian dalam pasaran yang bergolak
  2. Kemunculan semula trend mungkin menyebabkan penurunan yang lebih besar
  3. Tetapan parameter yang tidak betul boleh menjejaskan prestasi strategi Cadangan kawalan risiko:
  • Disyorkan untuk digunakan di pasaran yang jelas
  • Parameter yang dipilih dengan berhati-hati, boleh dioptimumkan melalui pengesanan semula
  • Tetapkan had pengeluaran maksimum
  • Pertimbangkan untuk menambah syarat penapisan persekitaran pasaran

Arah pengoptimuman strategi

  1. Menambah mekanisme pengenalan keadaan pasaran, menggunakan parameter yang berbeza dalam keadaan pasaran yang berbeza
  2. Pengenalan penunjuk tambahan seperti jumlah trafik untuk meningkatkan kebolehpercayaan isyarat
  3. Mengoptimumkan mekanisme pengurusan keuntungan, menyesuaikan sasaran keuntungan mengikut kadar turun naik
  4. Menambah penapisan masa untuk mengelakkan dagangan pada masa yang tidak menguntungkan
  5. Pertimbangkan untuk memasukkan penapis kadar turun naik untuk mengurangkan kekerapan dagangan semasa turun naik berlebihan

ringkaskan

Ini adalah sistem penjejakan trend yang lengkap dan logik yang jelas. Dengan gabungan penjejakan dinamik ATR dan penapisan trend EMA, risiko dikendalikan dengan lebih baik sambil menangkap trend. Reka bentuk mekanisme keuntungan berpecah juga mencerminkan pemikiran perdagangan yang matang.

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