Strategi stop loss momentum ATR Z-score dikombinasikan dengan rasio risiko-pengembalian untuk mengoptimalkan sistem perdagangan

ATR RR MA
Tanggal Pembuatan: 2025-02-20 13:40:12 Akhirnya memodifikasi: 2025-02-27 17:41:05
menyalin: 1 Jumlah klik: 398
2
fokus pada
319
Pengikut

Strategi stop loss momentum ATR Z-score dikombinasikan dengan rasio risiko-pengembalian untuk mengoptimalkan sistem perdagangan Strategi stop loss momentum ATR Z-score dikombinasikan dengan rasio risiko-pengembalian untuk mengoptimalkan sistem perdagangan

Ringkasan

Strategi ini adalah sistem perdagangan lengkap yang menggabungkan beberapa indikator teknis, terutama berdasarkan skor Z untuk mengukur volume perdagangan dan ukuran entitas garis K yang tidak biasa, dan menggunakan ATR (Average True Range) untuk mengatur stop loss dinamis. Sistem ini juga mengintegrasikan RR (Risk-to-Rate) untuk mengoptimalkan target profit, memberikan sinyal perdagangan yang andal melalui analisis teknis multi-dimensi.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada komponen-komponen kunci berikut:

  1. Analisis Z-Score: menghitung standar deviasi volume transaksi dan entitas K-Line untuk mengidentifikasi aktivitas pasar yang tidak normal
  2. Konfirmasi tren: mengkonfirmasi arah tren dengan menganalisis titik tinggi dan rendah dan harga penutupan di garis K yang berdekatan
  3. Stop loss ATR: menggunakan nilai ATR yang dinamis untuk mengatur posisi stop loss, memberikan kontrol risiko yang lebih fleksibel
  4. RRR: target keuntungan yang dihitung secara otomatis berdasarkan RR yang ditetapkan
  5. Tag visual: menandai sinyal perdagangan dan tingkat harga kunci pada grafik

Keunggulan Strategis

  1. Konfirmasi sinyal multi-dimensi: menggabungkan volume, pergerakan harga, dan arah tren untuk meningkatkan keandalan sinyal perdagangan
  2. Manajemen Risiko Dinamis: Beradaptasi dengan Stop Loss, Beradaptasi dengan Lebih Baik dengan Fluktuasi Pasar melalui ATR
  3. Konfigurasi parameter yang fleksibel: memungkinkan penyesuaian nilai Z-score, ATR, dan RR
  4. Waktu Masuk yang Tepat: Menggunakan Z-Score untuk Mengidentifikasi Kesempatan Utama
  5. Visibilitas yang jelas: titik masuk, stop loss, dan target keuntungan ditandai dengan jelas pada grafik

Risiko Strategis

  1. Sensitivitas parameter: Pengaturan Z-score threshold dan ATR multiplier secara langsung mempengaruhi frekuensi perdagangan dan pengendalian risiko
  2. Ketergantungan pada lingkungan pasar: sinyal perdagangan yang lebih sedikit dapat dihasilkan dalam lingkungan dengan volatilitas rendah
  3. Kompleksitas perhitungan: perhitungan indikator ganda dapat menyebabkan keterlambatan dalam pembuatan sinyal
  4. Risiko slippage: kemungkinan adanya penyimpangan antara harga pelaksanaan aktual dan harga sinyal dalam pasar cepat
  5. Risiko terobosan palsu: sinyal terobosan yang mungkin memicu kesalahan dalam pasar yang terintegrasi

Arah optimasi strategi

  1. Filter lingkungan pasar: Tambahkan filter volatilitas pasar, menyesuaikan parameter secara dinamis dalam lingkungan pasar yang berbeda
  2. Mekanisme konfirmasi sinyal: memperkenalkan lebih banyak indikator teknis untuk verifikasi silang, seperti RSI atau MACD
  3. Optimalisasi manajemen posisi: melakukan penyesuaian posisi secara dinamis berdasarkan volatilitas dan risiko akun
  4. Analisis siklus waktu ganda: mengkonfirmasi tren untuk mengintegrasikan siklus waktu yang lebih tinggi, meningkatkan tingkat keberhasilan transaksi
  5. Optimasi pemfilteran sinyal: menambahkan kondisi pemfilteran tambahan untuk mengurangi sinyal palsu

