Strategi kombinasi trailing stop loss ATR dinamis dan crossover moving average

EMA ATR RSI SMA VOLUME
Tanggal Pembuatan: 2025-02-18 15:48:18 Akhirnya memodifikasi: 2025-02-18 15:48:18
menyalin: 1 Jumlah klik: 504
1
fokus pada
1617
Pengikut

Strategi kombinasi trailing stop loss ATR dinamis dan crossover moving average

Ringkasan

Strategi ini adalah sistem perdagangan kompleks yang didasarkan pada ATR yang melacak stop loss dan crossover yang dinamis, yang menggabungkan beberapa indikator teknis untuk memfilter perdagangan dan mengendalikan risiko. Strategi ini berjalan pada periode waktu 15 menit, untuk menentukan sinyal perdagangan melalui indikator multi-dimensi seperti EMA, rata-rata, ATR, RSI, dan volume transaksi, dan untuk mengelola risiko kerugian dengan cara pelacakan dinamis.

Prinsip Strategi

Logika inti dari strategi ini terdiri dari beberapa komponen utama:

  1. Syarat masuk menggunakan mekanisme pemfilteran ganda:
    • Harga berada di atas/bawah 100 siklus EMA
    • Periode 1 jam 100 EMA tren dikonfirmasi
    • Harga dan ATR mengikuti garis stop loss
    • RSI berada di zona net antara 30-70
    • Volume transaksi saat ini lebih besar dari rata-rata 20 siklus
  2. Sistem pengendalian risiko:
    • Tracking Stop Loss Berbasis 3x ATR
    • Menetapkan ATR dua kali lipat sebagai target keuntungan
  3. Mekanisme Keluar:
    • 15 dan 17 siklus EMA sinyal silang dari dua garis K berturut-turut
    • Memicu pelacakan stop loss atau target profit

Keunggulan Strategis

  1. Verifikasi silang berbagai indikator teknis untuk mengurangi sinyal palsu
  2. Filter tren multi-siklus untuk meningkatkan akurasi arah perdagangan
  3. Stop loss ATR dinamis dapat disesuaikan dengan fluktuasi pasar
  4. Target profit terikat dengan stop loss, memastikan keseimbangan dinamis antara risiko dan reward
  5. Menggunakan EMA Cross sebagai sinyal untuk menghindari keberangkatan awal
  6. Konfirmasi transaksi meningkatkan efektivitas transaksi

Risiko Strategis

  1. Beberapa kondisi penyaringan dapat menyebabkan kehilangan beberapa peluang perdagangan.
  2. Stop loss ATR mungkin terlalu lebar di pasar yang sangat bergejolak
  3. Pertandingan silang EMA berturut-turut dapat menyebabkan sebagian keuntungan kembali
  4. Tergantung pada tren pasar, pasar yang bergolak mungkin kurang baik
  5. Kompleksitas perhitungan yang tinggi, mungkin ada risiko penundaan pelaksanaan

Arah optimasi strategi

  1. Menggunakan mekanisme optimasi parameter adaptasi:
    • ATR dapat disesuaikan dengan dinamika pasar yang berbeda
    • Siklus EMA dapat dioptimalkan secara otomatis berdasarkan volatilitas pasar
  2. Meningkatkan identifikasi status pasar:
    • Menambahkan indikator kekuatan tren
    • Pengertian Periode Volatilitas
  3. Meningkatkan pengendalian risiko:
    • Mencapai pembangunan dan pengurangan gudang secara batch
    • Peningkatan batas waktu maksimum
  4. Optimalkan mekanisme penarikan:
    • Perubahan target laba yang dinamis seiring dengan intensitas tren
    • Menambahkan mekanisme stop loss

Meringkaskan

Strategi ini membangun sistem perdagangan yang relatif lengkap dengan menggunakan beberapa indikator teknis dan alat pengendalian risiko secara komprehensif. Karakteristik utama strategi ini adalah penggunaan stop loss pelacakan ATR dinamis untuk beradaptasi dengan fluktuasi pasar, sementara menggunakan filter indikator ganda dan persilangan linear untuk mengkonfirmasi sinyal perdagangan. Meskipun ada ruang untuk optimasi tertentu, konsep desain keseluruhan memenuhi persyaratan perdagangan kuantitatif modern dan memiliki nilai aplikasi praktis yang baik.

