Berbagai strategi pelacakan tren dan sistem pengoptimalan stop-profit dan stop-loss berdasarkan ATR

ATR SMA TP/SL OHLC MA
Tanggal Pembuatan: 2024-11-12 16:14:11 Akhirnya memodifikasi: 2024-11-12 16:14:11
menyalin: 5 Jumlah klik: 518
1
fokus pada
1617
Pengikut

Berbagai strategi pelacakan tren dan sistem pengoptimalan stop-profit dan stop-loss berdasarkan ATR

Ringkasan

Strategi ini adalah sistem perdagangan pelacakan tren berdasarkan indikator rata-rata true amplitude (ATR) untuk mengidentifikasi tren pasar dengan menghitung rentang fluktuasi harga secara dinamis, dan untuk manajemen risiko dengan mekanisme stop-loss yang disesuaikan. Strategi ini menggunakan metode analisis multi-siklus untuk menyesuaikan kondisi pemicu sinyal perdagangan secara dinamis melalui perkalian ATR untuk melacak pergerakan pasar secara akurat.

Prinsip Strategi

Inti dari strategi ini didasarkan pada perhitungan dinamis dari indikator ATR, dengan parameter siklus yang ditetapkan (default 10 period) untuk menghitung gelombang pasar yang sebenarnya. Dengan menggunakan ATR multiplier (default 3.0) untuk membangun garis orbit atas dan bawah, untuk memicu sinyal perdagangan ketika harga menembus garis orbit.

  1. Menggunakan SMA atau ATR standar untuk menghitung bandwidth benchmark
  2. Perhitungan dinamis atas dan bawah garis orbit sebagai trend tracking benchmark
  3. Menentukan arah tren melalui persimpangan garis harga dan orbit
  4. Trigger sinyal perdagangan pada titik konversi tren
  5. Implementasi sistem stop-loss dinamis berbasis persentase

Keunggulan Strategis

  1. Adaptif: bereaksi terhadap fluktuasi pasar melalui ATR
  2. Risiko terkontrol: Sistem Stop Loss Persentase terintegrasi untuk mengontrol risiko setiap transaksi
  3. Fleksibilitas parameter: parameter penting seperti siklus ATR, perkalian dan lain-lain dapat disesuaikan dengan karakteristik pasar
  4. Kejelasan visual: memberikan antarmuka grafis yang sempurna, termasuk penanda tren dan sinyal petunjuk
  5. Manajemen waktu: mendukung jendela waktu perdagangan khusus untuk meningkatkan kelayakan strategi

Risiko Strategis

  1. Risiko terbaliknya tren: sinyal palsu yang sering muncul di pasar yang bergoyang
  2. Sensitivitas parameter: Periode ATR dan pilihan perkalian memiliki pengaruh besar terhadap kinerja strategi
  3. Ketergantungan pada kondisi pasar: kemungkinan terjadinya slippage yang lebih besar selama periode fluktuasi tinggi
  4. Pengaturan Stop Loss: Stop loss persentase tetap mungkin tidak cocok untuk semua kondisi pasar

Arah optimasi strategi

  1. Memperkenalkan analisis multi-frame waktu untuk meningkatkan akurasi penilaian tren
  2. Menambahkan konfirmasi volume transaksi, meningkatkan keandalan sinyal
  3. Mengembangkan mekanisme stop loss yang dapat disesuaikan dengan dinamika pasar yang bergejolak
  4. Meningkatkan intensitas filter tren untuk mengurangi sinyal palsu
  5. Optimalkan waktu masuk dengan indikator volatilitas

Meringkaskan

Ini adalah strategi pelacakan tren yang dirancang dengan baik, memungkinkan pelacakan yang akurat terhadap fluktuasi pasar melalui indikator ATR, dan dikombinasikan dengan mekanisme stop loss untuk manajemen risiko. Keuntungan dari strategi ini adalah kemampuan beradaptasi yang kuat, risiko dapat dikontrol, tetapi masih perlu memperhatikan pengaruh lingkungan pasar terhadap kinerja strategi. Dengan arah optimasi yang disarankan, stabilitas dan profitabilitas strategi diharapkan dapat ditingkatkan lebih lanjut.

Kode Sumber Strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Custom Buy BID Strategy", overlay=true, shorttitle="Buy BID by MR.STOCKVN")

// Cài đặt chỉ báo
Periods = input.int(title="ATR Period", defval=10)
src = input.source(hl2, title="Source")
Multiplier = input.float(title="ATR Multiplier", step=0.1, defval=3.0)
changeATR = input.bool(title="Change ATR Calculation Method?", defval=true)
showsignals = input.bool(title="Show Buy Signals?", defval=false)
highlighting = input.bool(title="Highlighter On/Off?", defval=true)
barcoloring = input.bool(title="Bar Coloring On/Off?", defval=true)

// Tính toán ATR
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2

// Tính toán mức giá mua bán dựa trên ATR
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up

dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Vẽ xu hướng
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_line, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1

// Hiển thị tín hiệu mua
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)

// Cài đặt màu cho thanh nến
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)

// Điều kiện thời gian giao dịch
FromMonth = input.int(defval=9, title="From Month", minval=1, maxval=12)
FromDay = input.int(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input.int(defval=2018, title="From Year", minval=999)
ToMonth = input.int(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input.int(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input.int(defval=9999, title="To Year", minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)

// Cửa sổ thời gian giao dịch
window() => (time >= start and time <= finish)

// Điều kiện vào lệnh Buy
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when=window())

// Điều kiện chốt lời và cắt lỗ có thể điều chỉnh
takeProfitPercent = input.float(5, title="Take Profit (%)") / 100
stopLossPercent = input.float(2, title="Stop Loss (%)") / 100

// Tính toán giá trị chốt lời và cắt lỗ dựa trên giá vào lệnh
if (strategy.position_size > 0)
    strategy.exit("Take Profit", "BUY", limit=strategy.position_avg_price * (1 + takeProfitPercent), stop=strategy.position_avg_price * (1 - stopLossPercent))

// Màu nến theo xu hướng
buy1 = ta.barssince(buySignal)
color1 = buy1[1] < na ? color.green : na
barcolor(barcoloring ? color1 : na)