Meringkaskan

Strategi ini membangun sistem perdagangan yang lengkap dengan kombinasi analisis skor Z, pengoptimalan stop loss ATR dan rasio keuntungan risiko. Keunggulan sistem adalah pengakuan sinyal multi-dimensi dan manajemen risiko yang fleksibel, tetapi tetap memperhatikan pengaturan parameter dan pengaruh lingkungan pasar. Dengan arah optimasi yang disarankan, strategi dapat meningkatkan stabilitas dan adaptasi lebih lanjut.

Kode Sumber Strategi
/*backtest
start: 2024-10-01 00:00:00
end: 2025-02-18 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("admbrk | Candle Color & Price Alarm with ATR Stop", overlay=true, initial_capital=50, default_qty_type=strategy.cash, default_qty_value=200, commission_type=strategy.commission.percent, commission_value=0.05, pyramiding=3)

// **Risk/Reward ratio (RR) as input**
rr = input.float(2.0, title="Risk/Reward Ratio (RR)", step=0.1)

// **Z-score calculation function**
f_zscore(src, len) =>
    mean = ta.sma(src, len)     
    std = ta.stdev(src, len)
    (src - mean) / std

// **Z-score calculations**
len = input(20, "Z-Score MA Length")
z1 = input.float(1.5, "Threshold z1", step=0.1)
z2 = input.float(2.5, "Threshold z2", step=0.1)

z_volume = f_zscore(volume, len)
z_body = f_zscore(math.abs(close - open), len)

i_src = input.string("Volume", title="Source", options=["Volume", "Body size", "Any", "All"])

float z = na
if i_src == "Volume"
    z := z_volume
else if i_src == "Body size"
    z := z_body
else if i_src == "Any"
    z := math.max(z_volume, z_body)
else if i_src == "All"
    z := math.min(z_volume, z_body)

// **Determine trend direction**
green = close >= open
red = close < open

// **Long and Short signals**
longSignal = barstate.isconfirmed and red[1] and low < low[1] and green
shortSignal = barstate.isconfirmed and green[1] and high > high[1] and red

long = longSignal and (z >= z1)
short = shortSignal and (z >= z1)

// **ATR calculation (for ATR Stop)**
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Stop Multiplier")
atrValue = ta.atr(atrLength)

// **ATR-based stop-loss calculation**
long_atr_stop = close - atrValue * atrMultiplier
short_atr_stop = close + atrValue * atrMultiplier

// **Stop-loss setting (set to the lowest/highest wick of the last two bars)**
long_sl = ta.lowest(low, 2)  // Long stop-loss (lowest of the last 2 bars)
short_sl = ta.highest(high, 2) // Short stop-loss (highest of the last 2 bars)

// **Take-profit calculation (with RR)**
long_tp = close + (close - long_sl) * rr
short_tp = close - (short_sl - close) * rr

triggerAlarm(symbol)=>
    status = close
    var string message = na
    alarmMessageJSON = syminfo.ticker + message +"\\n" + "Price: " + str.tostring(status) 
    
if long
    // Open Long position
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", from_entry="Long", stop=math.max(long_sl, long_atr_stop), limit=long_tp)
    

if short
    // Open Short position
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", from_entry="Short", stop=math.min(short_sl, short_atr_stop), limit=short_tp)
    

// **Coloring the candles (BUY = Green, SELL = Red)**
barcolor(long ? color.green : short ? color.red : na)

// **Add entry/exit markers on the chart**
plotshape(long, title="BUY Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="BUY")
plotshape(short, title="SELL Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="SELL")

// **Plot TP and SL markers on exits**
exitLong = strategy.position_size < strategy.position_size[1] and strategy.position_size[1] > 0
exitShort = strategy.position_size > strategy.position_size[1] and strategy.position_size[1] < 0

plotshape(exitLong, title="Long Exit", location=location.abovebar, color=color.blue, style=shape.labeldown, size=size.tiny, text="TP/SL")
plotshape(exitShort, title="Short Exit", location=location.belowbar, color=color.orange, style=shape.labelup, size=size.tiny, text="TP/SL")

// **Add alerts**
alertcondition(long, title="Long Signal", message="Long signal triggered!")
alertcondition(short, title="Short Signal", message="Short signal triggered!")