Kode Sumber Strategi
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='UT Bot Strategy with 100 EMA Filter, Trailing Stop and EMA Cross Exit', overlay=true)

// Inputs
a = input(1, title='Key Value. \'This changes the sensitivity\'')
c = input(10, title='ATR Period')
h = input(false, title='Signals from Heikin Ashi Candles')

// Higher timeframe trend filter (1-hour)
higherTimeframeEMA = request.security(syminfo.tickerid, "60", ta.ema(close, 100)) // 1-hour EMA

xATR = ta.atr(c)

// Adjusting ATR multiplier for Gold on 15-minute timeframe
atrMultiplier = 3
nLoss = atrMultiplier * xATR  // ATR-based loss calculation

src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close

// Trailing Stop Calculation
xATRTrailingStop = 0.0
iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1
xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2

pos = 0
iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3

xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue

// Define 100 EMA
ema100 = ta.ema(src, 100)
plot(ema100, title="100 EMA", color=color.black, linewidth=2)

// Define 15 EMA and 17 EMA for exit conditions
ema15 = ta.ema(src, 15)
ema17 = ta.ema(src, 17)
plot(ema15, title="15 EMA", color=color.blue, linewidth=1)
plot(ema17, title="17 EMA", color=color.purple, linewidth=1)

// Define Entry Conditions
longCondition = src > ema100 and src > xATRTrailingStop and close > higherTimeframeEMA and ta.crossover(ta.ema(src, 1), xATRTrailingStop)
shortCondition = src < ema100 and src < xATRTrailingStop and close < higherTimeframeEMA and ta.crossover(xATRTrailingStop, ta.ema(src, 1))

// RSI Filter
rsi = ta.rsi(close, 14)
longCondition := longCondition and rsi > 30 and rsi < 70  // Ensure RSI is not in extreme conditions
shortCondition := shortCondition and rsi > 30 and rsi < 70

// Volume Filter
volumeMA = ta.sma(volume, 20)
longCondition := longCondition and volume > volumeMA
shortCondition := shortCondition and volume > volumeMA

// ** Trailing Stop Setup **
trailOffset = nLoss  // The trailing stop distance is based on ATR, which is already calculated
trailPriceLong = close - trailOffset  // The trailing stop for long trades is below the entry price
trailPriceShort = close + trailOffset  // The trailing stop for short trades is above the entry price

// Define Take Profit (TP) condition
takeProfitMultiplier = 2  // This sets the take profit at 2x the ATR from the entry
takeProfitLong = close + takeProfitMultiplier * nLoss
takeProfitShort = close - takeProfitMultiplier * nLoss

// Strategy Entries
if (longCondition)
    strategy.entry('long', strategy.long)

if (shortCondition)
    strategy.entry('short', strategy.short)

// Exit conditions for 15 and 17 EMA cross (must be consecutive on two bars)
exitLong = ta.crossover(ema15, ema17) and ta.crossover(ema15[1], ema17[1])  // Exit long if both the current and previous bars have 15 EMA crossing above 17 EMA
exitShort = ta.crossunder(ema15, ema17) and ta.crossunder(ema15[1], ema17[1])  // Exit short if both the current and previous bars have 15 EMA crossing below 17 EMA

// Apply trailing stop and take profit along with EMA cross exit
strategy.exit("Exit Long", "long", trail_price=trailPriceLong, trail_offset=trailOffset, limit=takeProfitLong)  // Long exit with trailing stop and TP
strategy.exit("Exit Short", "short", trail_price=trailPriceShort, trail_offset=trailOffset, limit=takeProfitShort)  // Short exit with trailing stop and TP

// Close positions when 15 and 17 EMAs cross consecutively
strategy.close("long", when=exitLong)
strategy.close("short", when=exitShort)

// Alert condition for trade closure
longExitAlert = exitLong  // Only trigger alert for long if both consecutive bars show crossover
shortExitAlert = exitShort  // Only trigger alert for short if both consecutive bars show crossunder

alertcondition(longExitAlert, title="Close Long Trade", message="Long trade closed. 15 EMA crossed above 17 EMA on two consecutive bars.")
alertcondition(shortExitAlert, title="Close Short Trade", message="Short trade closed. 15 EMA crossed below 17 EMA on two consecutive bars.")