Sumber dimuat naik... memuat...

ATR-Based Multi-Trend Following Strategy dengan Sistem Pengoptimuman Take-Profit dan Stop-Loss

Penulis:ChaoZhang, Tarikh: 2024-11-12 16:14:11
Tag:ATRSMATP/SLOHLCMA

img

Ringkasan

Strategi ini adalah sistem dagangan trend-mengikuti berdasarkan indikator Average True Range (ATR), yang mengenal pasti trend pasaran melalui pengiraan dinamik julat turun naik harga dan menggabungkan mekanisme mengambil keuntungan dan berhenti-kerugian adaptif untuk pengurusan risiko. Strategi ini menggunakan pendekatan analisis pelbagai tempoh, menggunakan pengganda ATR untuk menyesuaikan pemicu isyarat perdagangan secara dinamik untuk penjejakan turun naik pasaran yang tepat.

Prinsip Strategi

Strategi teras adalah berdasarkan pengiraan ATR dinamik, menggunakan parameter tempoh (default 10) untuk mengira julat sebenar pasaran. Pengganda ATR (default 3.0) digunakan untuk membina saluran atas dan bawah, mencetuskan isyarat perdagangan apabila harga memecahkan saluran ini. Khususnya:

  1. Menggunakan SMA atau ATR standard untuk pengiraan garis asas turun naik
  2. Dinamis mengira saluran atas dan bawah sebagai rujukan trend berikut
  3. Menentukan arah trend melalui harga dan saluran silang
  4. Memicu isyarat dagangan pada titik pembalikan trend
  5. Melaksanakan sistem mengambil keuntungan dinamik berasaskan peratusan dan henti rugi

Kelebihan Strategi

  1. Kebolehsesuaian Tinggi: Sesuai secara dinamik dengan turun naik pasaran melalui ATR
  2. Risiko terkawal: Mekanisme mengambil keuntungan dan menghentikan kerugian berasaskan peratusan yang dibina secara berkesan mengawal risiko setiap dagangan
  3. Fleksibiliti Parameter: Parameter utama seperti tempoh ATR dan pengganda boleh diselaraskan berdasarkan ciri pasaran
  4. Kejelasan visual: Menyediakan antara muka grafik yang komprehensif termasuk penanda trend dan amaran isyarat
  5. Pengurusan Masa: Menyokong tetingkap masa dagangan tersuai, meningkatkan kebolehgunaan strategi

Risiko Strategi

  1. Risiko Pembalikan Trend: Boleh menghasilkan isyarat palsu yang kerap di pasaran yang berbeza
  2. Sensitiviti Parameter: Pilihan tempoh ATR dan pengganda mempunyai kesan yang ketara terhadap prestasi strategi
  3. Kebergantungan persekitaran pasaran: Mungkin mengalami pergeseran yang lebih besar semasa tempoh turun naik yang tinggi
  4. Tetapan Stop Loss: Hentian peratusan tetap mungkin tidak sesuai dengan semua keadaan pasaran

Arahan Pengoptimuman Strategi

  1. Memperkenalkan analisis jangka masa berbilang untuk meningkatkan ketepatan pengenalan trend
  2. Tambah pengesahan penunjuk jumlah untuk meningkatkan kebolehpercayaan isyarat
  3. Membangunkan mekanisme mengambil keuntungan dan menghentikan kerugian yang menyesuaikan secara dinamik dengan turun naik pasaran
  4. Sertakan penapis kekuatan trend untuk mengurangkan isyarat palsu
  5. Mengintegrasikan penunjuk turun naik untuk mengoptimumkan masa kemasukan

Ringkasan

Ini adalah strategi trend yang dirancang dengan baik yang mencapai penjejakan turun naik pasaran yang tepat melalui penunjuk ATR, digabungkan dengan mekanisme mengambil keuntungan dan menghentikan kerugian untuk pengurusan risiko. Kekuatan strategi terletak pada daya adaptasi dan risiko terkawal, walaupun kesan persekitaran pasaran terhadap prestasi strategi harus diperhatikan. Melalui arah pengoptimuman yang dicadangkan, kestabilan dan keuntungan strategi dapat ditingkatkan lagi.


/*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)


Berkaitan

Lebih lanjut